1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128
|
<!doctype linuxdoc system>
<linuxdoc>
<!--
************************** begin commentaar *****************************
Hierna volgt de HOW-TO voor het instellen van de VIM-editor.
Dit document staat in het SGML-formaat. Om dit document te
verwerken moet je het sgml-package gebruiken.
************************* einde commentaar ******************************
-->
<!--
************************** SGML USER GUIDE *****************************
De gebruikersgids voor SGML staat onder Linux in /usr/doc/sgml-tools
Lees de example.sgml en guide.html documenten.
Gebruik:
HTML sgml2html foo (Geef hier de extensie .sgml niet op!!)
Text sgml2txt foo.sgml
Latex sgml2latex foo.sgml
Postscript sgml2latex -language=english -o ps foo.sgml
DVI sgml2latex -d foo.sgml
Lyx sgml2lyx foo.sgml
Richtext sgml2rtf foo.sgml
gnuinfo sgml2info foo.sgml
man sgml2txt -man foo.sgml
SGML sgmlcheck foo.sgml
************************* einde commentaar *****************************
-->
<article>
<!-- Titel informatie -->
<titlepag>
<title>Vim Color Editor HOW-TO (Vi Improved met syntax color highlighting)
</title>
<!-- chapt change
Vim Color Editor HOW-TO
Vi Improved met syntax color highlighting
-->
<author><name>Al Dev (Alavoor Vasudevan) <htmlurl url="mailto:alavoor@yahoo.com"
name="alavoor@yahoo.com"><newline>
Vertaald door: Ellen Bokhorst <htmlurl url="mailto:bokkie@nl.linux.org"
name="bokkie@nl.linux.org"></name></author>
<date>v5.0, 04 maart 2000</date>
<abstract>
Dit document is een leidraad voor het snel instellen van de Vim-kleuren
editor onder Linux- of Unix-systemen. De informatie hierin zal de
productiviteit van een programmeur verhogen aangezien de Vim-editor
ondersteuning biedt voor syntax color highlighting en bold fonts die de
"leesbaarheid" van programmeercode verbetert. De productiviteit van
programmeurs wordt met 2 tot 3 keer verbeterd door gebruik te maken van
een kleureneditor zoals Vim. De informatie in dit document geldt voor alle
besturingssystemen waaronder Vim werkt, dat zijn - Windows 95/NT en alle
soorten Unix zoals Linux, Solaris, HPUX, AIX, SCO, Sinix, BSD, SCO, enz..
</abstract>
</titlepag>
<toc>
<sect><heading>Introductie</heading>
<p>
Vim editor staat voor 'Vi IMproved'. Vi is de populairste en krachtigste
editor in de Unix-wereld. De <bf>Vi</bf> is een afkorting voor
"<it><bf>Vi</bf></it>sueel" editor. Vroeger was de eerste editor
op deze planeet een regeleditor genaamd 'ed' (en 'ex'). De
<it><bf>Vi</bf></it>suele editor zoals Vi was een reusachtige verbetering
in vergelijking met regeleditors als 'ed' (of 'ex'). De editors 'ed' en
'ex' zijn nog steeds beschikbaar onder Linux, zie 'man ed' en 'man ex'.
</p>
<p>
Een goede editor zal de productiviteit van de
programmeur verbeteren. Vim biedt ondersteuning voor color syntax
highlighting van programma-code en tevens benadrukking door gebruik te
maken van verschillende fonts als normaal, vet of cursief.
Een kleureneditor als Vim zal de <bf>productiviteit</bf> bij het programmeren
met een factor 2 tot 3 verhogen!! Programmeurs kunnen de code veel sneller
lezen aangezien de syntax van de code in kleur en opgelicht wordt weergegeven.
</p>
<sect1><heading>Installatie van Vim onder Redhat Linux</heading>
<p>
Installeer de volgende RPM-packages om Vim onder Redhat Linux te installeren -
<code>
rpm -i vim*.rpm
OF gebruik dit -
rpm -i vim-enhanced*.rpm
rpm -i vim-X11*.rpm
rpm -i vim-common*.rpm
rpm -i vim-minimal*.rpm
</code>
Je kan een lijst te zien krijgen van de bestanden die het rpm-package van
vim installeert met -
<code>
rpm -qa | grep ^vim | awk '{print "rpm -ql " $1 }' | /bin/sh | less
</code>
en hier doorheen bladeren met j,k, CTRL+f, CTRL+D, CTRL+B, CTRL+U of door
gebruik te maken van de pijltjestoetsen, page up/down toetsen.
Zie 'man less'.
</p>
</sect1>
<sect1><heading>Installatie van Vim onder GNU Debian Linux</heading>
<p>
Voor de installatie van Vim onder Debian Linux (GNU Linux) log je in als
root en wanneer je bent verbonden met het internet type je:
<code>
apt-get install vim vim-rt
</code>
</p>
<p>
Hiermee zal de laatste versie van vim worden gedownload, geïnstalleerd
en geconfigureerd en zal het 't .deb bestand dat werd gedowload, worden
verwijderd. Het eerst opgesomde package is vim, de standaard editor,
gecompileerd met X11-ondersteuning, vim-rt is de vim runtime, het bevat
alle syntax- en helpbestanden.
</p>
</sect1>
<sect1><heading>Vim onder diverse Unix-en installeren</heading>
<p>
Download voor andere varianten van unix, zoals Solaris, HPUX, AIX, Sinix,
SCO het broncode bestand
<code>
zcat vim.tar.gz | tar -xvf -
cd vim-5.5/src
./configure --enable-gui=motif
make
make install
</code>
</p>
</sect1>
<sect1><heading>Vim installeren onder Microsoft Windows 95/NT</heading>
<p>
Voor Windows 95/NT moet je <bf>TWEE</bf> zip-bestanden downloaden.
<itemize>
<item> Runtime ondersteuningsbestand <bf>vim*rt.zip</bf></item>
<item> Vim opdrachtenbestand <bf>vim*56.zip</bf>. Hier is de Vim-versie 5.6
</item>
</itemize>
Haald deze twee zipbestanden op vanaf -
<itemize>
<item> De homepage van vim: <url url="http://www.vim.org"></item>
<item> Een mirror site in US: <url url="http://www.us.vim.org"></item>
</itemize>
Pak de zip-bestanden uit met behulp van Winzip <url url="http://www.winzip.com">. Beide zip-bestanden (vim*rt.zip en vim*56.zip) moeten in dezelfde directory,
bv in <bf>c:\vim</bf> worden uitgepakt.
Stel de omgeving VIM in in autoexec.bat en plaats daarin deze regel -
<code>
set VIM=c:\vim\vim56
</code>
Vim zou daarnaar moeten verwijzen daar waar je de vim56 directory installeerde.
Je kunt je PATH ook zo instellen dat het pad naar gvim.exe erin voorkomt.
Mogelijk moet je uitloggen en weer inloggen om je omgeving in te stellen.
Typ achter de MS-DOS prompt -
<code>
set vim
</code>
En je zou moeten zien: VIM=c:\vim\vim56
Maakt een snelkoppeling aan op je desktop door te klikken en slepen
vanuit c:\vim\vim56\gvim.exe. Kopieer het bestand gvimrc_example naar
$VIM\_gvimrc. In mijn geval is dit c:\vim\vim56\_gvimrc.
</p>
</sect1>
</sect>
<sect><heading>Stel de init-bestanden van gvim in</heading>
<p>
Je MOET het bestand gvimrc naar je homedirectory kopiëren om
de syntax color highlighting te activeren.
Hierdoor zal ook het "Syntax" Menu met de gvim-opdracht worden geplaatst.
Je kunt op het Syntax-Menu klikken en de van toepassing zijnde talen
selecteren, zoals C++, Perl, Java, SQL, ESQL enz..
<CODE>
cd $HOME
cp /usr/doc/vim-common-5.3/gvimrc_example ~/.gvimrc
</CODE>
Commentaarregels beginnen in .gvimrc met dubbele aanhalingstekens (").
Je kunt gvim aanpassen door het wijzigen van het bestand $HOME/.gvimrc
en daar de volgende regels in plaatsen -
<CODE>
"Deze regel is commentaar .... één die met dubbele aanhalingstekens begint
" Het beste is het bold-font, probeer ze allemaal en kies er één uit....
set guifont=9x15bold
"set guifont=8x13bold
"set guifont=7x14bold
"set guifont=7x13bold
"
"Beslist aan te raden de tabtoetsen op 4 in te stellen.
set tabstop=4
set shiftwidth=4
"Het tegengestelde is 'set wrapscan' bij het zoeken naar strings....
set nowrapscan
"
"Het tegengestelde is noignorecase
set ignorecase
</CODE>
Het word je <bf>ten zeerste</bf> aanbevolen de tabstop en shiftwidth op
4 in te stellen.
De tabstop is het aantal spaties dat door TAB zal worden geplaatst als je
met gvim aan het werken bent. De shiftwidth is het aantal spaties waarmee
de regels zullen worden verschoven bij gebruik van de ">>" of "<<" opdrachten
van vi. Raadpleeg de tutorials van Vi <ref id="Vim Tutorial"> voor meer details.
Zie de opdracht <bf>xlsfonts</bf> voor een lijst met beschikbare fonts
onder Linux/Unix. Typ
<code>
bash$ xlsfonts | less
bash$ xlsfonts | grep -i bold | grep x
bash$ man xlsfonts
</code>
</p>
<sect1><heading>Voorbeeld gvimrc bestand</heading>
<p>
Je kunt de instellingen, zoals kleuren, bold/normale fonts in het $HOME/.gvimrc
bestand wijzigen.
Het wordt <bf>ten zeerste</bf> aanbevolen dat je de achtergrondkleur
op <tt>lichtgeel</tt> of <tt>wit</tt> met een <tt>zwarte</tt> voorgrond
instelt. Ergonomen zeggen dat de beste achtergrondkleur
<tt>lichtgeel</tt> of <tt>wit</tt> met een zwarte voorgrond is. Wijzig
daarom als volgt de variabele 'guibg':
<code>
highlight Normal guibg=lightyellow
</code>
Het voorbeeld gvimrc vanuit /usr/doc/vim-common-5.3/gvimrc_example luidt
als volgt (vertaalde versie):
<code>
" Vim
" Een voorbeeld gvimrc bestand.
" De opdrachten hierin worden uitgevoerd wanneer de GUI wordt opgestart.
"
" Kopieer het voor gebruik naar
" voor Unix en OS/2: ~/.gvimrc
" voor Amiga: s:.gvimrc
" voor MS-DOS en Win32: $VIM\_gvimrc
" Zorg dat externe opdrachten via een pipe in plaats van een pseudo-tty werken
"set noguipty
" stel het te gebruiken X11-font in. Zie onder unix/linux 'man xlsfonts'.
" set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1
set guifont=8x13bold
"set guifont=9x15bold
"set guifont=7x14bold
"set guifont=7x13bold
"
"Beslist aan te raden de tabtoetsen op 4 in te stellen.
set tabstop=4
set shiftwidth=4
"Het tegengestelde is 'set wrapscan' bij het zoeken naar strings....
set nowrapscan
"
"Het tegengestelde is noignorecase
set ignorecase
" Stel de opdrachtregel in op 2 regels
set ch=2
" shift-insert werkt net als in Xterm
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>
" Doe dit alleen voor Vim versie 5.0 en later.
if version >= 500
" Ik vind 't prettig als strings in C commentaar wordt opgelicht
let c_comment_strings=1
" Schakel syntax highlighting in.
syntax on
" Schakel zoekpatroon highlighting in.
set hlsearch
" Voor Win32 versie, "K" zoekt het sleutelwoord in een helpbestand
"if has("win32")
" let winhelpfile='windows.hlp'
" map K :execute "!start winhlp32 -k <cword> " . winhelpfile <CR>
"endif
" Verberg de muisaanwijzer tijdens het typen
set mousehide
" Stel fraaie kleuren in
" achtergrond voor normale tekst is lichtgrijs
" Tekst onder de laatste regel is donkergrijs
" Cursor is groen
" Constanten worden niet onderstreept maar hebben een iets lichtere achtergrond
highlight Normal guibg=grey90
highlight Cursor guibg=Green guifg=NONE
highlight NonText guibg=grey80
highlight Constant gui=NONE guibg=grey95
highlight Special gui=NONE guibg=grey95
endif
</code>
Zie ook het voorbeelbestand vimrc in /usr/doc/vim-common-5.3/vimrc_example dat
voor onder de console wordt gebruikt
</p>
</sect1>
<sect1><heading>Xdefaults parameters</heading>
<p>
Je kunt een aantal eigenschappen van Vim in het bestand Xdefaults plaatsen.
<bf> WAARSCHUWING!! WAARSCHUWING: </bf>Plaats hierin niet de
<bf>Vim*geometry</bf>; het zal het menu van gvim opbreken, gebruik hier
voor in de plaats <bf>Vim.geometry</bf>.
Wijzig het bestand $HOME/.Xdefaults en plaats hierin de volgende regels:
<CODE>
! GVim great Colors.
Vim*useSchemes: all
Vim*sgiMode: true
Vim*useEnhancedFSB: true
Vim.foreground: Black
!Vim.background: lightyellow2
Vim*background: white
! Gebruik GEEN Vim*geometry, dit zal de menu's opbreken, gebruik in plaats
! daarvan Vim.geometry. Een asteriks tussen Vim en geometry is niet toegestaan.
! Vim.geometry: widthxheight
Vim.geometry: 88x40
!Vim*font: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-15-*5
Vim*menuBackground: yellow
Vim*menuForeground: black
</code>
Dit heeft effect na het intikken van -
<code>
xrdb -merge $HOME/.Xdefaults
man xrdb
</code>
Je kunt ook het bestand ˜/.gvimrc wijzigen om de achtergrondkleuren te veranderen.
<code>
gvim $HOME/.gvimrc
De beste achtergrondkleur is lichtgeel of wit.
highlight Normal guibg=lightyellow
</code>
</p>
</sect1>
</sect>
<sect><heading>Kleuren Syntax init bestanden</heading>
<p>
In plaats van gebruik te maken van het "Syntax" menu kun je
het syntax-bestand ook handmatig bewerken.
Wijzig het bestand met gvim
en achter de : (dubbele punt) opdracht geef je de 'so' opdracht. Bijvoorbeeld -
<CODE>
gvim foo.pc
:so $VIM/syntax/esqlc.vim
</CODE>
De syntax source-bestanden staan in /usr/share/vim/syntax/*.vim.
Vim ondersteunt meer dan 120 verschillende syntax-bestanden voor verschillende
talen zoals C++, PERL, VHDL, Javascript,... enzovoort!!
Ieder syntaxbestand ondersteunt een standaardnaam voor de bestandsextensie,
het syntaxbestand voor Javascript bijvoorbeeld, ondersteunt de extensie *.js.
Mocht het je gebeuren dat je een andere extensie gebruikt die een conflict
veroorzaakt met een ander standaard syntaxbestand zoals bij het plaatsen
van Javascript in een *.html bestand, dan MOET je de opdracht
:so $VIM/syntax/javascript.vim gebruiken. De beste methode is een softlink
aan te maken zoals
<code>
ln -s $VIM/syntax/javascript.vim js
gvim foo.html (... dit bestand bevat javascript functies en HTML)
:so js
</code>
</p>
</sect>
<sect><heading>VIM Gebruik</heading>
<p>
Je kunt Vim in twee modi gebruiken - één met GUI en
de andere zonder GUI. Om de GUI te gebruiken geef je de volgende opdracht -
<code>
gvim foo.cpp
</code>
Om de niet-gui modus te gebruiken tik je in -
<code>
vim foo.cpp
OF plain vanilla modus
vi foo.cpp
</code>
Het is ten zeerste aan te raden dat je altijd gebruik maakt van gvim
in plaats van vim, aangezien de GUI mode met kleuren je productiviteit
beslist zal verbeteren.
De GUI mode voorziet in het volgende -
<itemize>
<item> Je kunt de tekst met de muis markeren om te knippen, kopiëren,
en plakken.</item>
<item> Je kunt de Menubalk met de File, Edit, Window, Tools, Syntax en
Help knoppen items gebruiken.</item>
<item> In de nabije toekomst van gvim zal een tweede menubalk de lijst
met de te wijzigen bestanden tonen, en kun je tussen bestanden schakelen
door op de bestandsnamen te klikken, tot dan kun je gebruik maken van de
vi-opdrachten -:e#, :e#1, :e#3, :#4, ...enzovoort om de bestanden te
selecteren.</item>
</itemize>
</p>
</sect>
<sect><heading>Vi bondgenoten</heading>
<p>
In het algemeen wordt Vim in samenwerking met andere krachtige tools zoals
<bf>ctags</bf> en <bf>gdb</bf> gebruikt. De <bf>ctags</bf> is voor zeer
snelle navigatie door miljoenen regels "C/C++" code en <bf>gdb</bf>
voor het debuggen van de "C/C++" code. Een beknopte introductie van deze
twee onmisbare opdrachten zal in dit hoofdstuk worden gegeven.
</p>
<p>
De <bf>ctags</bf> is de krachtigste beschikbare opdracht voor het coderen
in C, C++, Java, Perl, Korn/Bourne shell scripts of Fortran. Ontwikkelaars
gebruiken <bf>ctags</bf> zeer uitgebreid om "naar en vanuit" duizende functies
C/C++ programma's te navigeren. Zie onder Unix 'man ctags'. Het is
<bf>zeer belangrijk</bf> dat je MOET leren hoe deze ctags te gebruiken om
programma's in C of C++, Java, enz.. te ontwikkelen. Navigatie is de
belangrijkste taak tijdens het ontwikkelen in C of C++ code. Met behulp van
ctags kun je de code zeer snel lezen door te springen van de aanroepende
regel naar de functie en dieper in geneste functie-aanroepen gaan en naar
het begin teruggaan. Je kunt zeer snel heen en weer van functie naar
functie gaan.
Zonder NAVIGATIE zal je waarschijnlijk verloren zijn! <bf>ctags</bf> is als
de magnetische KOMPAS naald voor de programmeurs.
Gebruik van <bf>ctags</bf> :
<code>
ctags *.cpp
gvim -t foo_function
gvim -t main
</code>
Hiermee zal het C++ programmabestand met daarin de functie foo_funtion()
worden gewijzigd en zal de cursor automatisch op de eerste regel van de
funtie foo_funtion() worden geplaatst.
De tweede opdracht brengt je naar de regel met de main() functie
definitie.
Binnen de Vim editor, kun je naar een functie springen door het intikken van
een : (dubbele punt) tag
< functie naam > als hieronder -
<code>
:tag voorbeeld_functie
</code>
Hiermee zal de cursor op de eerste regel van voorbeeld_functie() worden
geplaatst.
Als je binnen de functie naar een regel met de naam van de functie wilt
springen, plaats je de cursor direct voor de naam van de functie en druk
je op <bf>CTRL+]</bf> (druk tegelijkertijd op de control-toets en linker
blokhaak), hierdoor zal je automatisch direct rechts van de regel
terechtkomen waar de functie begint!!
<code>
// voorbeeldcode
switch(id_number) {
Case 1:
if ( foo_function( 22, "abcef") == 3 )
^
|
|
|
Plaats de cursor hier (direct voor foo_function) en druk op CTRL+]
Hierdoor zal je naar de functie met de naam "foo_function" gaan.
Druk op CTRL+t om naar deze regel terug te keren.
</code>
Druk op <bf>CTRL+t</bf> (Control-toets en letter 't' samen) om terug te gaan
naar de aanroepende regel.
Je blijft de <bf>CTRL+t</bf> indrukken om terug te gaan en naar de
eerste regel te gaan vanwaar je de navigatie begon.
Dat wil zeggen dat je de
<bf>CTRL+]</bf> in kan blijven drukken en dan de <bf>CTRL+t</bf> om terug
te gaan. Je kunt dit zovaak herhalen als je wilt voor volledige navigatie
door de C of C++ functies.
</p>
<sect1><heading>Ctags voor ESQL</heading>
<p>
Aangezien ctags de Embedded SQL/C (ESQL) taal niet direct ondersteunt, kan
het volgende script worden gebruikt om tags voor esql aan te maken.
ESQL/C zijn database SQL opdrachten embedded binnen de "C" programma's.
Oracle's ESQL/C wordt Pro*C genoemd en Sybase, Informix heeft ESQL/C en
PostgreSQL heeft het produkt "ecpg".
</p>
<p>
Bewaar dit bestand als "sqltags.sh" en pas een a+rx tags_gen.sh toe.
<code>
#!/bin/sh
# Programma om ctags voor ESQL, C++ en C bestanden aan te maken
ESQL_EXTN=pc
tag_file1=tags_file.1
tag_file2=tags_file.2
which_tag=ctags
rm -f $tag_file1 $tag_file2 tags
aa=`ls *.$ESQL_EXTN`
#echo $aa
for ii in $aa
do
#echo $ii
jj=`echo $ii | cut -d'.' -f1`
#echo $jj
if [ ! -f $jj.cpp ]; then
echo " "
echo " "
echo "***********************************************"
echo "ESQL *.cpp bestanden bestaan niet.. "
echo "Je moet de *.cpp vanuit het *.pc bestand genereren"
echo "met behulp van de Oracle Pro*C pre-compiler of Sybase"
echo "of Informix esql/c pre-compiler."
echo "En vervolgens deze opdracht weer opnieuw uitvoeren"
echo "***********************************************"
echo " "
exit
fi
rm -f tags
$which_tag $jj.cpp
kk=s/$jj\.cpp/$jj\.pc/g
#echo $kk > sed.tmp
#sed -f sed.tmp tags >> $tag_file1
#sed -e's/sample\.cpp/sample\.pc/g' tags >> $tag_file1
sed -e $kk tags >> $tag_file1
done
# Handel nu alle C++/C bestanden af - sluit de ESQL *.cpp bestanden uit
rm -f tags $tag_file2
bb=`ls *.cpp *.c`
aa=`ls *.$ESQL_EXTN`
for mm in $bb
do
ee=`echo $mm | cut -d'.' -f1`
file_type="NOT_ESQL"
# Sluit de ESQL *.cpp en *.c bestanden uit
for nn in $aa
do
dd=`echo $nn | cut -d'.' -f1`
if [ "$dd" = "$ee" ]; then
file_type="ESQL"
break
fi
done
if [ "$file_type" = "ESQL" ]; then
continue
fi
rm -f tags
$which_tag $mm
cat tags >> $tag_file2
done
mv -f $tag_file2 tags
cat $tag_file1 >> tags
rm -f $tag_file1
# Moet tags bestand sorteren wil het juist werken ....
sort tags > $tag_file1
mv $tag_file1 tags
</code>
</p>
</sect1>
<sect1><heading>Ctags voor Javascript programma's, Korn, Bourne shells
</heading>
<p>
Het hieronder gegeven shell-script kan worden gebruikt om tags voor een
zeer grote variëteit aan programma's geschreven in
variety of programs written in JavasScript, PHP/FI scripts, Korn shell,
C shell, Bourne shell en vele anderen te genereren. Dit is een zeer algemene
module.
Bewaar dit bestand als tags_gen.sh en pas een chmod a+rx tags_gen.sh toe.
<code>
#!/bin/sh
tmp_tag=tags_file
tmp_tag2=tags_file2
echo " "
echo " "
echo " "
echo " "
echo " "
echo "Genereer tags voor ...."
while :
do
echo " Voer de bestandsextensie in waarvoor je tags wilt genereren."
echo -n " Bestandsextensie zou iets moeten zijn als sh, js, ksh, enz... : "
read ans
if [ "$ans" == "" ]; then
echo " "
echo "Onjuiste invoer. Probeer opnieuw!"
else
break
fi
done
\rm -f $tmp_tag
aa=`ls *.$ans`
for ii in $aa
do
jj=`echo $ii | cut -d'.' -f1`
#echo $jj
cp $ii $jj.c
ctags $jj.c
echo "s/$jj.c/$ii/g" > $tmp_tag2
sed -f $tmp_tag2 tags >> $tmp_tag
\rm -f tags $jj.c
done
sort $tmp_tag > tags
\rm -f $tmp_tag $tmp_tag2
</code>
</p>
</sect1>
<sect1><heading>Debugger gdb</heading>
<p>
Je zou samen met Vi uitgebreid gebruik moeten maken van gdb.
Debuggen is het belangrijkste aspect van programmeren
aangezien de belangrijkste kosten van een softwareproject in het debuggen
en testen gaan zitten.
</p>
<p>
Gebruik de too 'gdb' voor het debuggen van C++/C programma's. Zie
<bf>'man gdb'</bf>.
Je moet je programma's met de optie -g3 compileren als
<tscreen><verb>
gcc -g3 foo.c foo_another.c sample.c
</verb></tscreen>
Voor het eenvoudig instellen van aliassen -
<tscreen><verb>
Stel een alias in in je ~/.bash_profile
alias gdb='gdb -directory=/home/src -directory=/usr/myname/src '
Give -
gdb foo.cpp
gdb> dir /hom2/another_src
Dit zal aan het bestandszoekpad worden toegevoegd
gdb> break 'some_class::func<TAB><TAB>
Hiermee zal de functienaam worden aangevuld om je tijd te sparen bij het typen... en zal uitvoer produceren als -
gdb> break 'some_class::function_foo_some_where(int aa, float bb)'
</verb></tscreen>
Het tweemaal indrukken van de TAB-toets is de voltooiïng van de
opdrachtregel, wat je heel veel tijd zal besparen bij het typen.
Dit is één van de belangrijkste technieken bij het gebruik van
gdb.
Voor online hulp -
<tscreen><verb>
gdb> help
Geeft online hulp
gdb> help breakpoints
Geeft meer details over breakpoints.
</verb></tscreen>
Het instellen van breakpoints en het debuggen
<tscreen><verb>
unixprompt> gdb exe_filename
gdb> b main
Hiermee zal een breakpoint in de main() functie worden geplaatst
gdb> b 123
Hiermee zal een breakpoint in regel 123 van het huidige bestand worden geplaatst.
gdb> help breakpoints
Geeft meer details over breakpoints.
</verb></tscreen>
Voor het analyseren van de core dumps
<tscreen><verb>
unixprompt> gdb exe_filename core
gdb> bt
Geeft backtrace van functies en regelnummers waar het programma in gebreke bleef
gdb> help backtrace
Geeft meer details over backtrace.
</verb></tscreen>
</p>
<p>
Je kunt ook de GUI-versie van gdb, genaamd xxgdb gebruiken.
</p>
<p>
Memory leak tools -
<itemize>
<item> Freeware Electric Fence on linux cd, </item>
<item> Commercial tools Purify <url url="http://www.rational.com"> </item>
<item> Insure++ <url url="http://www.insure.com"></item>
</itemize>
</p>
</sect1>
</sect>
<sect><heading>Online VIM help</heading>
<p>
Zie de online man pages. Typ achter de unix shell-prompt <bf>man vim</bf> en
<bf>man gvim</bf>.
Of in de gvim sessie tik je :help in voor de helppagina. Zie ook de
<ref id="Vim Tutorial">Vim Tutiorial.
<tscreen><verb>
VIM - hoofd helpbestand
Manoeuvreren: Gebruik de cursortoetsen, of "h" om naar links te gaan,
"j" om naar beneden te gaan, "k" om naar boven te gaan,
"l" om naar rechts te gaan.
":1" ga naar 1e regel van pagina
":n" ga naar de n-de regel van pagina
"<SHIFT>g" ga naar de onderkant van pagina
":/eenwoord/ zoek naar "eenwoord" in doc
Sluit dit venster: Gebruik ":q<Enter>".
Ga naar onderwerp: Positioneer de cursor op een tag tussen |<tag>| en druk op
CTRL-].
Met de muis: ":set mouse=a" om de muis te activeren (in xterm of GUI).
Dubbelklik met de linkermuisknop op een tag tussen |<tag>|.
ga terug: Typ CTRL-T of CTRL-O.
Specifieke hulp: Het is mogelijk direct naar een bepaald hulponderwerp
te gaan, door een argument aan de ":help" opdracht
|:help| op te geven.
Het is mogelijk de context verder te specificeren:
WAT ERVOOR VOORBEELD ~
Normale modus opdrachten (niets) :help x
Visual modus opdrachten v_ :help v_u
Insert modus opdrachten i_ :help i_<Esc>
command-line opdrachten : :help :quit
command-line editing c_ :help c_<Del>
Vim opdrachtargumenten - :help -r
opties ' :help 'textwidth'
lijst met documentatie-bestanden:
|howto.txt| hoe het meest algemene te doen
|intro.txt| introductie Vim
|index.txt| alfabetische index voor iedere mode
|autocmd.txt| automatisch uitvoeren van opdrachten bij een actie
|change.txt| verwijderen en vervangen van tekst
</verb></tscreen>
</p>
</sect>
<sect><heading>Vim Home page en Vim links</heading>
<p>
De homepage van vim is te vinden bij <url url="http://www.vim.org">
en de mirror-site in de US <url url="http://www.us.vim.org">
Vim FAQ is bij <url url="http://www.grafnetix.com/~laurent/vim/faq.html">
en bij <url url="http://www.vim.org/faq">
Eli's Vim Page op <url url="http://www.netusa.net/~eli/src/vim.html">
De Vi Lovers Home Page <url url="http://www.cs.vu.nl/~tmgil/vi.html">
Vim Reference Guide op <url url="http://scisun.sci.ccny.cuny.edu/~olrcc/vim/">
Vim mailing list op <url url="http://www.findmail.com/listsaver/vimannounce.html">
en <url url="http://www.vim.org/mail.html">
Mailing list archieven worden bewaard op:
<itemize>
<item> <url url="http://www.egroups.com/group/vim"></item>
<item> <url url="http://www.egroups.com/group/vimdev"></item>
<item> <url url="http://www.egroups.com/group/vimannounce"></item>
</itemize>
Vim macro's <url url="http://www.grafnetix.com/~laurent/vim/macros.html">
</p>
</sect>
<sect><heading>Vim Tutorial <label id="Vim Tutorial"></heading>
<sect1><heading>Vim Hands-on Tutorial <label id="vimhandson"></heading>
<p>
Kijk voor de tutorial op een Linux-systeem in /usr/doc/vim-common-5.*/tutor,
ga onder andere unix-systemen naar de directory waarin vim is geïnstalleerd
en zoek naar de doc directory.
<code>
bash$ cd /usr/doc/vim-common*/tutor
bash$ less README.txt
bash$ cp tutor $HOME
bash$ cd $HOME
bash$ less tutor
</code>
</p>
</sect1>
<sect1><heading>Vi Tutorials op het Internet<label id="vimurls">
</heading>
<p>
<itemize>
<item> Purdue University <url url="http://ecn.www.ecn.purdue.edu/ECN/Documents/VI/"></item>
<item>
Quick Vi tutorial <url url="http://linuxwww.db.erau.edu/LUG/node165.html">
</item>
<item> Advanced Vi tutorial <url url="http://www.yggdrasil.com/bible/bible-src/user-alpha-4/guide/node171.html">
</item>
<item> Tutorials <url url="http://www.cfm.brown.edu/Unixhelp/vi_.html">
</item>
<item>
Tutorials <url url="http://www.linuxbox.com/~taylor/4ltrwrd/section3_4.html">
</item>
<item> Unix world online vi tutorial <url url="http://www.networkcomputing.com/unixworld/unixhome.html">
</item>
<item>
Univ of Hawaii tutorial <url url="http://www.eng.hawaii.edu/Tutor/vi.html">
</item>
<item> InfoBound <url url="http://www.infobound.com/vi.html">
</item>
<item> Cornell Univ <url url="http://www.tc.cornell.edu/Edu/Tutor/Basics/vi/">
</item>
<item> Vi Lovers home page: <url url="http://www.cs.vu.nl/~tmgil/vi.html">
</item>
<item> Zal na Sept 2000, verplaatst worden naar <url url="http://www.thomer.com/thomer/vi/vi.html">
</item>
<item> Beginner's Guide to vi <url url="http://www.cs.umr.edu/unixinfo/general/packages/viguide.html">
</item>
<item> vi Help file <url url="http://www.vmunix.com/~gabor/vi.html">
</item>
<item> vim FAQ <url url="http://www.math.fu-berlin.de/~guckes/vim/faq/">
Er bestaan vele Vi Tutorials op het internet.
Tik bij Yahoo (Lycos, excite of Hotbot)
"Vi Tutorial" in het zoekveld en de zoekmachine zal vele verwijzingen
retourneren.
</item>
</itemize>
</p>
</sect1>
</sect>
<sect><heading>Vi Tutorial <label id="vimtut"></heading>
<p>
In deze tutorial beschrijven we een aantal "gevorderde" <bf>vi</bf>
concepten en opdrachten, zodat je de kracht van <bf>vi</bf>
kunt leren waarderen en dus beslissen hoe je je kennis van
<bf>vi</bf> opdrachten kunt uitbreiden.
Bijna alle <bf>vi</bf> referenties sommen de beschikbare opdrachten op,
maar veel gaan er niet op in hoe de opdrachten
met elkaar in verband staan; dit onderwerp is het hoofddoel van deze tutorial.
</p>
<sect1><heading>Cursor verplaatsingsopdrachten</heading>
<p>
De <bf>vi</bf> cursorverplaatsingsopdrachten maken het mogelijk de
cursor met een minimum aantal toetsaanslagen efficiënt in het bestand
en/of op het scherm te positioneren.
Er zijn heel veel cursorverplaatsingsopdrachten - probeer ze niet allemaal
tegelijkertijd te onthouden!
Later zullen we zien dat veel van de kracht van <bf>vi</bf>
komt door het mixen van cursorverplaatsingsopdrachten met andere opdrachten
om tekst te verwijderen, wijzigen, yanken (kopiren), en filteren.
Wijzig alsjeblieft een groot tekstbestand (zoals bijvoorbeeld <bf>wknight</bf>)
zodat je met iedere opdracht kunt experimenteren op 't moment dat 't wordt
beschreven. Houd in gedachten dat deze opdrachten alleen in de Commando-modus
werken, niet in de Insert Modus; als je "opdrachten" in je tekst krijgt, druk
dan op de ESC-toets om naar de Commando-modus terug te keren.
<itemize>
<item> <bf>cursortoetsen</bf> : Zoals we hebben gezien, kunnen we met
de cursorpijlen een enkel teken naar links, beneden, boven en rechts
opschuiven. Verplaatsing voorbij de bovenkant, de
onderkant, rechts van het einde van een regel, of links van het begin van
een regel van het bestand is niet toegestaan (geen regelomslag).</item>
<item> <bf>hjkl</bf> : Toen <bf>vi</bf> werd geschreven (rond 1978), hadden
veel terminals op UNIX-systemen geen cursortoetsen!
<bf>h, j, k,</bf> en <bf>l</bf> werden gekozen als opdrachten
om respectievelijk naar links, beneden, boven, en naar rechts te gaan.
Probeer ze uit! De meeste <bf>vi</bf> fanaten geven de voorkeur aan deze
cursortoetsen omdat
<itemize>
<item><bf>(a)</bf> ze op alle toetsenborden op dezelfde plaats voorkomen, en
</item>
<item><bf>(b)</bf> ze prettig onder de vingers passen, in tegenstelling tot
de meeste cursortoetsen, die in een box of "T" of
één of andere niet lineaire vorm zijn gearrangeerd.
</item>
</itemize>
Waarom h, j, k, en l? In de ASCII character set, staat CTRL-H voor de
backspace (verplaatsing naar links), CTRL-J voor linefeed (verplaatsing naar
beneden), en, k en l bevinden zich direct naast h en j, dus zoals je kunt
zien zijn ze makkelijk te onthouden.
</item>
<item> <bf>0</bf> : ("nul", niet "oh") Ga naar het begin van de huidige
regel. (gebruik de cursortoetsen of <bf>h j k l</bf> om naar een
ingesprongen tekstregel met een paar "e" tekens erin te gaan, om dit en
de volgende paar opdrachten uit te proberen.
Als je geen ingesprongen regel in je bestand kunt vinden, maak er dan
één aan door een paar spaties aan het begin van een regel
in te voegen).</item>
<item> <bf> ^ </bf> : Ga naar het eerste niet-blanco teken van de huidige
regel. (Voor een ingesprongen regel, hebben 0 en ^ een verschillende
betekenis).
</item>
<item> <bf> $ </bf> : Ga naar het laatste teken van de huidige regel.
</item>
<item> <bf> tC </bf> : Ga naar (vlak ervoor) het volgende teken c in
de huidige regel. (Druk op 0, en tik dan `te' in.
Hiermee zal naar de eerste `e' in de huidige regel worden gegaan).
</item>
<item> <bf> fC </bf> : Zoek naar (plaatst cursor onder teken) volgende
teken `c' in de huidige regel. (Tik `fe' in, en de cursor zal de volgende
`e' vinden - dat wil zeggen, verplaatst worden naar - de volgende `e' in de
huidige regel).
</item>
<item> <bf> TC </bf> : Ga naar (direct erachter) het vorige teken c
in de huidige regel (Druk op $, dan Te).</item>
<item> <bf> FC </bf> : Zoek (plaatst cursor onder teken) het vorige teken c
in de huidige regel. (Druk op Fe.)</item>
<item> <bf> n| </bf> : Ga naar kolom n in de huidige regel.
(Probeer 20 |. De cijfers 2 en 0 zullen, als je ze intikt, niet worden
getoond, maar als je de | intikt, zal de cursor naar kolom 20 gaan).
Probeer wat met t f T F | te experimenteren. Als je iets niet goed doet, zal
<bf>vi</bf> een beep genereren.
</item>
<item> <bf> w </bf> : Voorwaarts naar het begin van het volgende "kleine"
woord (een "klein" woord bestaat uit een onafgebroken reeks alfanumerieke
tekens of leestekens, maar niet gemengd alfanumeriek en leestekens). Probeer
een aantal keren de w - merk op wat er gebeurt bij een leesteken.
</item>
<item> <bf> W </bf> : Voorwaarts naar het begin van het volgende "grote"
woord (gemengd alfanumeriek en leestekens). Probeer een aantal dozijn maal
de W.</item>
<item> <bf> b </bf> : Terugwaarts naar het begin van een "klein" woord.
</item>
<item> <bf> B </bf> : Terugwaarts naar het begin van een "groot" woord.
</item>
<item> <bf> e </bf> : Voorwaarts naar het einde van een "klein" woord.
</item>
<item> <bf> E </bf> : Voorwaarts naar het einde van een "groot" woord.
</item>
<item> <bf> + Return </bf> : Ga naar het eerste niet-blanco teken op de
volgende regel. (+ en de Return toets hebben hetzelfde effect).
</item>
<item> <bf> - </bf> : Ga naar het eerste niet-blanco teken op de vorige regel.
</item>
<item> <bf> ) </bf> : Ga naar het einde van de zin. (Een zin eindigt of met
een lege regel of met een punt of een uitroepteken gevolgd door twee
spaties of op het einde van een regel.
Een punt of uitroepteken gevolgd door een spatie betekent niet het einde
van een zin; dit gedrag is juist, overeenkomstig traditionele regels van hoe
zinnen in getypte documenten zouden moeten verschijnen, maar lijkt vaak
onjuist voor degenen die nooit typeles hebben gehad).
</item>
<item> <bf> ( </bf> : Ga naar het begin van de zin.
</item>
<item> <bf> } </bf> : Ga naar het einde van de paragraaf.
(Paragrafen worden gescheiden door lege regels, volgens de definitie van
<bf>vi</bf>).
</item>
<item> <bf> { </bf> : Ga naar het begin van de paragraaf.
</item>
<item> <bf> H </bf> : Ga naar de home-positie (bovenste regel) op het scherm.
</item>
<item> <bf> M </bf> : Ga naar de middelste regel op het scherm.
</item>
<item> <bf> L </bf> : Ga naar de laatste regel op het scherm.
</item>
<item> <bf> nG </bf> : Ga naar regel n. Als n niet wordt opgegeven, ga
dan naar de laatste regel in het bestand.
(Probeer bijvoorbeeld 15G om naar regel 15 te gaan. De CTRL-G opdracht toont
de naam van het bestand, wat statusinformatie en het huidige regelnummer.
Om naar het begin van het bestand te gaan: 1G)
</item>
<item> <bf> CTRL-d </bf> : Scroll een half scherm omlaag (zie noot).</item>
<item> <bf> CTRL-u </bf> : Scroll een half scherm omhoog (zie noot).</item>
<item> <bf> CTRL-f </bf> : Ga een scherm verder (zie noot).</item>
<item> <bf> CTRL-b </bf> : Ga een scherm terug (zie noot).</item>
<item> <bf> Noot </bf> : Deze vier scrolling/paging opdrachten kunnen niet met
de verwijder-, wijzigings-, kopieer- of filteropdrachten worden gebruikt.
</item>
<item> <bf> /reg_exp </bf> : Ga naar het volgende voorkomen van de
reguliere expressie reg_exp.
Als je de / intikt, wordt de cursor naar de linkeronderkant van het scherm
geplaatst en wacht totdat je de reguliere expressie typt.
Druk op de Return toets om de invoer te bevestigen; <bf>vi</bf> zoekt dan
in voorwaartse richting naar het volgende voorkomen van de reguliere
expressie.
Bijvoorbeeld, tik in /de gevolgd door een druk op de Return. Hiermee wordt
naar het volgende voorkomen van `de' gegaan, misschien onderdeel uitmakend
van een wat langer woord (ander, weder, enz.). Als je de / intikt,
gevolgd door de Return, zoekt <bf>vi</bf> naar de laatst opgegeven reguliere
expressie waarnaar werd gezocht.</item>
<item> <bf> n </bf> : Heeft hetzelfde effect als het indrukken van de /
en de Return; d.w.z., zoekt naar het volgende voorkomen van de laatste
reguliere expressie waarnaar je zocht.</item>
<item> <bf> ?reg_exp </bf> : Zoek voorwaarts, in plaats van terugwaarts. Als
er geen reg_exp werd opgegeven, zoekt het naar de laatste reguliere expressie
die werd ingevoerd. Het zoeken met / en ? "na" de onderkant en "voor" de
bovenkant van het bestand is toegestaan.</item>
<item> <bf> N </bf> : Hetzelfde als het indrukken van ? en dan op Return.
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Herhalingen</heading>
<p>
Veel van de verplaatsingsopdrachten die hiervoor werden besproken kunnen
worden voorafgegaan door een getal waarmee wordt aangegeven hoeveel maal
de erna volgende opdracht moet worden herhaald; de verplaatsing wordt
gewoon het gegeven aantal malen herhaald:
<itemize>
<item> <bf> 3w </bf> : Ga drie woorden vooruit</item>
<item> <bf> 5k </bf> : Ga vier tekens naar boven</item>
<item> <bf> 3fa </bf> : Zoek de derde opeenvolgende a in de huidige regel</item>
<item> <bf> 6+ </bf> : Ga zes regels naar beneden</item>
</itemize>
Voor een aantal opdrachten hebben de herhalingen een speciale betekenis:
<itemize>
<item> <bf> 4H </bf> : Ga naar regel 4 op het scherm (home plus 3)</item>
<item> <bf> 8L </bf> : Ga naar de achtste regel vanaf de onderkant van het
scherm.</item>
<item> <bf> 3$ </bf> : Ga naar het einde van de derde regel van onder
</item>
</itemize>
Bij een aantal opdrachten (b.v., ^) wordt de herhaling genegeerd;
bij anderen (b.v., / en ? ) is het niet toegestaan
</p>
</sect1>
<sect1><heading>Verwijderen van Tekst</heading>
<p>
We hebben gezien dat <bf>dd</bf> de huidige regel verwijdert. Dit kan met
een herhaling worden gebruikt: 3dd verwijdert drie regels, de huidige
regel en de 2 daarop volgende regels.
De d opdracht kan als een "voorvoegsel" worden gebruikt met de meeste
verplaatsingsopdrachten hierboven om bijna willekeurige stukken tekst te
verwijderen. De verplaatsingsopdrachten worden "target specifiers" genoemd,
als ze in combinatie met d worden gebruikt. Aan d kan een herhaling worden
opgegeven. (Als je hiermee gaat experimenteren, denk er dan aan na iedere
opdracht de u in te tikken om de verwijdering ongedaan te maken).
<itemize>
<item> <bf> dw </bf> : Verwijder "klein" woord voorwaarts</item>
<item> <bf> d3w </bf> : Verwijder drie "kleine" woorden voorwaarts</item>
<item> <bf> 3dw </bf> : Drie keer, verwijder "klein" woord voorwaarts</item>
<item> <bf> 3d3w </bf> : Drie keer, verwijder drie "kleine" woorden voorwaarts
(dat wil zeggen, verwijder negen "kleine" woorden voorwaarts)</item>
<item> <bf> d+ </bf> : Verwijder huidige en daaropvolgende regel</item>
<item> <bf> d/de </bf>: Verwijder vanaf het huidige teken tot aan, maar niet
inclusief het volgende voorkomen van het patroon 'de'</item>
<item> <bf> d$ </bf> : Verwijder tot aan het einde van de regel</item>
<item> <bf> d0 </bf> : Verwijder tot aan het begin van de regel</item>
<item> <bf> d30G </bf> : Verwijder vanaf de huidige regel tot en met
regel 30</item>
<item> <bf> dG </bf> : Verwijder vanaf de huidige regel tot en met
de laatste regel</item>
<item> <bf> d1G </bf> : Verwijder vanaf de huidige regel tot en met
regel 1</item>
</itemize>
Gebruik x om enkele tekens te verwijderen. aan x kan een herhaling worden
opgegeven:
<itemize>
<item> <bf> 15x </bf> : Verwijder het huidige en de 14 daaropvolgende
14 tekens</item>
</itemize>
x is in feite gewoon een afkorting van d1; dat wil zeggen, verwijder
één teken rechts.
</p>
</sect1>
<sect1><heading>Wijzigen van Tekst</heading>
<p>
De c opdracht is vergelijkbaar met d, behalve dat het <bf>vi</bf> naar Insert
mode laat schakelen, waarbij het mogelijk wordt de oorspronkelijke (ongewenste)
tekst in iets anders te veranderen.
Plaats bijvoorbeeld de cursor aan het begin van een woord (druk op w om
naar het begin van het volgende woord te gaan). Druk dan op cw om dat woord
te wijzigen. Op het scherm zal het laatste teken in het woord dat wordt
gewijzigd, worden vervangen door een <bf>$</bf>-symbool om de grens van
de wijziging aan te geven; typ een nieuw woord in (je zult het oorspronkelijke
woord op het scherm overschrijven) en druk de ESC-toets in als je klaar bent.
Wat je invoert mag langer of korter zijn dan het woord dat wordt gewijzigd.
Plaats de cursor aan het begin van een regel bestaande uit op z'n minst
drie woorden, en probeer c3w om drie woorden te wijzigen.
Probeer c$ om tot het einde van de huidige regel te wijzigen.
In alle gevallen wordt de grens aangegeven met $ daar waar de wijziging
alleen effect heeft op de huidige regel.
Als een wijziging op meer dan alleen de huidige regel effect heeft,
verwijdert <bf>vi</bf> de oorspronkelijke tekst van het scherm en schakelt
over naar Insert-mode. Probeer bijvoorbeeld eens met c3+ de huidige
en 3 volgende regels te wijzigen;
<bf>vi</bf> verwijdert de vier oorspronkelijke regels van het scherm en
schakelt over naar Insert-mode op een nieuwe blanco regel.
Druk zoals gewoonlijk op de ESC-toets wanneer je klaar bent met het invoeren
van je nieuwe tekst.
Een aantal andere wijzigingsopdrachten:
<itemize>
<item> <bf> cc </bf> : Wijzig huidige regel</item>
<item> <bf> 5cc </bf> : Wijzig vijf regels (huidige en de volgende vier)</item>
<item> <bf> c/de </bf> : Wijzig vanaf huidige teken tot aan, maar niet
inclusief het volgende voorkomen van het volgende patroon dat voldoet aan
'de'</item>
<item> <bf> c$ </bf> : Wijzig tot aan het einde van de regel</item>
<item> <bf> c30G </bf> : Wijzig vanaf de huidige regel tot en met Regel 30
</item>
<item> <bf> cG </bf> : Wijzig vanaf de huidige regel tot en met de laatste
regel</item>
<item> <bf> c1G </bf> : Wijzig vanaf de huidige regel tot en met Regel 1
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Yanken (kopiëren) van Tekst</heading>
<p>
De y opdracht kopieert een kopie van tekst naar een buffer; de gekopieerde
tekst kan dan met p of P elders in het bestand worden geplaatst (of geplakt).
De eenvoudigste vorm van yank is yy om de huidige regel te kopiëren;
probeer na een yy een kopie van de gekopieerde regel na de cursor te
plaatsen. Na een yy, kun je zoveel kopieën van de gekopieerde regel
maken als je wilt door naar boven en naar beneden in het bestand te gaan
en op p te drukken.
Probeer voor het kopiëren van meerdere regels bijvoorbeeld 5yy
(kopieer de huidige en de volgende vier regels).
p plaatst een kopie van de gekopieerde regels na de cursor; de reeks 5yyp
"werkt" maar het is waarschijnlijk niet wat je wilt. De P opdracht is
vergelijkbaar met p, maar het plaatst een kopie van de gekopieerde tekst
voor de cursor; probeer de reeks 5yyP.
Andere kopieer-opdrachten:
<itemize>
<item> <bf> y3w </bf> : Kopieer drie woorden</item>
<item> <bf> y$ </bf> : Kopieer tot aan het einde van de huidige regel</item>
<item> <bf> y1G </bf> : Kopieer vanaf de huidige regel tot en met Regel 1</item>
</itemize>
</p>
</sect1>
<sect1><heading>Filteren van tekst</heading>
<p>
De filteropdracht <bf>!</bf>, verwacht de naam van een UNIX-opdracht
(wat een filter zou moeten zijn), en geeft de geselecteerde regels dan door
aan het filter, waarbij de geselecteerde regels in de <bf>vi</bf>-buffer
dan worden vervangen door de uitvoer van het filteropdracht.
<bf>vi</bf>'s vermogen om bijna willekeurige stukken tekst via iedere
UNIX-filter door te geven voegt, zonder "extra kosten" aan <bf>vi</bf> een
ongelofelijke flexibliteit toe.
Ter illustratie zal een aantal voorbeelden van hulp zijn. Maak in het
bestand een regel met slechts het woord 'who' en absoluut geen andere tekst.
Plaats de cursor op deze regel, en druk op <bf>!!</bf>.
Deze opdracht is analoog aan dd, cc, of yy, maar in plaats van het verwijderen,
wijzigen of kopiëren van de huidige regel, filtert het de huidige regel.
Als je de tweede ! indrukt, gaat de cursor naar de linkerhoek aan de onderkant
van het scherm en wordt een enkele ! getoond, daarbij wachtend totdat je de
naam van een filter opgeeft. Typ als filternaam sh en druk op de Return-toets.
<bf>sh</bf> (de Bourne shell) is een filter!
Het leest van standaarinvoer, verwerkt zijn invoer (dat wil zeggen, voert
opdrachten uit) en stuurt de uitvoer (de uitvoer van die opdrachten) naar
standaarduitvoer. Het filteren van de regel met who via sh zorgt ervoor dat de
regel met who wordt vervangen door een lijst met de huidige gebruikers op het
systeem - direct in je bestand!
Probeer dit proces te herhalen met <bf>date</bf>. Dat wil zeggen, maak een
regel met niets anders dan het woord <bf>date</bf>, plaats de cursor dan op
deze regel, druk op <bf>!!sh</bf> en de Return-toets. De regel met
<bf>date</bf> wordt vervangen door de uitvoer van de <bf>date</bf> opdracht.
Plaats de cursor op de eerste regel van de uitvoer van who. Tel het aantal
regels. Stel bijvoorbeeld dat het aantal zes is. Selecteer dan deze zes
regels om via sort te laten filteren; druk op
<bf>6!!sort</bf> en vervolgens de Return-toets. De zes regels zullen aan sort
worden doorgegeven, en de zes oorspronkelijke regels worden door de uitvoer
van sort vervangen.
De filteropdracht kan alleen op gehele regels worden toegepast, niet op
tekens of woorden.
Nog wat andere filter-opdrachten (hier betekent, < CR > een druk op de
Return-toets):
<itemize>
<item> <bf>!/de < CR > sort < CR ></bf> : Sorteer vanaf de huidige
regel tot en met de volgende regel met daarin het woord `de'.
</item>
<item><bf> !1Ggrep de < CR ></bf> : Vervang vanaf de huidige regel tot
en met Regel 1 door slechts die regels met daarin het woord `de'.
</item>
<item><bf> !Gawk '{print $1}' < CR > </bf>: Vanaf de huidige regel tot
aan het einde van het bestand, het vervangen van iedere regel door slechts
het eerste woord.
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Markeren van Regels en Tekens</heading>
<p>
Je kunt regels en tekens markeren om te worden gebruikt als doel voor
verplaatsing, verwijdering, wijziging, ze te kopiëren, of filteren met
behulp van de opdracht mc, waar c staat voor een kleine letter.
Plaats de cursor bijvoorbeeld in het midden van een woord en druk op ma.
Hiermee wordt het teken onder de cursor met a gemarkeerd.
Verplaats de cursor nu naar elders, weg van het gemarkeerde teken en naar
een andere regel (gebruik de cursorpijlen, CTRL-u of iets dergelijks).
Om naar de gemarkeerde regel terug te keren, tik je 'a in.
(dat wil zeggen, een enkel aanhalingsteken en dan een a).
Hierdoor wordt de cursor naar het eerste niet-blanco teken in de regel
gemarkeerd met a verplaatst.
Ga weer weg van deze regel. Druk op `a (dat wil zeggen, een aanhalingsteken
achterwaarts en dan een a) om naar het gemarkeerde teken terug te keren.
Hierdoor wordt de cursor naar het teken gemarkeerd met a verplaatst.
Markeringen worden meestal gebruikt in combinatie met verwijderingen,
wijzigingen, kopieer- of filteropdrachten.
Verplaats de cursor bijvoorbeeld naar een andere regel dan die met de
markering a en druk dan op d'a (d, een enkel aanhalingsteken en een a).
Hiermee wordt de huidige regel tot en met de regel gemarkeerd met a verwijderd.
Plaats de cursor in het midden van een ander woord en druk op mb om de
markering b in te stellen. Verplaats de cursor nu, weg van dat woord (maar
slechts een paar regels, zodat je makkelijk kunt zien wat we aan het doen zijn),
en druk dan op d`b (d, aanhalingsteken achterwaarts, b).
Hierdoor wordt het huidige teken tot en met het teken gemarkeerd met b
verwijderd.
Een ander voorbeeld is om de uitvoer van who te sorteren, markeer de eerste
regel (ma), verplaats de cursor dan naar de laatste regel en druk op
!'asort en dan de Return-toets.
Als je naar een markering springt en besluit terug te gaan naar waar je vandaan
sprong, kun je '' intikken (ga terug naar regel ..) of `` (ga terug naar het
teken ..).
</p>
</sect1>
<sect1><heading>Benoemen van Buffers</heading>
<p>
Als je tekst verwijdert, wijzigt of kopieert, wordt de oorspronkelijke tekst
(tot de volgende verwijdering, wijziging of kopieeropdracht) in een
onbenoemde buffer opgeslagen van waaruit het kan worden opgehaald met
p of P. Door gebruik te maken van de onbenoemde buffer, kan alleen de meest
recente verwijderde, gewijzigde of gekopieerde tekst worden hersteld.
Als je meerdere delen van je tekst wilt verwijderen, wijzigen of kopiëren
en je wilt ze allemaal onthouden (tot aan een maximum van 26), kun je
voor de wijzigings- of kopieeropdracht aan een buffer een naam toekennen.
De naam van een buffer heeft de vorm "c (dubbel aanhalingsteken, kleine letter
c).
Tik bijvoorbeeld "ayy in om de huidige regel naar buffer a te kopiëren.
Verplaats je vervolgens naar een andere regel en druk op "byy om die regel naar
buffer b te kopiëren. Verplaats de cursor nu naar elders in het bestand en
tik in "ap en "bp om kopieën van de tekst te plaatsen die in de buffers
a en b zijn geplaatst.
Nog wat andere benoemde bufferopdrachten:
<itemize>
<item> <bf> "a6yy </bf> : Kopieer zes regels (de huidige en de volgende
vijf) naar buffer a</item>
<item> <bf> "bd1G </bf> : Verwijder vanaf de huidige regel tot en met Regel 1,
waarbij de verwijderde regel in buffer b wordt opgeslagen</item>
<item> <bf> "cy'c </bf> : Kopieer vanaf de huidige regel gemarkeerd als c
naar buffer c (markeringen en buffers zijn verschillend, en kunnen dezelfde
naam hebben zonder dat <bf>vi</bf> daarvan in de war raakt).</item>
</itemize>
</p>
</sect1>
<sect1><heading>Substituties</heading>
<p>
Gebruik de :s opdracht om een stuk tekst door een ander stuk tekst in regels
door je hele bestand te vervangen.
Wat substitueer voorbeelden:
<itemize>
<item> <bf> :1,$s/de/DE/g </bf>Vervang van regel 1 tot aan de laatste
regel (regel $), het woord `de' door `DE'
doe dit globaal in iedere regel waar `de' voorkomt</item>
<item> <bf> :'a,.s/.*/ha ha/ </bf> Vervang in de regel gemarkeerd met `a'
tot aan de huidige regel (regel .) alles op de regel door de tekst `ha ha'
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Diverse "Commando's beginnend met een dubbele punt"
</heading>
<p>
Alle volgende opdrachten beginnen met een dubbele punt; als je de dubbele
punt intikt, gaat de cursor naar de linkeronderkant van het scherm en wordt
er een prompt, bestaande uit een dubbele punt, weergegeven, die wacht totdat
je gereed bent met het invoeren van je opdracht.
Een aantal belangrijke voorbeelden:
<itemize>
<item><bf>:w </bf> Schrijf de inhoud van de buffer naar het bestand zonder
<bf>vi</bf> te verlaten</item>
<item><bf>:w abc </bf>Schrijf de inhoud van de buffer naar het bestand
`abc' (waarbij `abc' wordt aangemaakt als het niet bestaat of de huidige
inhoud overschrijft als het wel bestaat) zonder <bf>vi</bf> te verlaten
</item>
<item><bf>:1,10w abc </bf>Schrijf de regels 1 tot en met 10 naar het
bestand `abc'</item>
<item><bf>:'a,$w abc </bf>Schrijf vanaf de regel gemarkeerd als a tot aan
de laatste regel naar het bestand `abc'</item>
<item><bf>:e abc </bf>Wijzig bestand `abc', in plaats van het huidige
bestand. <bf>vi</bf> drukt een foutmelding af als er aan het huidige bestand
wijzigingen zijn aangebracht die nog niet met :w zijn opgeslagen
</item>
<item><bf>:e! abc </bf>Wijzig het bestand `abc', waarbij eventuele wijzigingen
die zijn aangebracht aan het huidige bestand worden verworpen</item>
<item><bf>:e # </bf>Wijzig het vorige gewijzigde bestand (opeenvolgende
:e# opdrachten schakelen tussen twee bestanden)</item>
<item><bf>:f abc </bf>Wijzig de bestandsnaam voor de huidige <bf>vi</bf>
buffer in abc</item>
<item><bf>:q </bf>Beëindig, tenzij niet opgeslagen wijzigingen zijn
gemaakt</item>
<item><bf>:q! </bf>Beëindig, waarbij eventuele wijzingingen die zijn
aangebracht, worden verworpen</item>
<item><bf>:r abc </bf>Lees het bestand `abc' in de huidige <bf>vi</bf> buffer,
na de regel waarop de cursor staat (probeer :r croc om een kopie van het
croc bestand in te lezen)</item>
<item><bf>:!cmd </bf>Voer de opdracht cmd uit (who, sort, ls, enz.)
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Opties Instellen</heading>
<p>
Diverse opties hebben effect op de "feel" van <bf>vi</bf>.
Je kunt alle diverse opties die kunnen worden ingesteld tonen met de
opdracht :set all. Je kunt set ook gebruiken om opties te wijzigen.
Als je bijvoorbeeld regelnummers wilt zien voor de regel in het bestand
wat je aan het wijzigen bent, gebruik je de opdracht :set number.
Voor het uitzetten van de regelnummering, gebruik je de opdracht
:set nonumber. De meeste opties kunnen worden afgekort. :set nu zet de
regelnummering aan en :set nonu zet de regelnummering uit.
Met een :set nomagic, wordt de speciale betekenis van de reguliere expressie
tekens (punt, asterisk, blokhaak, enz.) uitgeschakeld. Gebruik :set magic
om de speciale betekenissen weer te herstellen.
Een aantal opties verwacht een waarde. :set tabstop=4 bijvoorbeeld
zorgt ervoor dat tabs als vier spatie-tekens worden weergegeven in plaats
van de gebruikelijke acht.
Als je bemerkt dat je bepaalde opties altijd op een bepaalde manier instelt, kun
je de set opdrachten die je wilt in een bestand met de naam .exrc plaatsen,
of je kunt de omgevingsvariabele EXINIT instellen om de gewenste opties in
te stellen.
Als je login-shell bijvoorbeeld de Bourne-shell is, zou deze regel in je
.profile bestand geplaatst kunnen worden:
<code>
EXINIT='set nomagic nu tabstop=4'; export EXINIT
</code>
Als je login-shell een C-shell is, zou deze regel in je .login bestand
geplaatst kunnen worden:
<code>
setenv EXINIT 'set nomagic nu tabstop=4'
</code>
</p>
</sect1>
<sect1><heading>Key Mappings</heading>
<p>
Als je bemerkt dat je keer op keer een serie eenvoudige opdrachten aanroept,
kun je met de opdracht :map de serie opdrachten aan een ongebruikte
opdrachttoets toekennen. Als in de toekenning controle-tekens zoals de
Return-toets (CTRL-M in ASCII) of de ESC (CTRL-[ in ASCII), moeten worden
opgenomen, laat dergelijke tekens dan voorafgaan door een CTRL-v om hun
speciale betekenis te onderdrukken.
In bijvoorbeeld de hierna volgende opdracht wordt aan de opdracht
CTRL-A toegekend dat de cursor 55 regels verder wordt geplaatst, dan weer
terug wordt gegaan naar de regel met de minste tekens, waarbij die blanco
regel wordt gewijzigd in een formfeed (CTRL-L) gevolgd door drie blanco
regels. Dat wil zeggen dat iedere CTRL-A de volgende pagina zal pagineren,
zonder dat paragrafen op meerdere pagina's worden gesplitst.
Noot: In deze opdracht wordt ieder controle-teken getoond als ^C, C is hierbij
een hoofdletter. CTRL-M wordt bijvoorbeeld getoond als ^M.
Wanneer je deze opdracht invoert, zul je ook de CTRL-v tekens zoals getoond,
niet zien: iedere CTRL-v onderdrukt louter de gebruikelijke speciale betekenis
van het volgende controle-teken, dus als je de reeks ^V^M intikt, zul je
op het scherm slechts ^M zien. In deze opdracht, is ^M de Return-toets en
^[ is de ESC-toets.
<code>
:map ^A 55+?^$^V^Mcc^V^L^V^M^V^M^V^M^V^[
</code>
</p>
</sect1>
<sect1><heading>Wijzigen van Meerdere Bestanden</heading>
<p>
Je kunt met <bf>vi</bf> meerdere bestanden wijzigen, door als argumenten op
de opdrachtregel, meerdere bestandsnamen op te geven:
<code>
vi croc fatherw wknight
</code>
Twee opdrachten beginnend met een dubbele punt worden gebruikt om je
tussen de meerdere bestanden te verplaatsen:
<itemize>
<item><bf> :n </bf>Ga naar het volgende bestand in de argumentenlijst
(je moet je wijzigingen opslaan met
:w anders zal <bf>vi</bf> een foutmelding weergeven)
</item>
<item><bf> :rew </bf>Ga terug en ga weer verder met het eerste bestand
in de lijst met argumenten</item>
</itemize>
De :n en :rew opdrachten zijn wat onhandig, maar er zijn een aantal
belangrijke voordelen: de inhoud van benoemde buffers
("a, "b, "c, etc.) worden door de bestanden heen onthouden, dus je kunt
:n en :rew met p en P gebruiken om tekst heen en weer tussen bestanden
te kopiëren. Ook wordt de meest recente zoekstring voor de / en ?
opdrachten door de bestanden heen onthouden, dus je kunt nogal makkelijk
herhalende zoekopdrachten in meerdere bestanden gebruiken.
Probeer bijvoorbeeld het volgende experiment:
Ga eerst uit <bf>vi</bf>, start <bf>vi</bf> dan op met croc en wknight
als argumenten:
<code>
$ vi croc wknight
</code>
Zoek in croc naar `de'
<bf> /de < CR > </bf>
Kopieer deze regel naar buffer a:
<bf> "ayy </bf>
Ga nu naar het volgende bestand (je hebt geen wijzigingen aangebracht aan
croc, dus dit werkt):
<bf> :n < CR > </bf>
Zoek naar de volgende regel met `de', zonder het opnieuw intikken van de
zoekstring:
<bf> n </bf>
Plaats een kopie van buffer a na de huidige regel in wknight:
<bf> "ap </bf>
Ga twee regels naar beneden, en kopieer de huidige regel naar buffer b:
<bf> jj"byy </bf>
Sla de wijzigingen in wknight op
<bf> :w < CR > </bf>
Ga nu terug naar croc
<bf> :rew < CR > </bf>
Zoek nogmaals, en plaats een kopie van buffer b na de gevonden regel:
<bf> n"bp </bf>
Sla de wijzigingen op en beëindig <bf>vi</bf>
<bf> ZZ </bf>
</p>
</sect1>
<sect1><heading>Laatste Opmerkingen</heading>
<p>
Deze tutorial was bedoeld om wat van de mogelijkheden van
<bf>vi</bf> te introduceren waar je in het systeemhandboek van <bf>vi</bf>
misschien overheen zou kijken of die wellicht niet in het handboek worden
vermeld (op de verschillende systemen zijn de handboeken van zeer
verschillende kwaliteit).
Je zult na het lezen van deze tutorial geen <bf>vi</bf>-expert zijn, maar je
kunt de mogelijkheden van <bf>vi</bf> dan wel juist inschatten.
Slechts tijd en moeite kunnen een <bf>vi</bf>-expert van je
maken. Maar de efficiëntie en alomvattenheid betalen dit op de lange
termijn terug.
Mogelijk heb je besloten dat je <bf>vi</bf> haat. Het zij zo!
Maar wees je er bewust van dat <bf>vi</bf> de standaard UNIX teksteditor
blijft - de enige editor waar je op kunt rekenen dat het op ieder UNIX-systeem
beschikbaar is - dus zelfs als je de voorkeur geeft om dagelijks iets anders
te gebruiken, wordt je geadviseerd om bekend te zijn met het absolute
minimum aan het <bf>vi</bf>-materiaal dat in deze tutorial is behandeld.
</p>
</sect1>
</sect>
<sect><heading>Vim Referentiekaart<label id="vimref"></heading>
<sect1><heading>Vi status</heading>
<p>
Vi heeft 3 modi:
<enum>
<item> <bf><it>opdrachtenmodus</it></bf> - Normale en initiële status;
anderen keren hier naar terug (gebruik <bf>ESC</bf> om een gedeeltelijk
getypte opdracht af te breken)</item>
<item> <bf><it>invoer modus</it></bf> - ingegaan door specieke opdrachten
<bf>a i A I o O c C s S R </bf> en beëindigd door <bf>ESC</bf> of
abnormaal door een interrupt</item>
<item> <bf><it>regel modus</it></bf> - d.w.z. het wachten op invoer
na een <bf>: </bf>, <bf>/ </bf>, <bf>? </bf> of een <bf>! </bf>
opdracht (beëindigd met <bf>CR</bf>, af te breken met <bf>CTRL-c</bf>).
<bf>CTRL</bf> is de control-toets: <bf>CTRL-c</bf> betekent "control c"
</item>
</enum>
</p>
</sect1>
<sect1><heading>Shell Commando's</heading>
<p>
<enum>
<item> <bf>TERM=</bf> <it>code</it> Plaatst een code-naam voor je terminal
in de variabele <bf>TERM</bf></item>
<item> <bf>export TERM</bf> Draagt de waarde van <bf>TERM</bf> over (de
terminal code) naar ieder UNIX-systeemprogramma dat terminal afhankelijk is.
</item>
<item> <bf>tput init</bf> Initialiseert de terminal zodat het juist zal
functioneren met diverse UNIX-systeemprogramma's.</item>
<item> <bf>vi </bf> <it>filename</it> Geeft toegang tot de schermeditor
<bf>vi</bf> zodat je een specifiek bestand kunt wijzigen.</item>
<item> <bf>vi </bf> <it>file1 file2 file3</it> Laadt drie bestanden in de
<bf>vi</bf> buffer om te worden gewijzigd. Die bestanden zijn
<it>file1, file2,</it> en <it>file3</it>.</item>
<item> <bf>view </bf> <it>file</it> Roep de vi-editor aan met het bestand
<it>file</it> in read-only modus</item>
<item> <bf>vi -R </bf> <it>file</it> Roep de vi-editor aan met het bestand
<it>file</it> in read-only mode</item>
<item> <bf>vi -r </bf> <it>file</it> Herstel het bestand <it>file</it> en
recente wijzigingen na een systeemcrash</item>
<item> <bf>vi -r </bf> <it>file</it> Herstel het bestand <it>file</it> en
recente wijzigingen na een systeemcrash</item>
</enum>
</p>
</sect1>
<sect1><heading>Opties Instellen</heading>
<p>
<enum>
<item> <bf>:set</bf> <it>optie</it> Activeer <it>optie</it></item>
<item> <bf>:set</bf> <it>optie=waarde</it> Wijs <it>waarde</it> toe aan
<it>optie</it></item>
<item> <bf>:set no</bf> <it>optie</it> Deactiveer <it>optie</it></item>
<item> <bf>:set </bf> Toon door gebruiker ingestelde opties</item>
<item> <bf>:set all</bf> Toon lijst met alle huidige opties, zowel
standaard als die zijn ingesteld door de gebruiker</item>
<item> <bf>:set </bf> <it>optie</it>? Toon waarden van <it>optie</it>
</item>
</enum>
</p>
</sect1>
<sect1><heading>Gebruikte Notaties</heading>
<p>
Notaties:
<enum>
<item> <bf>CTRL-c</bf> <bf>CTRL</bf> is de control-toets: <bf>CTRL-c</bf> betekent "control c"
</item>
<item> <bf>CR</bf> is een Carriage return (ENTER toets)</item>
</enum>
</p>
</sect1>
<sect1><heading>Onderbreken, annuleren</heading>
<p>
<itemize>
<item> <bf>ESC</bf> beëindig invoeg-modus of onvolledige opdracht</item>
<item> <bf>CTRL-?</bf> <bf>CTRL</bf> is de control-toets:
<bf>CTRL-?</bf> betekent "control ?" verwijder of rubout interrupts</item>
<item> <bf>CTRL-l</bf> reprint/ververs scherm als CTRL-? het door de war gooit
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Bestandsmanipulatie</heading>
<p>
<itemize>
<item> <bf>ZZ</bf> Bewaar bestand en beëindig vi</item>
<item> <bf>:wq</bf> Bewaar het bestand en beëindig vi</item>
<item> <bf>:w</bf> Sla het huidige bestand op</item>
<item> <bf>:w!</bf> Forceer schrijven naar het huidige bestand, als het
bestand alleen lezen is</item>
<item> <bf>:w<it>name</it></bf> Schrijf naar bestand <it>name</it></item>
<item> <bf>:q</bf> Beëindig vi</item>
<item> <bf>:q!</bf> Forceer beëindiging vi (verwerp wijzigingen)</item>
<item> <bf>:e name</bf> Wijzig bestands<it>naam</it></item>
<item> <bf>:e!</bf> opnieuw wijzigen, verwerp veranderingen</item>
<item> <bf>:e + name</bf> wijzig bestand <it>name</it>, beginnend aan het eind
</item>
<item> <bf>:e + n</bf> begin met wijzigen op regel<it>n</it></item>
<item> <bf>:e #</bf> wijzig andere bestand</item>
<item> <bf>:n</bf> wijzig volgende bestand in <it>arglist</it></item>
<item> <bf>:args</bf> geef lijst met bestanden in huidige bestandenlijst
</item>
<item> <bf>:rew</bf> wijzig eerste bestand in bestandenlijst</item>
<item> <bf>:n args</bf> specificeer nieuwe arglist</item>
<item> <bf>:f </bf> toon huidige bestand en regel</item>
<item> <bf>CTRL-G</bf> synoniem voor :f , toon huidige bestand en regel
</item>
<item> <bf>:ta tag </bf> naar tag file entry <it>tag</it></item>
<item> <bf>CTRL-] </bf> :ta, volgende woord is tag</item>
</itemize>
</p>
</sect1>
<sect1><heading>Verplaatsen</heading>
<p>
<itemize>
<item> <bf>Cursorpijlen</bf> Verplaats de cursor</item>
<item> <bf>CTRL-d</bf> Scroll halve pagina omlaag</item>
<item> <bf>CTRL-u</bf> Scroll halve pagina omhoog</item>
<item> <bf>CTRL-f</bf> Scroll een volledige pagina omlaag</item>
<item> <bf>CTRL-b</bf> Scroll een volledige pagina omhoog</item>
<item> <bf>:0</bf> Ga naar begin van het bestand</item>
<item> <bf>:n</bf> Ga naar regelnummer n</item>
<item> <bf>:$</bf> Ga naar einde bestand </item>
<item> <bf>0</bf> Ga naar begin van de regel</item>
<item> <bf>^</bf> Ga naar eerste niet-blanco teken</item>
<item> <bf>$</bf> Ga naar einde regel</item>
<item> <bf>CR</bf> Ga naar het begin van de volgende regel</item>
<item> <bf>-</bf> Ga naar het begin van de vorige regel</item>
<item> <bf>%</bf> Zoek naar overeenkomende blokhaak</item>
<item> <bf>G </bf> ga naar regel (standaard de laatste regel)</item>
<item> <bf>&rsqb&rsqb </bf> volgende sectie/functie</item>
<item> <bf>&lsqb&lsqb </bf> vorige sectie/functie</item>
</itemize>
</p>
</sect1>
<sect1><heading>Regel positionering</heading>
<p>
<itemize>
<item> <bf>H </bf> Linksbovenaan venster</item>
<item> <bf>L </bf> Laatste regel van venster</item>
<item> <bf>M </bf> Middelste regel van venster</item>
<item> <bf>+ </bf> Volgende regel, naar eerst niet-blanco</item>
<item> <bf>- </bf> Vorige regel, naar eerste niet-blanco</item>
<item> <bf>CR </bf> return, zelfde als +</item>
<item> <bf>j </bf> volgende regel, zelfde kolom</item>
<item> <bf>k </bf> vorige regel, zelfde kolom</item>
</itemize>
</p>
</sect1>
<sect1><heading>Positioneren van de cursor</heading>
<p>
<itemize>
<item> <bf>0 </bf> begin van de regel</item>
<item> <bf>$ </bf> einde van de regel</item>
<item> <bf>h </bf> vooruit </item>
<item> <bf>l </bf> terug </item>
<item> <bf>SPACE </bf> zelfde als l </item>
<item> <bf>fx </bf> zoek x voorwaarts</item>
<item> <bf>Fx </bf> zoek x terugwaarts</item>
<item> <bf>; </bf> herhaal laatste f F</item>
<item> <bf>, </bf> inverse van ;</item>
<item> <bf>| </bf> naar aangegeven kolom</item>
<item> <bf>% </bf> zoek overeenkomende { of }</item>
</itemize>
</p>
</sect1>
<sect1><heading>Woorden, zinnen, paragrafen</heading>
<p>
<itemize>
<item> <bf>w </bf> Woord vooruit</item>
<item> <bf>b </bf> Woord achteruit</item>
<item> <bf>e </bf> Einde woord</item>
<item> <bf>) </bf> Naar volgende zin </item>
<item> <bf>( </bf> Zin terug </item>
<item> <bf>} </bf> Naar volgende paragraaf </item>
<item> <bf>{ </bf> Paragraaf terug </item>
<item> <bf>W </bf> Volgende woord</item>
<item> <bf>B </bf> W terug</item>
<item> <bf>E </bf> Naar einde van W</item>
</itemize>
</p>
</sect1>
<sect1><heading>Markeren en terugkeren</heading>
<p>
<itemize>
<item> <bf>``</bf> (druk tweemaal op de ` toets) Vorige context</item>
<item> <bf>''</bf> (druk tweemaal op de ` toets)
Vorige context op eerste niet-blanco teken in regel</item>
<item> <bf>mx</bf> Markeer positie met letter x</item>
<item> <bf>`x</bf> (` en letter x) ga naar markering x</item>
<item> <bf>'x</bf> ga naar markering x op eerste niet-blanco teken in regel
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Correcties tijdens het invoegen</heading>
<p>
<itemize>
<item> <bf>CTRL-h</bf> Verwijder laatste teken</item>
<item> <bf>CTRL-w</bf> Verwijder laatste woord</item>
<item> <bf>erase </bf> Druk op de DELETE toets, zelfde als CTRL-h</item>
<item> <bf>kill </bf> Je kill-toets, verwijder invoer deze regel</item>
<item> <bf>\ </bf> Escapes CTRL-h, DELETE en kill</item>
<item> <bf>ESC </bf> Beëindig het invoegen, terug naar opdrachtenmodus
</item>
<item> <bf>CTRL-? </bf> Interrupt, beëindig invoer</item>
<item> <bf>CTRL-d </bf> Terugtab over <it>autoindent</it></item>
<item> <bf>CTRL-v </bf> Quote niet-afdrukbaar teken</item>
</itemize>
</p>
</sect1>
<sect1><heading>Aanpassen van het scherm</heading>
<p>
<itemize>
<item> <bf>CTRL-l</bf> Maak het scherm schoon en bouw het opnieuw op</item>
<item> <bf>CTRL-r</bf> typ opnieuw, elimineer @lines</item>
<item> <bf>z-CR</bf> ververs scherm, huidige regel bovenkant van venster
</item>
<item> <bf>z-</bf> ververs scherm, huidige regel onderkant van venster
</item>
<item> <bf>z.</bf> ververs scherm, huidige regel in het midden van het venster
</item>
<item> <bf>/pat/z-</bf> <it>pat</it> regel onderaan</item>
<item> <bf>tn</bf> Gebruik n regel venster</item>
<item> <bf>CTRL-e</bf> Scroll venster 1 regel naar beneden</item>
<item> <bf>CTRL-y</bf> Scroll venster 1 regel naar boven</item>
</itemize>
</p>
</sect1>
<sect1><heading>Verwijderen</heading>
<p>
<itemize>
<item> <bf>x</bf> Verwijder het teken onder de cursor</item>
<item> <bf>X</bf> Verwijder het teken voor de cursor</item>
<item> <bf>D</bf> Verwijder tot aan het einde van de regel</item>
<item> <bf>d^</bf> Verwijder terug tot aan het begin van de regel</item>
<item> <bf>dd</bf> Verwijder de huidige regel</item>
<item> <bf>ndd</bf> Verwijder <it>n</it> regel te beginnen met de huidige regel
</item>
<item> <bf>dnw</bf> Verwijder <it>n</it> woorden te beginnen vanaf de cursor
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Invoegen, wijzigen</heading>
<p>
<itemize>
<item> <bf>i</bf> Ga naar invoermode en voeg in voor de cursor</item>
<item> <bf>I</bf> Ga naar invoermode en voeg in voor het eerste niet-blanco
teken</item>
<item> <bf>a</bf> Ga naar invoermode en voeg in na de cursor</item>
<item> <bf>A</bf> Ga naar invoermode en voeg in na het einde van de regel
</item>
<item> <bf>o</bf> Voeg een nieuwe regel in na de regel onder de huidige
regel en ga naar invoermode</item>
<item> <bf>O</bf> Voeg een nieuwe regel in boven de huidige regel en
gan naar invoermode</item>
<item> <bf>r</bf> Vervang het teken onder de cursor (ga NIET naar invoermode)
</item>
<item> <bf>R</bf> Ga naar invoermode en vervang tekens</item>
<item> <bf>C</bf> shift-c. Wijzig rest van regel</item>
<item> <bf>D</bf> shift-d. Verwijder rest van regel</item>
<item> <bf>s</bf> Vervang tekens</item>
<item> <bf>S</bf> Vervang regels</item>
<item> <bf>J</bf> Voeg regels samen</item>
<item> <bf>J</bf> Voeg regels samen</item>
</itemize>
</p>
</sect1>
<sect1><heading>Kopiëren en Plakken</heading>
<p>
De "yank buffer" wordt met <it>IEDERE</it> delete opdracht gevuld, of expliciet
door <bf>Y</bf> en <bf>yy</bf>.
<itemize>
<item> <bf>Y</bf> Kopieer de huidige regel naar de yank buffer</item>
<item> <bf><it>n</it>yy</bf> Kopieer <it>n</it> regels te beginnen vanaf
de huidige regel naar de yank buffer</item>
<item> <bf>p</bf> "Plak" de inhoud van de yank buffer na de cursor
(of onder de huidige regel)</item>
<item> <bf>P</bf> "Plak" de yank buffer voor de cursor (of boven
de huidige regel)</item>
<item> <bf>"<it>x</it>p </bf> "Plak" vanuit buffer x</item>
<item> <bf>"<it>x</it>y </bf> Yank (kopieer) naar buffer x</item>
<item> <bf>"<it>x</it>d </bf> Verplaats naar buffer x</item>
</itemize>
</p>
</sect1>
<sect1><heading>Operators (gebruik dubbel om effect te hebben op regels)
</heading>
<p>
<itemize>
<item> <bf>d </bf> delete (verwijder)</item>
<item> <bf>c </bf> change (wijzig)</item>
<item> <bf>< </bf> linker verschuiving</item>
<item> <bf>> </bf> rechter verschuiving</item>
<item> <bf>! </bf> filter door opdracht</item>
<item> <bf>= </bf> inspringing voor LISP</item>
<item> <bf>y </bf> yank (kopieer) tekst naar buffer</item>
</itemize>
</p>
</sect1>
<sect1><heading>Zoeken en vervangen</heading>
<p>
<itemize>
<item> <bf>/<it>text</it></bf> Zoek voorwaarts naar <it>text</it></item>
<item> <bf>?<it>text</it></bf> Zoek terugwaarts naar <it>text</it></item>
<item> <bf>n</bf> Herhaal de laatste zoekactie in dezelfde richting</item>
<item> <bf>N</bf> Herhaal de laatste zoekactie in tegengestelde richting</item>
<item> <bf>/</bf> Herhaal de laatste zoekactie voorwaarts</item>
<item> <bf>?</bf> Herhaal de laatste zoekactie terugwaarts</item>
<item> <bf>&lsqb addr &rsqb s/van/naar/ &lsqb g &rsqb </bf> Zoek naar het
voorkomen van <it>van</it>
en vervang het in de huidige regel of in de range <bf><it>addr</it></bf>
(twee regelnummers gescheiden door een komma; 1,$ is het gehele bestand)
door <bf><it>naar</it></bf>.
Vervang één voorkomen per regel, of alle voorkomendheden
als <bf><it>g</it></bf> is gespecificeerd.
Bijvoorbeeld, :3,20s/zoekwoord/anderwoord/g zal "zoekwoord" vervangen
door "anderwoord" te beginnen bij regel 3 tot aan regel 20. 'g' voor globaal
betekent dat alle keren dat het "zoekwoord" voorkomt, het moet worden vervangen.
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Algemeen</heading>
<p>
<itemize>
<item> <bf>:sh</bf> Roept een shell aan (kan worden beëindigd met CTRL-d)
</item>
<item> <bf>:!<it>opdracht</it></bf> Roept een shell aan om de
<it>opdracht</it> uit te voeren.
</item>
<item> <bf>:set number</bf> Schakel regelnummering in
</item>
<item> <bf>:set nonumber</bf> Schakel regelnummering uit
</item>
</itemize>
</p>
</sect1>
<sect1><heading>Regeleditor-opdrachten</heading>
<p>
<itemize>
<item> <bf>:</bf> Vertelt <bf>vi</bf> dat de volgende opdrachten die je
uitvoert, regeleditor-opdrachten zullen zijn.</item>
<item> <bf>:sh</bf> Ga tijdelijk naar de shell om een aantal shell-opdrachten
uit te voeren zonder <bf>vi</bf> te verlaten.</item>
<item> <bf>CTRL-d</bf> Beëindig de tijdelijke shell en keer terug naar
<bf>vi</bf> zodat je het huidige venster kunt wijzigen.</item>
<item> <bf>:</bf><it>n</it> Ga naar de <it>n</it>-de regel in de buffer.
</item>
<item> <bf>:</bf><it>x,z</it><bf>w</bf> <it>filename</it> Schrijf regel vanaf
het nummer <it>x</it> tot aan het nummer <it>z</it> naar het nieuwe bestand
genaamd <it>filename</it>.</item>
<item> <bf>:$</bf> Verplaats de cursor naar het begin van de laatste
regel in de buffer.</item>
<item> <bf>:.,$d</bf> Verwijder alle regels vanaf de huidige regel tot aan
de laatste regel.</item>
<item> <bf>:r</bf> <it>filename</it> Voegt de inhoud van het bestand
<it>filename</it> toe onder de huidige regel van de buffer.</item>
<item> <bf>:s</bf><it>/text/new_text/</it> Vervangt het eerste voorkomen van
<it>text</it> op de huidige regel door <it>new_text</it></item>
<item> <bf>:s</bf><it>/text/new_text/g</it> Vervangt ieder voorkomen van
<it>text</it> op de huidige regel door <it>new_text</it></item>
<item> <bf>:g</bf><it>/text/s//new_text/g</it> Wijzigt ieder voorkomen van
<it>text</it> in de buffer naar <it>new_text</it>.</item>
</itemize>
</p>
</sect1>
<sect1><heading> Andere opdrachten</heading>
<p>
<itemize>
<item> <bf>u</bf> Maak de laatste wijziging ongedaan</item>
<item> <bf>U</bf> Herstel de huidige regel</item>
<item> <bf>&tilde</bf> Wijzig grote letter in kleine letter en vice versa
</item>
<item> <bf>J</bf> Voeg de huidige regel samen met de volgende regel</item>
<item> <bf>.</bf> Herhaal laatste tekstwijzigingsopdracht</item>
<item> <bf>CTRL-g</bf> Toon bestandsnaam en regelnummer</item>
</itemize>
</p>
</sect1>
</sect>
<sect><heading>Gerelateerde URL's</heading>
<p>
Aan VIM gerelateerde URL's zijn te vinden bij -
<itemize>
<item> C and C++ Beautifer <url url="http://www.metalab.unc.edu/LDP/HOWTO/C-C++Beautifier-HOWTO.html"></item>
<item> Linux goodies <url url="http://www.aldev.8m.com"> or bij <url url="http://www.aldev.webjump.com"></item>
</itemize>
</p>
</sect>
<sect><heading>Andere Formaten van dit Document</heading>
<p>
Dit document is in 10 verschillende formaten gepubliceerd, te weten -
DVI, Postscript, Latex, LyX, GNU-info, HTML, RTF(Rich Text Format),
Plain-text, Unix man pages en SGML.
<itemize>
<item>
Je kunt dit HOWTO-document als een enkel tar-archief ophalen in HTML, DVI,
Postscript of SGML-formaat vanaf -
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/other-formats/">
of
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/other-formats/">
</item>
<item>Plain tekstformaat is in:
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
of
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
</item>
<item>Vertalingen naar 't Frans, Duits, Spaans, Chinees, Japans staan in
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
of <url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO">
Alle hulp bij het vertalen naar andere talen is welkom.
</item>
</itemize>
Het document is geschreven door gebruik te maken van een tool genaamd
"SGML tool" welke kan worden opgehaald vanaf -
<url url="http://www.xs4all.nl/~cg/sgmltools/">
Bij het compileren van de source krijg je met de volgende opdrachten
<itemize>
<item>sgml2html vim-howto.sgml (een html-bestand)</item>
<item>sgml2rtf vim-howto.sgml (een RTF-bestand)</item>
<item>sgml2latex vim-howto.sgml (een latex-bestand)</item>
</itemize>
Dit document is te vinden op -
<itemize>
<item> <url url="http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html"></item>
</itemize>
Je kunt dit document ook vinden op de volgende mirror-sites -
<itemize>
<item> <url url="http://www.caldera.com/LDP/HOWTO/Vim-HOWTO.html">
</item>
<item> <url url="http://www.WGS.com/LDP/HOWTO/Vim-HOWTO.html">
</item>
<item> <url url="http://www.cc.gatech.edu/linux/LDP/HOWTO/Vim-HOWTO.html">
</item>
<item> <url url="http://www.redhat.com/linux-info/ldp/HOWTO/Vim-HOWTO.html">
</item>
<item> Andere mirror-sites in de buurt (netwerk-adres-wijsheid) zijn te
vinden op <url url="http://metalab.unc.edu/LDP/hmirrors.html">
selecteer een site en ga naar de directory /LDP/HOWTO/Vim-HOWTO.html
</item>
</itemize>
Gebruik het xdvi-programma om dit document in het dvi-formaat te bekijken.
Het xdvi-programma is te vinden in het
tetex-xdvi*.rpm package in Redhat Linux wat kan worden gevonden via de
ControlPanel | Applications | Publishing | TeX menu buttons.
<tscreen><verb>
Geef de volgende opdracht om het dvi-document te lezen -
xdvi -geometry 80x90 howto.dvi
En pas de grootte van het scherm met de muis aan.
Zie de manpage over xdvi.
Gebruik de pijltjestoetsen, Page Up, Page Down keys, om door
het document te manoeuvreren, je kunt ook de
'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' letter
toetsen gebruiken om naar boven, onder, het midden, de volgende
pagina, vorige pagina, enz te gaan.
Druk op 'x' om het expert-menu uit te schakelen.
</verb></tscreen>
Je kunt het postscript-bestand lezen met behulp van het programma 'gv'
(ghostview) of 'ghostscript'.
Het ghostscript programma is te vinden in het ghostscript*.rpm package en
het gv programma is te vinden in het gv*.rpm package in Redhat Linux
welke kan worden gelokaliseerd via de ControlPanel | Applications | Graphics
menu buttons. Het gv programma is veel gebruikersvriendelijker dan ghostscript.
Ghostscript en gv zijn ook voor andere platformen beschikbaar zoals OS/2,
Windows 95 en NT.
<tscreen><verb>
Geef de volgende opdracht om het postscript document te lezen -
gv howto.ps
Met gebruik van ghostscript geef je op -
ghostscript howto.ps
</verb></tscreen>
Je kunt het HTML-formaat document lezen met Netscape Navigator, Microsoft
Internet explorer, Redhat Baron Web browser of enige andere webbrowsers.
Je kunt de latex, LyX uitvoer lezen met LyX een "X-Windows" front end naar
latex.
</p>
</sect>
<sect><heading>Copyright Notice</heading>
<p>
Copyright policy is GNU/GPL as per LDP (Linux Documentation project).
LDP is a GNU/GPL project.
Additional restrictions are - you must retain the author's name, email address
and this copyright notice on all the copies. If you make any changes
or additions to this document than you should
intimate all the authors of this document.
</p>
</sect>
</article>
</linuxdoc>
|