Mirror of the Vim source from https://github.com/vim/vim
Revision | 8ff7fd162d3cf15129e377401e49f8210d62aee6 (tree) |
---|---|
Zeit | 2004-09-14 05:26:32 |
Autor | vimboss |
Commiter | vimboss |
updated for version 7.0016
@@ -1,4 +1,4 @@ | ||
1 | -*eval.txt* For Vim version 7.0aa. Last change: 2004 Aug 30 | |
1 | +*eval.txt* For Vim version 7.0aa. Last change: 2004 Sep 13 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -930,7 +930,7 @@ | ||
930 | 930 | synIDattr( {synID}, {what} [, {mode}]) |
931 | 931 | String attribute {what} of syntax ID {synID} |
932 | 932 | synIDtrans( {synID}) Number translated syntax ID of {synID} |
933 | -system( {expr}) String output of shell command {expr} | |
933 | +system( {expr} [, {input}]) String output of shell command/filter {expr} | |
934 | 934 | tempname() String name for a temporary file |
935 | 935 | tolower( {expr}) String the String {expr} switched to lowercase |
936 | 936 | toupper( {expr}) String the String {expr} switched to uppercase |
@@ -1111,7 +1111,7 @@ | ||
1111 | 1111 | feature, -1 is returned. |
1112 | 1112 | |
1113 | 1113 | *col()* |
1114 | -col({expr}) The result is a Number, which is the column of the file | |
1114 | +col({expr}) The result is a Number, which is the byte index of the column | |
1115 | 1115 | position given with {expr}. The accepted positions are: |
1116 | 1116 | . the cursor position |
1117 | 1117 | $ the end of the cursor line (the result is the |
@@ -2653,10 +2653,15 @@ | ||
2653 | 2653 | highlight the character. Highlight links given with |
2654 | 2654 | ":highlight link" are followed. |
2655 | 2655 | |
2656 | - *system()* | |
2657 | -system({expr}) Get the output of the shell command {expr}. Note: newlines | |
2658 | - in {expr} may cause the command to fail. The characters in | |
2659 | - 'shellquote' and 'shellxquote' may also cause trouble. | |
2656 | +system({expr} [, {input}]) *system()* *E677* | |
2657 | + Get the output of the shell command {expr}. | |
2658 | + When {input} is given, this string is written to a file and | |
2659 | + passed as stdin to the command. The string is written as-is, | |
2660 | + you need to take care of using the correct line separators | |
2661 | + yourself. | |
2662 | + Note: newlines in {expr} may cause the command to fail. The | |
2663 | + characters in 'shellquote' and 'shellxquote' may also cause | |
2664 | + trouble. | |
2660 | 2665 | This is not to be used for interactive commands. |
2661 | 2666 | The result is a String. Example: > |
2662 | 2667 |
@@ -1,4 +1,4 @@ | ||
1 | -*index.txt* For Vim version 7.0aa. Last change: 2004 Jul 11 | |
1 | +*index.txt* For Vim version 7.0aa. Last change: 2004 Sep 07 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -1103,6 +1103,7 @@ | ||
1103 | 1103 | |:cunmenu| :cunme[nu] remove menu for Command-line mode |
1104 | 1104 | |:cwindow| :cw[indow] open or close quickfix window |
1105 | 1105 | |:delete| :d[elete] delete lines |
1106 | +|:delmarks| :delm[arks] delete marks | |
1106 | 1107 | |:debug| :deb[ug] run a command in debugging mode |
1107 | 1108 | |:debuggreedy| :debugg[reedy] read debug mode commands from normal input |
1108 | 1109 | |:delcommand| :delc[ommand] delete user-defined command |
@@ -1,4 +1,4 @@ | ||
1 | -*motion.txt* For Vim version 7.0aa. Last change: 2004 Jul 25 | |
1 | +*motion.txt* For Vim version 7.0aa. Last change: 2004 Sep 07 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -732,6 +732,24 @@ | ||
732 | 732 | :marks aB |
733 | 733 | < to list marks 'a' and 'B'. {not in Vi} |
734 | 734 | |
735 | + *:delm* *:delmarks* | |
736 | +:delm[arks] {marks} Delete the specified marks. Marks that can be deleted | |
737 | + include A-Z and 0-9. You cannot delete the ' mark. | |
738 | + They can be specified by giving the list of mark | |
739 | + names, or with a range, separated with a dash. Spaces | |
740 | + are ignored. Examples: > | |
741 | + :delmarks a deletes mark a | |
742 | + :delmarks a b 1 deletes marks a, b and 1 | |
743 | + :delmarks Aa deletes marks A and a | |
744 | + :delmarks p-z deletes marks in the range p to z | |
745 | + :delmarks ^.[] deletes marks ^ . [ ] | |
746 | + :delmarks \" deletes mark " | |
747 | +< {not in Vi} | |
748 | + | |
749 | +:delm[arks]! Delete all marks for the current buffer, but not marks | |
750 | + A-Z or 0-9. | |
751 | + {not in Vi} | |
752 | + | |
735 | 753 | A mark is not visible in any way. It is just a position in the file that is |
736 | 754 | remembered. Do not confuse marks with named registers, they are totally |
737 | 755 | unrelated. |
@@ -1,4 +1,4 @@ | ||
1 | -*pattern.txt* For Vim version 7.0aa. Last change: 2004 Jul 24 | |
1 | +*pattern.txt* For Vim version 7.0aa. Last change: 2004 Sep 07 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -431,7 +431,7 @@ | ||
431 | 431 | x x a character with no special meaning matches itself |
432 | 432 | |
433 | 433 | |/[]| [] \[] any character specified inside the [] |
434 | -|/\%[]| \%[] \%[] a list of optionally matched atoms | |
434 | +|/\%[]| \%[] \%[] a sequence of optionally matched atoms | |
435 | 435 | |
436 | 436 | |/\c| \c \c ignore case |
437 | 437 | |/\C| \C \C match case |
@@ -442,6 +442,12 @@ | ||
442 | 442 | |/\Z| \Z \Z ignore differences in Unicode "combining characters". |
443 | 443 | Useful when searching voweled Hebrew or Arabic text. |
444 | 444 | |
445 | +|/\%d| \%d \%d match specified decimal character (eg \%d123 | |
446 | +|/\%x| \%x \%x match specified hex character (eg \%x2a) | |
447 | +|/\%o| \%o \%o match specified octal character (eg \%o040) | |
448 | +|/\%u| \%u \%u match specified multibyte character (eg \%u20ac) | |
449 | +|/\%U| \%U \%U match specified large multibyte character (eg | |
450 | + \%U12345678) | |
445 | 451 | |
446 | 452 | Example matches ~ |
447 | 453 | \<\I\i* or |
@@ -988,6 +994,11 @@ | ||
988 | 994 | \t <Tab> |
989 | 995 | \r <CR> (NOT end-of-line!) |
990 | 996 | \b <BS> |
997 | + \d123 decimal number of character | |
998 | + \o40 octal number of character up to 0377 | |
999 | + \x20 hexadecimal number of character up to 0xff | |
1000 | + \u20AC hex. number of multibyte character up to 0xffff | |
1001 | + \U1234 hex. number of multibyte character up to 0xffffffff | |
991 | 1002 | NOTE: The other backslash codes mentioned above do not work inside |
992 | 1003 | []! |
993 | 1004 | - Matching with a collection can be slow, because each character in |
@@ -996,7 +1007,7 @@ | ||
996 | 1007 | much faster than "[0-9]" and matches the same characters. |
997 | 1008 | |
998 | 1009 | */\%[]* *E69* *E70* *E369* |
999 | -\%[] A list of optionally matched atoms. This always matches. | |
1010 | +\%[] A sequence of optionally matched atoms. This always matches. | |
1000 | 1011 | It matches as much of the list of atoms it contains as possible. Thus |
1001 | 1012 | it stops at the first atom that doesn't match. For example: > |
1002 | 1013 | /r\%[ead] |
@@ -1011,6 +1022,17 @@ | ||
1011 | 1022 | < Matches the words "r", "re", "ro", "rea", "roa", "read" and "road". |
1012 | 1023 | {not available when compiled without the +syntax feature} |
1013 | 1024 | |
1025 | + */\%d* */\%x* */\%o* */\%u* */\%U/* *E678* | |
1026 | + | |
1027 | +\%d123 Matches the character specified with a decimal number. Must be | |
1028 | + followed by a non-digit. | |
1029 | +\%o40 Matches the character specified with an octal number up to 0377. | |
1030 | + Numbers below 040 must be followed by a non-octal digit or a non-digit. | |
1031 | +\%x2a Matches the character specified with up to two hexadecimal characters. | |
1032 | +\%u20AC Matches the character specified with up to four hexadecimal | |
1033 | + characters. | |
1034 | +\%U1234abcd Matches the character specified with up to eight hexadecimal | |
1035 | + characters. | |
1014 | 1036 | |
1015 | 1037 | ============================================================================== |
1016 | 1038 | 7. Ignoring case in a pattern */ignorecase* |
@@ -1,4 +1,4 @@ | ||
1 | -*pi_netrw.txt For Vim version 6.2. Last change: Jul 30, 2004 | |
1 | +*pi_netrw.txt For Vim version 6.2. Last change: Sep 10, 2004 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Charles E. Campbell, Jr. |
@@ -17,9 +17,10 @@ | ||
17 | 17 | 5. Ex Commands.........................................|netrw-ex| |
18 | 18 | 6. Variables and Options...............................|netrw-var| |
19 | 19 | 7. Directory Browser...................................|netrw-browse| |
20 | -8. Debugging...........................................|netrw-debug| | |
21 | -9. History.............................................|netrw-history| | |
22 | -10. Credits.............................................|netrw-credits| | |
20 | +8. Problems and Fixes..................................|netrw-problems| | |
21 | +9. Debugging...........................................|netrw-debug| | |
22 | +10. History.............................................|netrw-history| | |
23 | +11. Credits.............................................|netrw-credits| | |
23 | 24 | |
24 | 25 | The functionality mentioned here is done via using |standard-plugin| |
25 | 26 | techniques. This plugin is only available if |
@@ -114,17 +115,22 @@ | ||
114 | 115 | =0 use default ftp (uid password) |
115 | 116 | =1 use alternate ftp method (user uid password) |
116 | 117 | g:netrw_ftpmode ="binary" (default) |
117 | - ="ascii" (or your choice) | |
118 | + ="ascii" | |
118 | 119 | g:netrw_uid (ftp) user-id, retained on a per-session basis |
119 | 120 | g:netrw_passwd (ftp) password, retained on a per-session basis |
120 | - g:netrw_win95ftp =0 use unix-style ftp even if win95/win98/winME | |
121 | - =1 use default method to do ftp | |
121 | + g:netrw_win95ftp =1 if using Win95, will remove four trailing blank | |
122 | + lines that o/s's ftp "provides" on transfers | |
123 | + =0 force normal ftp behavior (no trailing line | |
124 | + removal) | |
122 | 125 | g:netrw_cygwin =1 assume scp under windows is from cygwin |
126 | + Also permits network browsing to use | |
127 | + ls with time and size sorting | |
123 | 128 | (default if windows) |
124 | - =0 assume scp under windows accepts | |
125 | - windows-style paths (default otherwise) | |
126 | - g:netrw_use_nt_rcp=0 don't use the rcp of WinNT, Win2000 and WinXP (default) | |
127 | - =1 use the rcp of WinNT,... in binary mode | |
129 | + =0 assume Windows' scp accepts windows-style paths | |
130 | + Network browsing uses dir instead of ls | |
131 | + This option is ignored if you're using unix | |
132 | + g:netrw_use_nt_rcp=0 don't use the rcp of WinNT, Win2000 and WinXP | |
133 | + =1 use WinNT's rcp in binary mode (default) | |
128 | 134 | |
129 | 135 | PATHS *netrw-path* |
130 | 136 |
@@ -167,7 +173,7 @@ | ||
167 | 173 | clean up. |
168 | 174 | |
169 | 175 | One may modify any protocol's implementing external application |
170 | -by settinbg a variable (ex. scp uses the variable g:netrw_scp_cmd, | |
176 | +by setting a variable (ex. scp uses the variable g:netrw_scp_cmd, | |
171 | 177 | which is defaulted to "scp -q"). |
172 | 178 | |
173 | 179 | Ftp, an old protocol, seems to be blessed by numerous implementations. |
@@ -529,6 +535,7 @@ | ||
529 | 535 | i..........Long Listing............................|netrw-i| |
530 | 536 | <c-l>......Refreshing the Listing..................|netrw-ctrl-l| |
531 | 537 | o..........Browsing with a Horizontal Split........|netrw-o| |
538 | + p..........Preview Window..........................|netrw-p| | |
532 | 539 | q..........Listing Bookmarks.......................|netrw-q| |
533 | 540 | r..........Reversing Sorting Order.................|netrw-r| |
534 | 541 | R..........Renaming Files or Directories...........|netrw-R| |
@@ -542,14 +549,16 @@ | ||
542 | 549 | ------- ----------- |
543 | 550 | Command Explanation |
544 | 551 | ------- ----------- |
545 | - ? Causes Netrw to issue help | |
552 | +< ? Causes Netrw to issue help | |
546 | 553 | <cr> Netrw will enter the directory or read the file |
547 | 554 | <del> Netrw will attempt to remove the file/directory |
548 | 555 | d Make a directory |
549 | 556 | D Netrw will attempt to remove the file(s)/directory(ies) |
550 | 557 | R Netrw will attempt to rename the file(s)/directory(ies) |
551 | 558 | - Makes Netrw go up one directory |
552 | - a Show all of a directory (temporarily ignore g:netrw_list_hide) | |
559 | + a Toggles between normal display, | |
560 | + hiding (suppress display of files matching g:netrw_list_hide) | |
561 | + showing (display only files which match g:netrw_list_hide) | |
553 | 562 | c Make current browsing directory the current directory |
554 | 563 | <c-h> Edit file hiding list |
555 | 564 | i Toggles between long and short listing |
@@ -561,12 +570,18 @@ | ||
561 | 570 | v Enter the file/directory under the cursor in a new browser |
562 | 571 | window. A vertical split is used. |
563 | 572 | x Apply a function to a file. |
564 | -< | |
573 | + | |
565 | 574 | NETRW BROWSER VARIABLES *netrw-browse-var* |
566 | 575 | > |
567 | 576 | --- ----------- |
568 | 577 | Var Explanation |
569 | 578 | --- ----------- |
579 | +< g:netrw_alto change from above splitting to | |
580 | + below splitting by setting this | |
581 | + variable (see |netrw-o|) | |
582 | + g:netrw_altv change from left splitting to | |
583 | + right splitting by setting this | |
584 | + variable (see |netrw-v|) | |
570 | 585 | g:netrw_ftp_browse_reject ftp can produce a number of errors |
571 | 586 | and warnings that can show up as |
572 | 587 | "directories" and "files" in the |
@@ -576,6 +591,10 @@ | ||
576 | 591 | browsing directory. The browsing |
577 | 592 | directory is contained in b:netrw_curdir |
578 | 593 | g:netrw_list_cmd command for listing remote directories |
594 | + g:netrw_ftp_list_cmd options for passing along to ftp for | |
595 | + directory listing. Defaults: | |
596 | + unix or g:netrw_cygwin set: : "ls -lF" | |
597 | + otherwise "dir" | |
579 | 598 | g:netrw_list_hide comma separated list of patterns for |
580 | 599 | hiding files |
581 | 600 | g:netrw_local_mkdir command for making a local directory |
@@ -593,7 +612,7 @@ | ||
593 | 612 | comma-separated pattern sequence |
594 | 613 | g:netrw_timefmt specify format string to strftime() (%c) |
595 | 614 | g:netrw_winsize specify initial size of new o/v windows |
596 | -< | |
615 | + | |
597 | 616 | INTRODUCTION TO DIRECTORY BROWSING |
598 | 617 | |
599 | 618 | Netrw supports the browsing of directories on the local system and on remote |
@@ -711,10 +730,10 @@ | ||
711 | 730 | |
712 | 731 | HIDING FILES OR DIRECTORIES *g:netrw-a* *g:netrw_list_hide* |
713 | 732 | |
714 | -The "a" map toggles the netrw vim file browser (both remote and local) between | |
715 | -displaying hidden files (show-all) versus hiding files. For files to be | |
716 | -hidden, the g:netrw_list_hide variable must hold a comma delimited list of | |
717 | -patterns (ex. \.obj) to be hidden from normal listing. (see |netrw-h|) | |
733 | +Netrw's browsing facility allows one to use the hiding list in one of | |
734 | +three ways: ignore it, hide files which match, and show only those files | |
735 | +which match. The g:netrw_list_hide variable holds a comma delimited list | |
736 | +of patterns (ex. \.obj) which specify the hiding list. (also see |netrw-h|) | |
718 | 737 | |
719 | 738 | |
720 | 739 | EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* |
@@ -729,7 +748,20 @@ | ||
729 | 748 | |
730 | 749 | Normally one enters a file or directory using the <cr>. However, the "o" map |
731 | 750 | allows one to open a new window to hold the new directory listing or file. A |
732 | -horizontal split is used. (also see |netrw-v|) | |
751 | +horizontal split is used. (for vertical splitting, see |netrw-v|) | |
752 | + | |
753 | +Normally, the o key splits the window horizontally with the new window | |
754 | +and cursor at the top. To change to splitting the window horizontally | |
755 | +with the new window and cursor at the bottom, have | |
756 | + | |
757 | + let g:netrw_alto = 1 | |
758 | + | |
759 | +in your <.vimrc>. | |
760 | + | |
761 | +PREVIEW WINDOW | |
762 | + | |
763 | +One may use a preview window (currently only for local browsing) by using | |
764 | +the "p" key when the cursor is atop the desired filename to be previewed. | |
733 | 765 | |
734 | 766 | |
735 | 767 | SELECTING SORTING STYLE *netrw-s* |
@@ -764,7 +796,15 @@ | ||
764 | 796 | |
765 | 797 | Normally one enters a file or directory using the <cr>. However, the "v" |
766 | 798 | map allows one to open a new window to hold the new directory listing or |
767 | -file. A vertical split is used. (also see |netrw-o|) | |
799 | +file. A vertical split is used. (for horizontal splitting, see |netrw-o|) | |
800 | + | |
801 | +Normally, the v key splits the window vertically with the new window | |
802 | +and cursor at the left. To change to splitting the window vertically | |
803 | +with the new window and cursor at the right, have | |
804 | + | |
805 | + let g:netrw_altv = 1 | |
806 | + | |
807 | +in your <.vimrc>. | |
768 | 808 | |
769 | 809 | |
770 | 810 | CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* |
@@ -831,7 +871,66 @@ | ||
831 | 871 | |
832 | 872 | |
833 | 873 | ============================================================================== |
834 | -8. Debugging *netrw-debug* | |
874 | +8. Problems and Fixes *netrw-problems* | |
875 | + | |
876 | + (This section is likely to grow as I get feedback) | |
877 | + (also see |netrw-debug|) | |
878 | + | |
879 | + P1. I use windows 95, and my ftp dumps four blank lines at the | |
880 | + end of every read. | |
881 | + | |
882 | + See |netrw-fixup|, and put the following into your | |
883 | + <.vimrc> file: | |
884 | + | |
885 | + let g:netrw_win95ftp= 1 | |
886 | + | |
887 | + | |
888 | + | |
889 | + P2. I use windows, and my network browsing with ftp doesn't sort by | |
890 | + time or size | |
891 | + | |
892 | + Windows' ftp has a minimal support for ls (ie. it doesn't | |
893 | + accept sorting options). It doesn't support the -F which | |
894 | + gives an explanatory character (ABC/ for "ABC is a directory"). | |
895 | + Netrw uses dir to get its short and long listings. If you | |
896 | + think your ftp does support a full-up ls, put the following | |
897 | + into your <.vimrc>: | |
898 | + | |
899 | + let g:netrw_ftp_list_cmd= "ls -lF" | |
900 | + | |
901 | + Alternatively, if you have cygwin on your Windows box, put | |
902 | + into your <.vimrc>: | |
903 | + | |
904 | + let g:netrw_cygwin= 1 | |
905 | + | |
906 | + P3. I tried rcp://user@host/ (or protocol other than ftp) and netrw | |
907 | + used ssh! That wasn't what I asked for... | |
908 | + | |
909 | + Netrw has two methods for browsing remote directories: ssh | |
910 | + and ftp. Unless you specify ftp specifically, ssh is used. | |
911 | + When it comes time to do download a file (not just a directory | |
912 | + listing), netrw will use the given protocol to do so. | |
913 | + | |
914 | + P4. I would like long listings to be the default. | |
915 | + | |
916 | + let g:netrw_longlist=1 | |
917 | + | |
918 | + P5. My times come up oddly in local browsing | |
919 | + | |
920 | + Does your system's strftime() accept the "%c" to yield dates | |
921 | + such as "Sun Apr 27 11:49:23 1997"? If not, do a "man strftime" | |
922 | + and find out what option should be used. Then put it into | |
923 | + your <.vimrc>: | |
924 | + let g:netrw_timefmt= "%X" (where X is the option) | |
925 | + | |
926 | + P6. I don't want my current directory changing just because I'm | |
927 | + browsing somewhere. | |
928 | + | |
929 | + let g:netrw_keepdir= 1 | |
930 | + | |
931 | + | |
932 | +============================================================================== | |
933 | +9. Debugging *netrw-debug* | |
835 | 934 | |
836 | 935 | The <netrw.vim> script is typically available as: |
837 | 936 |
@@ -878,8 +977,37 @@ | ||
878 | 977 | drchipNOSPAM at campbellfamily.biz - NOSPAM |
879 | 978 | |
880 | 979 | ============================================================================== |
881 | -9. History *netrw-history* | |
980 | +10. History *netrw-history* | |
882 | 981 | |
982 | + v48: * One may use ftp to do remote host file browsing | |
983 | + * (windows and !cygwin) remote browsing with ftp can now use | |
984 | + the "dir" command internally to provide listings | |
985 | + * g:netrw_keepdir now allows one to keep the initial current | |
986 | + directory as the current directory (normally the local | |
987 | + file browser makes the currently viewed directory the | |
988 | + current directory) | |
989 | + * g:netrw_alto and g:netrw_altv now support alternate placement | |
990 | + of windows started with o or v | |
991 | + * Nread ? and Nwrite ? now uses echomsg (instead of echo) so | |
992 | + :messages can repeat showing the help | |
993 | + * bugfix: avoids problems with partial matches of directory names | |
994 | + to prior buffers with longer names | |
995 | + * one can suppress error messages with g:netrw_quiet | |
996 | + * ctrl-h used instead of <Leader>h for editing hiding list | |
997 | + * one may edit the sorting sequence with the S map | |
998 | + * now allows confirmation of deletion with [y(es) n(o) a(ll) q(uit)] | |
999 | + * the "x" map now handles special file viewing with: | |
1000 | + (windows) rundll32 url.dll | |
1001 | + (gnome) gnome-open | |
1002 | + (kde) kfmclient | |
1003 | + If none of these are on the executable path, then | |
1004 | + NetrwFileHandlers.vim is used. | |
1005 | + * directory bookmarking during both local and remote browsing | |
1006 | + implemented | |
1007 | + * one may view all, use the hiding list to suppress, or use the | |
1008 | + hiding list to show-only remote and local file/directory listings | |
1009 | + * improved unusual file and directory name handling | |
1010 | + * preview window support | |
883 | 1011 | v47: * now handles local directory browsing. |
884 | 1012 | v46: * now handles remote directory browsing |
885 | 1013 | * g:netrw_silent (if 1) will cause all transfers to be silent'd |
@@ -912,7 +1040,7 @@ | ||
912 | 1040 | |
913 | 1041 | |
914 | 1042 | ============================================================================== |
915 | -10. Credits *netrw-credits* | |
1043 | +11. Credits *netrw-credits* | |
916 | 1044 | |
917 | 1045 | Vim editor by Bram Moolenaar (Thanks, Bram!) |
918 | 1046 | dav support by C Campbell |
@@ -1,4 +1,4 @@ | ||
1 | -*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 01 | |
1 | +*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 13 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -4014,6 +4014,11 @@ | ||
4014 | 4014 | highlight comment ctermfg=green guifg=green |
4015 | 4015 | endif |
4016 | 4016 | |
4017 | + *E679* | |
4018 | +Do make sure this syncolor.vim script does not use a "syntax on", set the | |
4019 | +'background' option or uses a "colorscheme" command, because it results in an | |
4020 | +endless loop. | |
4021 | + | |
4017 | 4022 | Note that when a color scheme is used, there might be some confusion whether |
4018 | 4023 | your defined colors are to be used or the colors from the scheme. This |
4019 | 4024 | depends on the color scheme file. See |:colorscheme|. |
@@ -1218,11 +1218,16 @@ | ||
1218 | 1218 | /\%>c pattern.txt /*\/\\%>c* |
1219 | 1219 | /\%>l pattern.txt /*\/\\%>l* |
1220 | 1220 | /\%>v pattern.txt /*\/\\%>v* |
1221 | +/\%U/ pattern.txt /*\/\\%U\/* | |
1221 | 1222 | /\%[] pattern.txt /*\/\\%[]* |
1222 | 1223 | /\%^ pattern.txt /*\/\\%^* |
1223 | 1224 | /\%c pattern.txt /*\/\\%c* |
1225 | +/\%d pattern.txt /*\/\\%d* | |
1224 | 1226 | /\%l pattern.txt /*\/\\%l* |
1227 | +/\%o pattern.txt /*\/\\%o* | |
1228 | +/\%u pattern.txt /*\/\\%u* | |
1225 | 1229 | /\%v pattern.txt /*\/\\%v* |
1230 | +/\%x pattern.txt /*\/\\%x* | |
1226 | 1231 | /\& pattern.txt /*\/\\&* |
1227 | 1232 | /\( pattern.txt /*\/\\(* |
1228 | 1233 | /\(\) pattern.txt /*\/\\(\\)* |
@@ -1811,6 +1816,8 @@ | ||
1811 | 1816 | :delete change.txt /*:delete* |
1812 | 1817 | :delf eval.txt /*:delf* |
1813 | 1818 | :delfunction eval.txt /*:delfunction* |
1819 | +:delm motion.txt /*:delm* | |
1820 | +:delmarks motion.txt /*:delmarks* | |
1814 | 1821 | :di change.txt /*:di* |
1815 | 1822 | :diffg diff.txt /*:diffg* |
1816 | 1823 | :diffget diff.txt /*:diffget* |
@@ -3533,6 +3540,8 @@ | ||
3533 | 3540 | E674 print.txt /*E674* |
3534 | 3541 | E675 print.txt /*E675* |
3535 | 3542 | E676 options.txt /*E676* |
3543 | +E677 eval.txt /*E677* | |
3544 | +E678 pattern.txt /*E678* | |
3536 | 3545 | E68 pattern.txt /*E68* |
3537 | 3546 | E69 pattern.txt /*E69* |
3538 | 3547 | E70 pattern.txt /*E70* |
@@ -5476,6 +5485,7 @@ | ||
5476 | 5485 | netrw-options pi_netrw.txt /*netrw-options* |
5477 | 5486 | netrw-passwd pi_netrw.txt /*netrw-passwd* |
5478 | 5487 | netrw-path pi_netrw.txt /*netrw-path* |
5488 | +netrw-problems pi_netrw.txt /*netrw-problems* | |
5479 | 5489 | netrw-protocol pi_netrw.txt /*netrw-protocol* |
5480 | 5490 | netrw-q pi_netrw.txt /*netrw-q* |
5481 | 5491 | netrw-r pi_netrw.txt /*netrw-r* |
@@ -6554,6 +6564,7 @@ | ||
6554 | 6564 | vim-arguments starting.txt /*vim-arguments* |
6555 | 6565 | vim-default-editor gui_w32.txt /*vim-default-editor* |
6556 | 6566 | vim-dev intro.txt /*vim-dev* |
6567 | +vim-indent indent.txt /*vim-indent* | |
6557 | 6568 | vim-kpart gui_x11.txt /*vim-kpart* |
6558 | 6569 | vim-mac intro.txt /*vim-mac* |
6559 | 6570 | vim-modes intro.txt /*vim-modes* |
@@ -1,4 +1,4 @@ | ||
1 | -*todo.txt* For Vim version 7.0aa. Last change: 2004 Sep 06 | |
1 | +*todo.txt* For Vim version 7.0aa. Last change: 2004 Sep 13 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -30,34 +30,40 @@ | ||
30 | 30 | *known-bugs* |
31 | 31 | -------------------- Known bugs and current work ----------------------- |
32 | 32 | |
33 | +Endless loop when "syntax reset" in ~/.vim/after/syntax/syncolor.vim. | |
34 | +Crash when using ":set background=dark". Solved! | |
35 | +Limit init_highlight() to five recursive calls? | |
36 | + patch for Vim 6.3 for free_oldval and init_highlight()? | |
37 | + | |
38 | +Crash with long line. (Walter Briscoe, Sep 13) | |
39 | + | |
40 | +Add fix for appending BOM to 6.3? Reported by Alex Jakushev. | |
41 | + | |
42 | +Win32 console doesn't compile. Does GetCommandLineW() work for non-GUI? | |
43 | +(Dave Roberts) If yes, then move the functions to another file. | |
44 | +link with kernel32.lib? | |
45 | + | |
33 | 46 | Aborting at the ATTENTION prompt causes trouble: |
34 | 47 | buffer remains active, nwindows isn't closed (fixed in buffer.c) |
35 | 48 | alternate buffer gets "read error" flag. |
36 | 49 | ":sbuf" and ":ball" leave an empty window behind. |
37 | 50 | Change in handle_swap_exists() also in 6.3? |
51 | +Add enter_cleanup() and leave_cleanup() also in 6.3? | |
52 | + buffer.c | |
53 | + ex_eval.c | |
54 | + proto/ex_eval.pro | |
55 | + structs.h | |
56 | + vim.h | |
38 | 57 | |
39 | 58 | Win32: When the path to a file has Russian characters, ":cd %:p:h" doesn't |
40 | 59 | work. (Valery Kondakoff) |
41 | 60 | Solved in os_mswin.c. Add to 6.3? |
42 | 61 | |
62 | +Valencia: executable("xxd.exe") returns true while "!xxd" doesn't work. | |
63 | + | |
43 | 64 | For version 7.0: |
65 | + | |
44 | 66 | - Include many PATCHES: |
45 | - 8 Add functions: | |
46 | - setbufline() set line in any buffer (patch from Yegappan | |
47 | - Lakshmanan, 2003 Jan 21) | |
48 | - filter() Patch from Yegappan Lakshmanan, 2004 Jul 11 | |
49 | - 8 Make it possible to delete marks. Charles Campbell has a patch that | |
50 | - does this with the markclear() function (2004 Jan 9). | |
51 | - And the ":delmark" command (2004 Feb 9) | |
52 | - http://mysite.verizon.net/astronaut/vim/index.html#Patch | |
53 | - ~/tmp/ptch.delmark.bz2 | |
54 | - ~/tmp/ptch.markclear | |
55 | - Implement setmark(markname, lnum [, col [, filename]]) instead? | |
56 | - When "lnum" is zero delete the mark. | |
57 | - When "filename" has no wildcards and there is no matching buffer, add | |
58 | - the buffer (unlisted). | |
59 | - Patch for \xnn (Ciaran McCreesh) 2004 Jul 10 | |
60 | - http://dev.gentoo.org/~ciaranm/patches/vim/vim-7.00a-regexp-numbered-characters-r5.patch | |
61 | 67 | 7 Add 'taglistfiles' option, show file name and type when listing matching |
62 | 68 | tags name with CTRL-D completion. Patch from Yegappan Lakshmanan. |
63 | 69 | 2004 Jul 11 |
@@ -94,9 +100,9 @@ | ||
94 | 100 | 7 Completion of network shares, patch by Yasuhiro Matsumoto. |
95 | 101 | Update 2004 Sep 6. |
96 | 102 | How does this work? Missing comments. |
97 | - gettext() Translate a message. (Patch from Yasuhiro Matsumoto) | |
98 | - Update 2004 Sep 5 | |
99 | - Missing docs. Search in 'runtimepath'? | |
103 | + gettext() Translate a message. (Patch from Yasuhiro Matsumoto) | |
104 | + Update 2004 Sep 10 | |
105 | + More docs. Search in 'runtimepath'? | |
100 | 106 | How to get the messages into the .po files? |
101 | 107 | --- did not respond (yet) -- |
102 | 108 | 7 Make "5dd" on last-but-one-line not delete anything (Vi compatible). |
@@ -198,6 +204,7 @@ | ||
198 | 204 | http://www.vim.org/scripts/script.php?script_id=747 |
199 | 205 | http://sourceforge.net/projects/insenvim |
200 | 206 | http://cedet.sourceforge.net/intellisense.shtml (for Emacs) |
207 | + Ivan Villanueva has something for Java. | |
201 | 208 | - PERSISTENT UNDO: store undo in a file. |
202 | 209 | Support multiple threads. Show the list of changes in a window to be able |
203 | 210 | to select a version. |
@@ -262,7 +269,27 @@ | ||
262 | 269 | 2004). Should also work for 'filetype'. |
263 | 270 | |
264 | 271 | Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav |
265 | -Smilauer, 2004 Sep 5) | |
272 | +Smilauer, 2004 Sep 13) | |
273 | + | |
274 | +Win32: In 'fileencodings' allow using "acp" for the active codepage. Useful | |
275 | +value: "ucs-bom,utf-8,acp,latin1" | |
276 | + | |
277 | +For manipulating buffers without opening a new window, support Virtual | |
278 | +windows. Example: | |
279 | + :virtwin let l = GetBufLine(4, 10) | |
280 | + :fun GetBufLine(bufnr, lnum) | |
281 | + : exe "buffer " . a:bufnr | |
282 | + : return getline(lnum) | |
283 | + :endfun | |
284 | +The getline() and setline() functions could work for other buffers, using a | |
285 | +Virtual window. | |
286 | +A Virtual window only exists for one command. There can be several (for | |
287 | +nested commands). The window works as if it comes after the last window, size | |
288 | +is the Vim window size, but it's never displayed. | |
289 | + | |
290 | +Win32: In the generated batch files, use $VIMRUNTIME if it's set. Examples by | |
291 | +Mathias Michaelis (2004 Sep 6) | |
292 | +Also place vimtutor.bat in %windir%? | |
266 | 293 | |
267 | 294 | |
268 | 295 | Vi incompatibility: |
@@ -854,6 +881,7 @@ | ||
854 | 881 | dithering to make grey text? |
855 | 882 | - Add a flag in 'printoptions' to add an empty page to make the total |
856 | 883 | number even. "addempty"? (Mike Williams) |
884 | + - Respect 'linebreak'. Perhaps also 'showbreak'? | |
857 | 885 | - Should interpreted CTRL-L as a page break. |
858 | 886 | - Grey line numbers are not always readable. Add field in 'printoptions'. |
859 | 887 | Default to black when no syntax highlighting. |
@@ -1457,6 +1485,13 @@ | ||
1457 | 1485 | Packages are loaded automatically when first used, from |
1458 | 1486 | $VIMRUNTIME/packages (or use a search path). |
1459 | 1487 | 7 Make globpath() also work with "**" and upwards search. (Brian Medley) |
1488 | +7 Add the markclear() function to delete a mark in another buffer. Charles | |
1489 | + Campbell (2004 Jan 9) | |
1490 | + http://mysite.verizon.net/astronaut/vim/index.html#Patch | |
1491 | + Implement setmark(markname, lnum [, col [, filename]]) instead? | |
1492 | + When "lnum" is zero delete the mark. | |
1493 | + When "filename" has no wildcards and there is no matching buffer, add | |
1494 | + the buffer (unlisted). | |
1460 | 1495 | 7 Pre-parse or compile Vim scripts into a bytecode. |
1461 | 1496 | 1. Put the bytecode with the original script, with an ":if |
1462 | 1497 | has('bytecode')" around it, so that it's only used with a Vim that |
@@ -2556,8 +2591,8 @@ | ||
2556 | 2591 | This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". |
2557 | 2592 | 7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and |
2558 | 2593 | "\d". |
2559 | -7 Add a way to specify characters as hex, octal or <C-M> form. Could be | |
2560 | - \%1ax, \%200o and \%<C-M>. Also \%1234u for multi-byte chars. | |
2594 | +7 Add a way to specify characters in <C-M> or <Key> form. Could be | |
2595 | + \%<C-M>. | |
2561 | 2596 | 8 Flags that apply to the whole pattern. |
2562 | 2597 | This works for all places where a regexp is used. |
2563 | 2598 | Add "\q" to not store this pattern as the last search pattern? |
@@ -2612,11 +2647,6 @@ | ||
2612 | 2647 | before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No |
2613 | 2648 | Save-all/hide-All/Quit) ". |
2614 | 2649 | - ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) |
2615 | -- Special characters in patterns: | |
2616 | - Inside []: | |
2617 | - \012 octal character | |
2618 | - \0x1a hex character | |
2619 | - \0<BS> \0<Esc>: special character | |
2620 | 2650 | 7 When searching with 'n' give message when getting back where the search |
2621 | 2651 | first started. Remember start of search in '/ mark. |
2622 | 2652 | 7 Add option that scrolls screen to put cursor in middle of screen after |
@@ -1,4 +1,4 @@ | ||
1 | -*usr_01.txt* For Vim version 7.0aa. Last change: 2004 May 01 | |
1 | +*usr_01.txt* For Vim version 7.0aa. Last change: 2004 Sep 09 | |
2 | 2 | |
3 | 3 | VIM USER MANUAL - by Bram Moolenaar |
4 | 4 |
@@ -104,11 +104,13 @@ | ||
104 | 104 | first Vim commands. This is a 30 minute tutorial that teaches the most basic |
105 | 105 | Vim functionality hands-on. |
106 | 106 | |
107 | -On Unix and MS-Windows, if Vim has been properly installed, you can start it | |
108 | -from the shell: | |
107 | +On Unix, if Vim has been properly installed, you can start it from the shell: | |
109 | 108 | > |
110 | 109 | vimtutor |
111 | 110 | |
111 | +On MS-Windows you can find it in the Program/Vim menu. Or execute | |
112 | +vimtutor.bat in the $VIMRUNTIME directory. | |
113 | + | |
112 | 114 | This will make a copy of the tutor file, so that you can edit it without |
113 | 115 | the risk of damaging the original. |
114 | 116 | There are a few translated versions of the tutor. To find out if yours is |
@@ -1,4 +1,4 @@ | ||
1 | -*version7.txt* For Vim version 7.0aa. Last change: 2004 Sep 06 | |
1 | +*version7.txt* For Vim version 7.0aa. Last change: 2004 Sep 13 | |
2 | 2 | |
3 | 3 | |
4 | 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
@@ -122,6 +122,8 @@ | ||
122 | 122 | |
123 | 123 | |:keepalt| Do not change the alternate file. |
124 | 124 | |
125 | +|:delmarks| Delete marks. | |
126 | + | |
125 | 127 | |
126 | 128 | New functions: ~ |
127 | 129 |
@@ -135,6 +137,8 @@ | ||
135 | 137 | repeat(expr, count) |repeat()| Repeat "expr" "count" times. |
136 | 138 | (Christophe Poucet) |
137 | 139 | tr(expr, from, to) |tr()| Translate characters. (Ron Aaron) |
140 | +system(cmd, input) |system()| Filters {input} through a shell | |
141 | + command. | |
138 | 142 | |
139 | 143 | |
140 | 144 | New autocommand events: ~ |
@@ -146,6 +150,20 @@ | ||
146 | 150 | |ColorScheme| after loading a color scheme |
147 | 151 | |
148 | 152 | |
153 | +New items in search patterns: ~ | |
154 | +|/\%d| \%d123 search for character with decimal number | |
155 | +|/\]| [\d123] idem, in a colletion | |
156 | +|/\%o| \%o103 search for character with octal number | |
157 | +|/\]| [\o1o3] idem, in a colletion | |
158 | +|/\%x| \%x1a search for character with 2 pos. hex number | |
159 | +|/\]| [\x1a] idem, in a colletion | |
160 | +|/\%u| \%u12ab search for character with 4 pos. hex number | |
161 | +|/\]| [\u12ab] idem, in a colletion | |
162 | +|/\%U| \%U1234abcd search for character with 8 pos. hex number | |
163 | +|/\]| [\U1234abcd] idem, in a colletion | |
164 | + (The above partly by Ciaran McCreesh) | |
165 | + | |
166 | + | |
149 | 167 | New Syntax/Indent/FTplugin files: ~ |
150 | 168 | |
151 | 169 | MuPAD source syntax, indent and ftplugin. (Dave Silvia) |
@@ -348,4 +366,11 @@ | ||
348 | 366 | command line with non-ASCII characters are not used correctly. Recode the |
349 | 367 | file names when 'encoding' is set, using the Unicode command line. |
350 | 368 | |
369 | +Win32 console: When the default for 'encoding' ends up to be "latin1", the | |
370 | +default value of 'isprint' was wrong. | |
371 | + | |
372 | +When an error message is given while waiting for a character (e.g., when an | |
373 | +xterm reports the number of colors), the hit-enter prompt overwrote the last | |
374 | +line. Don't reset msg_didout in normal_cmd() for K_IGNORE. | |
375 | + | |
351 | 376 | vim:tw=78:ts=8:ft=help:norl: |
@@ -1,7 +1,7 @@ | ||
1 | 1 | " Vim support file to detect file types |
2 | 2 | " |
3 | 3 | " Maintainer: Bram Moolenaar <Bram@vim.org> |
4 | -" Last Change: 2004 Aug 30 | |
4 | +" Last Change: 2004 Sep 11 | |
5 | 5 | |
6 | 6 | " Listen very carefully, I will say this only once |
7 | 7 | if exists("did_load_filetypes") |
@@ -100,6 +100,9 @@ | ||
100 | 100 | au BufNewFile,BufRead *.am |
101 | 101 | \ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif |
102 | 102 | |
103 | +" ALSA configuration | |
104 | +au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf setf alsaconf | |
105 | + | |
103 | 106 | " Arc Macro Language |
104 | 107 | au BufNewFile,BufRead *.aml setf aml |
105 | 108 |
@@ -1,7 +1,7 @@ | ||
1 | 1 | " Vim filetype plugin |
2 | 2 | " Language: Vim |
3 | 3 | " Maintainer: Bram Moolenaar <Bram@vim.org> |
4 | -" Last Change: 2004 Feb 20 | |
4 | +" Last Change: 2004 Sep 13 | |
5 | 5 | |
6 | 6 | " Only do this when not done yet for this buffer |
7 | 7 | if exists("b:did_ftplugin") |
@@ -33,10 +33,10 @@ | ||
33 | 33 | setlocal commentstring=\"%s |
34 | 34 | |
35 | 35 | " Move around functions. |
36 | -noremap <silent><buffer> [[ :call search('^\s*fu\%[nction]\>', "bW")<CR> | |
37 | -noremap <silent><buffer> ]] :call search('^\s*fu\%[nction]\>', "W")<CR> | |
38 | -noremap <silent><buffer> [] :call search('^\s*endf*\%[unction]\>', "bW")<CR> | |
39 | -noremap <silent><buffer> ][ :call search('^\s*endf*\%[unction]\>', "W")<CR> | |
36 | +noremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR> | |
37 | +noremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR> | |
38 | +noremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR> | |
39 | +noremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR> | |
40 | 40 | |
41 | 41 | " Move around comments |
42 | 42 | noremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR> |
@@ -1,6 +1,6 @@ | ||
1 | 1 | " Script to define the syntax menu in synmenu.vim |
2 | 2 | " Maintainer: Bram Moolenaar <Bram@vim.org> |
3 | -" Last Change: 2004 Aug 30 | |
3 | +" Last Change: 2004 Sep 11 | |
4 | 4 | |
5 | 5 | " This is used by "make menu" in the src directory. |
6 | 6 | edit <sfile>:p:h/synmenu.vim |
@@ -56,6 +56,7 @@ | ||
56 | 56 | SynMenu AB.AceDB\ model:acedb |
57 | 57 | SynMenu AB.Ada:ada |
58 | 58 | SynMenu AB.AfLex:aflex |
59 | +SynMenu AB.ALSA\ config:alsaconf | |
59 | 60 | SynMenu AB.Altera\ AHDL:ahdl |
60 | 61 | SynMenu AB.Amiga\ DOS:amiga |
61 | 62 | SynMenu AB.AMPL:ampl |
@@ -1,15 +1,15 @@ | ||
1 | 1 | " NetrwFileHandlers: contains various extension-based file handlers for |
2 | 2 | " netrw's browsers' x command ("eXecute launcher") |
3 | 3 | " Author: Charles E. Campbell, Jr. |
4 | -" Date: Aug 27, 2004 | |
5 | -" Version: 2 | |
4 | +" Date: Aug 31, 2004 | |
5 | +" Version: 3a NOT RELEASED | |
6 | 6 | |
7 | 7 | " --------------------------------------------------------------------- |
8 | 8 | " Prevent Reloading: {{{1 |
9 | 9 | if exists("g:loaded_netrwfilehandlers") || &cp |
10 | 10 | finish |
11 | 11 | endif |
12 | -let g:loaded_netrwfilehandlers= "v2" | |
12 | +let g:loaded_netrwfilehandlers= "v3a" | |
13 | 13 | |
14 | 14 | " --------------------------------------------------------------------- |
15 | 15 | " NetrwFileHandler_html: handles html when the user hits "x" when the {{{1 |
@@ -245,6 +245,7 @@ | ||
245 | 245 | elseif executable("gswin32") |
246 | 246 | exe "silent! !gswin32 \"".a:ps.'"' |
247 | 247 | redraw! |
248 | + else | |
248 | 249 | " call Dret("NetrwFileHandler_ps 0") |
249 | 250 | return 0 |
250 | 251 | endif |
@@ -254,4 +255,59 @@ | ||
254 | 255 | endfun |
255 | 256 | |
256 | 257 | " --------------------------------------------------------------------- |
258 | +" NetrwFileHandler_eps: handles encapsulated PostScript files {{{1 | |
259 | +fun! NetrwFileHandler_eps(eps) | |
260 | +" call Dfunc("NetrwFileHandler_ps()") | |
261 | + if executable("gs") | |
262 | + exe "silent! !gs ".a:eps | |
263 | + redraw! | |
264 | + elseif executable("ghostscript") | |
265 | + exe "silent! !ghostscript ".a:eps | |
266 | + redraw! | |
267 | + elseif executable("ghostscript") | |
268 | + exe "silent! !ghostscript ".a:eps | |
269 | + redraw! | |
270 | + elseif executable("gswin32") | |
271 | + exe "silent! !gswin32 \"".a:eps.'"' | |
272 | + redraw! | |
273 | + else | |
274 | +" call Dret("NetrwFileHandler_ps 0") | |
275 | + return 0 | |
276 | + endif | |
277 | +endfun | |
278 | + | |
279 | +" --------------------------------------------------------------------- | |
280 | +" NetrwFileHandler_fig: handles xfig files {{{1 | |
281 | +fun! NetrwFileHandler_fig(fig) | |
282 | +" call Dfunc("NetrwFileHandler_fig()") | |
283 | + if executable("xfig") | |
284 | + exe "silent! !xfig ".a:fig | |
285 | + redraw! | |
286 | + else | |
287 | +" call Dret("NetrwFileHandler_fig 0") | |
288 | + return 0 | |
289 | + endif | |
290 | + | |
291 | +" call Dret("NetrwFileHandler_fig 1") | |
292 | + return 1 | |
293 | +endfun | |
294 | + | |
295 | +" --------------------------------------------------------------------- | |
296 | +" NetrwFileHandler_obj: handles tgif's obj files {{{1 | |
297 | +fun! NetrwFileHandler_obj(obj) | |
298 | +" call Dfunc("NetrwFileHandler_obj()") | |
299 | + if has("unix") && executable("tgif") | |
300 | + exe "silent! !tgif ".a:obj | |
301 | + redraw! | |
302 | + else | |
303 | +" call Dret("NetrwFileHandler_obj 0") | |
304 | + return 0 | |
305 | + endif | |
306 | + | |
307 | +" call Dret("NetrwFileHandler_obj 1") | |
308 | + return 1 | |
309 | +endfun | |
310 | + | |
311 | + | |
312 | +" --------------------------------------------------------------------- | |
257 | 313 | " vim: ts=4 fdm=marker |
@@ -1,20 +1,20 @@ | ||
1 | 1 | " netrw.vim: Handles file transfer and remote directory listing across a network |
2 | -" Last Change: Aug 27, 2004 | |
2 | +" Last Change: Sep 10, 2004 | |
3 | 3 | " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz> |
4 | -" Version: 47 | |
4 | +" Version: 48 | |
5 | 5 | " License: Vim License (see vim's :help license) |
6 | 6 | " |
7 | -" But be doers of the word, and not only hearers, deluding your own selves | |
7 | +" But be doers of the Word, and not only hearers, deluding your own selves | |
8 | 8 | " (James 1:22 RSV) |
9 | 9 | " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
10 | 10 | " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim |
11 | 11 | |
12 | 12 | " --------------------------------------------------------------------- |
13 | 13 | " Prevent Reloading: {{{1 |
14 | -if exists("loaded_netrw") || &cp | |
14 | +if exists("g:loaded_netrw") || &cp | |
15 | 15 | finish |
16 | 16 | endif |
17 | -let loaded_netrw = "v47" | |
17 | +let g:loaded_netrw = "v48" | |
18 | 18 | let s:save_cpo = &cpo |
19 | 19 | let loaded_explorer = 1 |
20 | 20 | set cpo&vim |
@@ -43,6 +43,13 @@ | ||
43 | 43 | let g:netrw_list_cmd= "" |
44 | 44 | endif |
45 | 45 | endif |
46 | +if !exists("g:netrw_ftp_list_cmd") | |
47 | + if has("unix") || exists("g:netrw_cygwin") | |
48 | + let g:netrw_ftp_list_cmd= "ls -lF" | |
49 | + else | |
50 | + let g:netrw_ftp_list_cmd= "dir" | |
51 | + endif | |
52 | +endif | |
46 | 53 | if !exists("g:netrw_rm_cmd") |
47 | 54 | let g:netrw_rm_cmd = "ssh HOSTNAME rm" |
48 | 55 | endif |
@@ -111,22 +118,28 @@ | ||
111 | 118 | let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not' |
112 | 119 | endif |
113 | 120 | if !exists("g:netrw_keepdir") |
114 | - let g:netrw_keepdir= 0 | |
121 | + let g:netrw_keepdir= 1 | |
115 | 122 | endif |
116 | 123 | if !exists("s:netrw_cd_escape") |
117 | 124 | if has("win32") || has("win95") || has("win64") || has("win16") |
118 | 125 | let s:netrw_cd_escape="#% " |
119 | 126 | else |
120 | - let s:netrw_cd_escape="*$%'\" ?`" | |
127 | + let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" | |
121 | 128 | endif |
122 | 129 | endif |
123 | 130 | if !exists("s:netrw_glob_escape") |
124 | 131 | if has("win32") || has("win95") || has("win64") || has("win16") |
125 | 132 | let s:netrw_glob_escape= "" |
126 | 133 | else |
127 | - let s:netrw_glob_escape= '[]*?`{~' | |
134 | + let s:netrw_glob_escape= '[]*?`{~$' | |
128 | 135 | endif |
129 | 136 | endif |
137 | +if !exists("g:netrw_alto") | |
138 | + let g:netrw_alto= 0 | |
139 | +endif | |
140 | +if !exists("g:netrw_altv") | |
141 | + let g:netrw_altv= 0 | |
142 | +endif | |
130 | 143 | |
131 | 144 | " BufEnter event ignored by decho when following variable is true |
132 | 145 | " Has a side effect that doau BufReadPost doesn't work, so |
@@ -286,18 +299,18 @@ | ||
286 | 299 | |
287 | 300 | if match(choice,"?") == 0 |
288 | 301 | " give help |
289 | - echo 'NetRead Usage:' | |
290 | - echo ':Nread machine:path uses rcp' | |
291 | - echo ':Nread "machine path" uses ftp with <.netrc>' | |
292 | - echo ':Nread "machine id password path" uses ftp' | |
293 | - echo ':Nread dav://machine[:port]/path uses cadaver' | |
294 | - echo ':Nread fetch://machine/path uses fetch' | |
295 | - echo ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' | |
296 | - echo ':Nread http://[user@]machine/path uses http wget' | |
297 | - echo ':Nread rcp://[user@]machine/path uses rcp' | |
298 | - echo ':Nread rsync://machine[:port]/path uses rsync' | |
299 | - echo ':Nread scp://[user@]machine[[:#]port]/path uses scp' | |
300 | - echo ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' | |
302 | + echomsg 'NetRead Usage:' | |
303 | + echomsg ':Nread machine:path uses rcp' | |
304 | + echomsg ':Nread "machine path" uses ftp with <.netrc>' | |
305 | + echomsg ':Nread "machine id password path" uses ftp' | |
306 | + echomsg ':Nread dav://machine[:port]/path uses cadaver' | |
307 | + echomsg ':Nread fetch://machine/path uses fetch' | |
308 | + echomsg ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' | |
309 | + echomsg ':Nread http://[user@]machine/path uses http wget' | |
310 | + echomsg ':Nread rcp://[user@]machine/path uses rcp' | |
311 | + echomsg ':Nread rsync://machine[:port]/path uses rsync' | |
312 | + echomsg ':Nread scp://[user@]machine[[:#]port]/path uses scp' | |
313 | + echomsg ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' | |
301 | 314 | break |
302 | 315 | |
303 | 316 | elseif match(choice,"^\"") != -1 |
@@ -315,7 +328,9 @@ | ||
315 | 328 | let wholechoice = wholechoice . " " . choice |
316 | 329 | let ichoice = ichoice + 1 |
317 | 330 | if ichoice > a:0 |
318 | - echoerr "Unbalanced string in filename '". wholechoice ."'" | |
331 | + if !exists("g:netrw_quiet") | |
332 | + echoerr "Unbalanced string in filename '". wholechoice ."'" | |
333 | + endif | |
319 | 334 | " call Dret("NetRead") |
320 | 335 | return |
321 | 336 | endif |
@@ -397,11 +412,10 @@ | ||
397 | 412 | exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine |
398 | 413 | endif |
399 | 414 | " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
400 | - if getline(1) !~ "^$" | |
415 | + if getline(1) !~ "^$" && !exists("g:netrw_quiet") | |
401 | 416 | let debugkeep= &debug |
402 | 417 | set debug=msg |
403 | 418 | echoerr getline(1) |
404 | - exe "echomsg '".getline(1)."'" | |
405 | 419 | let &debug= debugkeep |
406 | 420 | endif |
407 | 421 | bd! |
@@ -445,7 +459,9 @@ | ||
445 | 459 | " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
446 | 460 | if getline(1) !~ "^$" |
447 | 461 | " call Decho("error<".getline(1).">") |
448 | - echoerr getline(1) | |
462 | + if !exists("g:netrw_quiet") | |
463 | + echoerr getline(1) | |
464 | + endif | |
449 | 465 | endif |
450 | 466 | bd! |
451 | 467 | let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
@@ -475,7 +491,9 @@ | ||
475 | 491 | elseif b:netrw_method == 5 " read with http (wget) |
476 | 492 | " call Decho("read via http (method #5)") |
477 | 493 | if g:netrw_http_cmd == "" |
478 | - echoerr "neither wget nor fetch command is available" | |
494 | + if !exists("g:netrw_quiet") | |
495 | + echoerr "neither wget nor fetch command is available" | |
496 | + endif | |
479 | 497 | exit |
480 | 498 | endif |
481 | 499 |
@@ -550,7 +568,9 @@ | ||
550 | 568 | " fetch://[user@]host[:http]/path |
551 | 569 | elseif b:netrw_method == 8 " read with fetch |
552 | 570 | if g:netrw_fetch_cmd == "" |
553 | - echoerr "fetch command not available" | |
571 | + if !exists("g:netrw_quiet") | |
572 | + echoerr "fetch command not available" | |
573 | + endif | |
554 | 574 | exit |
555 | 575 | endif |
556 | 576 | if exists("g:netrw_option") && g:netrw_option == ":http" |
@@ -749,17 +769,17 @@ | ||
749 | 769 | |
750 | 770 | " Reconstruct Choice if choice starts with '"' |
751 | 771 | if match(choice,"?") == 0 |
752 | - echo 'NetWrite Usage:"' | |
753 | - echo ':Nwrite machine:path uses rcp' | |
754 | - echo ':Nwrite "machine path" uses ftp with <.netrc>' | |
755 | - echo ':Nwrite "machine id password path" uses ftp' | |
756 | - echo ':Nwrite dav://[user@]machine/path uses cadaver' | |
757 | - echo ':Nwrite fetch://[user@]machine/path uses fetch' | |
758 | - echo ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' | |
759 | - echo ':Nwrite rcp://machine/path uses rcp' | |
760 | - echo ':Nwrite rsync://[user@]machine/path uses rsync' | |
761 | - echo ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' | |
762 | - echo ':Nwrite sftp://[user@]machine/path uses sftp' | |
772 | + echomsg 'NetWrite Usage:"' | |
773 | + echomsg ':Nwrite machine:path uses rcp' | |
774 | + echomsg ':Nwrite "machine path" uses ftp with <.netrc>' | |
775 | + echomsg ':Nwrite "machine id password path" uses ftp' | |
776 | + echomsg ':Nwrite dav://[user@]machine/path uses cadaver' | |
777 | + echomsg ':Nwrite fetch://[user@]machine/path uses fetch' | |
778 | + echomsg ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' | |
779 | + echomsg ':Nwrite rcp://machine/path uses rcp' | |
780 | + echomsg ':Nwrite rsync://[user@]machine/path uses rsync' | |
781 | + echomsg ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' | |
782 | + echomsg ':Nwrite sftp://[user@]machine/path uses sftp' | |
763 | 783 | break |
764 | 784 | |
765 | 785 | elseif match(choice,"^\"") != -1 |
@@ -775,7 +795,9 @@ | ||
775 | 795 | let wholechoice= wholechoice . " " . choice |
776 | 796 | let ichoice = ichoice + 1 |
777 | 797 | if choice > a:0 |
778 | - echoerr "Unbalanced string in filename '". wholechoice ."'" | |
798 | + if !exists("g:netrw_quiet") | |
799 | + echoerr "Unbalanced string in filename '". wholechoice ."'" | |
800 | + endif | |
779 | 801 | " call Dret("NetWrite") |
780 | 802 | return |
781 | 803 | endif |
@@ -843,7 +865,9 @@ | ||
843 | 865 | endif |
844 | 866 | " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
845 | 867 | if getline(1) !~ "^$" |
846 | - echoerr getline(1) | |
868 | + if !exists("g:netrw_quiet") | |
869 | + echoerr getline(1) | |
870 | + endif | |
847 | 871 | let mod=1 |
848 | 872 | endif |
849 | 873 | bd! |
@@ -880,7 +904,9 @@ | ||
880 | 904 | exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" |
881 | 905 | " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
882 | 906 | if getline(1) !~ "^$" |
883 | - echoerr getline(1) | |
907 | + if !exists("g:netrw_quiet") | |
908 | + echoerr getline(1) | |
909 | + endif | |
884 | 910 | let mod=1 |
885 | 911 | endif |
886 | 912 | bd! |
@@ -906,7 +932,9 @@ | ||
906 | 932 | "......................................... |
907 | 933 | " http: NetWrite Method #5 |
908 | 934 | elseif b:netrw_method == 5 |
909 | - echoerr "***warning*** currently <netrw.vim> does not support writing using http:" | |
935 | + if !exists("g:netrw_quiet") | |
936 | + echoerr "***warning*** currently <netrw.vim> does not support writing using http:" | |
937 | + endif | |
910 | 938 | |
911 | 939 | "......................................... |
912 | 940 | " dav: NetWrite Method #6 |
@@ -997,12 +1025,18 @@ | ||
997 | 1025 | " call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist) |
998 | 1026 | |
999 | 1027 | " sanity check |
1000 | - if exists("b:netrw_method") && (b:netrw_method =~ '[23]' && !executable("ftp")) | |
1001 | - echoerr "***netrw*** this system doesn't support remote directory listing via ftp" | |
1002 | -" call Dret("NetBrowse") | |
1003 | - return | |
1028 | + if exists("b:netrw_method") && b:netrw_method =~ '[23]' | |
1029 | + if !executable("ftp") | |
1030 | + if !exists("g:netrw_quiet") | |
1031 | + echoerr "***netrw*** this system doesn't support remote directory listing via ftp" | |
1032 | + endif | |
1033 | +" call Dret("NetBrowse") | |
1034 | + return | |
1035 | + endif | |
1004 | 1036 | elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' |
1005 | - echoerr "***netrw*** this system doesn't support remote directory listing via ssh" | |
1037 | + if !exists("g:netrw_quiet") | |
1038 | + echoerr "***netrw*** this system doesn't support remote directory listing via ssh" | |
1039 | + endif | |
1006 | 1040 | " call Dret("NetBrowse") |
1007 | 1041 | return |
1008 | 1042 | endif |
@@ -1014,7 +1048,9 @@ | ||
1014 | 1048 | let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' |
1015 | 1049 | " call Decho("dirpat<".dirpat.">") |
1016 | 1050 | if a:dirname !~ dirpat |
1017 | - echoerr "NetBrowse: I don't understand your dirname<".a:dirname.">" | |
1051 | + if !exists("g:netrw_quiet") | |
1052 | + echoerr "NetBrowse: I don't understand your dirname<".a:dirname.">" | |
1053 | + endif | |
1018 | 1054 | " call Dret("NetBrowse : badly formatted dirname<".a:dirname.">") |
1019 | 1055 | return |
1020 | 1056 | endif |
@@ -1031,7 +1067,7 @@ | ||
1031 | 1067 | " call Decho("set up fname <".fname .">") |
1032 | 1068 | |
1033 | 1069 | if method == "ftp" |
1034 | - let listcmd = "-lF" | |
1070 | + let listcmd = g:netrw_ftp_list_cmd | |
1035 | 1071 | else |
1036 | 1072 | let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'') |
1037 | 1073 | endif |
@@ -1041,14 +1077,18 @@ | ||
1041 | 1077 | endif |
1042 | 1078 | |
1043 | 1079 | " optionally sort by time (-t) or by size (-S) |
1044 | - if g:netrw_sort_by =~ "^t" | |
1045 | - let listcmd= listcmd."t" | |
1046 | - elseif g:netrw_sort_by =~ "^s" | |
1047 | - let listcmd= listcmd."S" | |
1048 | - endif | |
1049 | - " optionally sort in reverse | |
1050 | - if g:netrw_sort_direction =~ "^r" | |
1051 | - let listcmd= listcmd."r" | |
1080 | + if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]" | |
1081 | + echoerr "***warning*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)" | |
1082 | + else | |
1083 | + if g:netrw_sort_by =~ "^t" | |
1084 | + let listcmd= listcmd."t" | |
1085 | + elseif g:netrw_sort_by =~ "^s" | |
1086 | + let listcmd= listcmd."S" | |
1087 | + endif | |
1088 | + " optionally sort in reverse | |
1089 | + if g:netrw_sort_direction =~ "^r" && listcmd == "dir" | |
1090 | + let listcmd= listcmd."r" | |
1091 | + endif | |
1052 | 1092 | endif |
1053 | 1093 | |
1054 | 1094 | " call Decho("set up listcmd<".listcmd.">") |
@@ -1071,6 +1111,7 @@ | ||
1071 | 1111 | |
1072 | 1112 | " remote-read the requested file into current buffer |
1073 | 1113 | enew! |
1114 | +" call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape)) | |
1074 | 1115 | exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape) |
1075 | 1116 | exe "silent doau BufReadPre ".fname |
1076 | 1117 | silent call s:NetRead(method."://".user.machine."/".path) |
@@ -1087,9 +1128,9 @@ | ||
1087 | 1128 | " call Decho("Perform directory listing...") |
1088 | 1129 | " set up new buffer and map |
1089 | 1130 | let bufname = method.'://'.user.machine.'/'.path |
1090 | - let bufnamenr = bufexists(bufname) | |
1131 | + let bufnamenr = bufnr(bufname.'$') | |
1091 | 1132 | " call Decho("bufname<".bufname."> bufnamenr=".bufnamenr) |
1092 | - if bufnamenr != 0 | |
1133 | + if bufnamenr != -1 | |
1093 | 1134 | " buffer already exists, switch to it! |
1094 | 1135 | " call Decho("buffer already exists, switching to it") |
1095 | 1136 | exe "b ".bufnamenr |
@@ -1104,6 +1145,7 @@ | ||
1104 | 1145 | |
1105 | 1146 | " rename file to reflect where its from |
1106 | 1147 | setlocal ts=32 bt=nofile bh=wipe nobl |
1148 | +" call Decho("exe file ".escape(bufname,s:netrw_cd_escape)) | |
1107 | 1149 | exe 'file '.escape(bufname,s:netrw_cd_escape) |
1108 | 1150 | " call Decho("renaming file to bufname<".bufname.">") |
1109 | 1151 | setlocal bt=nowrite bh=hide nobl |
@@ -1113,17 +1155,17 @@ | ||
1113 | 1155 | nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1114 | 1156 | nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> |
1115 | 1157 | nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr> |
1116 | - nnoremap <buffer> <silent> a :let g:netrw_hide=!g:netrw_hide<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> | |
1158 | + nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> | |
1117 | 1159 | nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr> |
1118 | 1160 | nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr> |
1119 | 1161 | nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(0)<cr> |
1120 | 1162 | nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> |
1121 | - nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | |
1163 | + nnoremap <buffer> <silent> o :exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | |
1122 | 1164 | nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr> |
1123 | 1165 | nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> |
1124 | 1166 | nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr> |
1125 | 1167 | nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> |
1126 | - nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | |
1168 | + nnoremap <buffer> <silent> v :exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | |
1127 | 1169 | nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr> |
1128 | 1170 | nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1129 | 1171 | exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' |
@@ -1157,7 +1199,11 @@ | ||
1157 | 1199 | keepjumps put ='\" Sorted by '.sortby |
1158 | 1200 | endif |
1159 | 1201 | if g:netrw_list_hide != "" && g:netrw_hide |
1160 | - keepjumps put ='\" Hiding: '.g:netrw_list_hide | |
1202 | + if g:netrw_hide == 1 | |
1203 | + keepjumps put ='\" Hiding: '.g:netrw_list_hide | |
1204 | + else | |
1205 | + keepjumps put ='\" Showing: '.g:netrw_list_hide | |
1206 | + endif | |
1161 | 1207 | let s:netrw_bannercnt= s:netrw_bannercnt + 1 |
1162 | 1208 | endif |
1163 | 1209 | keepjumps put ='\" Quick Help: ?:help -:go up dir D:delete R:rename s:sort-by x:exec' |
@@ -1167,26 +1213,42 @@ | ||
1167 | 1213 | " Use ftp if that was the file-transfer method selected, otherwise use ssh |
1168 | 1214 | " Note that not all ftp servers honor the options for ls |
1169 | 1215 | if method == "ftp" |
1170 | - call NetBrowseFtpCmd(path,"ls ".listcmd) | |
1216 | + " use ftp to get remote file listing | |
1217 | +" call Decho("use ftp to get remote file listing") | |
1218 | + call NetBrowseFtpCmd(path,listcmd) | |
1219 | + | |
1171 | 1220 | keepjumps 1d |
1172 | 1221 | |
1173 | 1222 | if !g:netrw_longlist |
1223 | + " shorten the listing | |
1174 | 1224 | " call Decho("generate short listing") |
1175 | - " shorten the listing | |
1176 | 1225 | exe "keepjumps ".s:netrw_bannercnt |
1177 | 1226 | " cleanup |
1178 | 1227 | while getline(".") =~ g:netrw_ftp_browse_reject |
1179 | 1228 | keepjumps d |
1180 | 1229 | endwhile |
1181 | - keepjumps put='../' | |
1182 | - keepjumps put='./' | |
1230 | + | |
1231 | + " if there's no ../ listed, then put ./ and ../ in | |
1232 | + let line1= line(".") | |
1233 | + keepjumps 1 | |
1234 | + silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') | |
1235 | + let line2= line(".") | |
1236 | + if line2 == 0 | |
1237 | + keepjumps put='../' | |
1238 | + keepjumps put='./' | |
1239 | + endif | |
1240 | + exe "keepjumps ".line1 | |
1241 | + keepjumps norm! 0 | |
1242 | + | |
1243 | + " more cleanup | |
1183 | 1244 | exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' |
1184 | 1245 | exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#' |
1185 | 1246 | exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#' |
1186 | 1247 | endif |
1187 | 1248 | |
1188 | 1249 | else |
1189 | -" call Decho("use ssh") | |
1250 | + " use ssh to get remote file listing | |
1251 | +" call Decho("use ssh to get remote file listing") | |
1190 | 1252 | let shq= &shq? &shq : ( &sxq? &sxq : "'") |
1191 | 1253 | " call Decho("exe silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq) |
1192 | 1254 | exe "silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq |
@@ -1210,8 +1272,17 @@ | ||
1210 | 1272 | while getline(".") =~ '^total\s\+\d\+$' || getline(".") =~ 'Trying\s\+\d\+.*$' |
1211 | 1273 | keepjumps d |
1212 | 1274 | endwhile |
1213 | - exe 'keepjumps '.s:netrw_bannercnt."put='./'" | |
1214 | - exe 'keepjumps '.s:netrw_bannercnt."put='../'" | |
1275 | + " if there's no ../ listed, then put ./ and ../ in | |
1276 | + let line1= line(".") | |
1277 | + keepjumps 1 | |
1278 | + silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') | |
1279 | + let line2= line(".") | |
1280 | + if line2 == 0 | |
1281 | + exe 'keepjumps '.s:netrw_bannercnt."put='./'" | |
1282 | + exe 'keepjumps '.s:netrw_bannercnt."put='../'" | |
1283 | + endif | |
1284 | + exe "keepjumps ".line1 | |
1285 | + keepjumps norm! 0 | |
1215 | 1286 | endif |
1216 | 1287 | |
1217 | 1288 | exe 'keepjumps silent '.s:netrw_bannercnt.',$s/ -> .*$//e' |
@@ -1229,6 +1300,7 @@ | ||
1229 | 1300 | exe "keepjumps silent ".s:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e' |
1230 | 1301 | endif |
1231 | 1302 | endif |
1303 | + exe "keepjumps ".s:netrw_bannercnt | |
1232 | 1304 | setlocal nomod |
1233 | 1305 | setlocal noma |
1234 | 1306 |
@@ -1266,6 +1338,7 @@ | ||
1266 | 1338 | else |
1267 | 1339 | " strip off a directory name from dirname |
1268 | 1340 | let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','') |
1341 | + exe "silent! keepjumps ".curline.",$d" | |
1269 | 1342 | endif |
1270 | 1343 | " call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">") |
1271 | 1344 |
@@ -1283,9 +1356,13 @@ | ||
1283 | 1356 | " NetGetWord: it gets the directory named under the cursor |
1284 | 1357 | fun! <SID>NetGetWord() |
1285 | 1358 | " call Dfunc("NetGetWord() line#".line(".")) |
1286 | - let dirname= getline(".") | |
1287 | - if dirname =~ '\t' | |
1288 | - let dirname= substitute(dirname,'\t.*$','','e') | |
1359 | + if line(".") < s:netrw_bannercnt | |
1360 | + let dirname= "./" | |
1361 | + else | |
1362 | + let dirname= getline(".") | |
1363 | + if dirname =~ '\t' | |
1364 | + let dirname= substitute(dirname,'\t.*$','','e') | |
1365 | + endif | |
1289 | 1366 | endif |
1290 | 1367 | " call Dret("NetGetWord <".dirname.">") |
1291 | 1368 | return dirname |
@@ -1299,6 +1376,7 @@ | ||
1299 | 1376 | |
1300 | 1377 | " preparation for removing multiple files/directories |
1301 | 1378 | let ctr= a:firstline |
1379 | + let all= 0 | |
1302 | 1380 | |
1303 | 1381 | " remove multiple files and directories |
1304 | 1382 | while ctr <= a:lastline |
@@ -1310,11 +1388,19 @@ | ||
1310 | 1388 | |
1311 | 1389 | if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') |
1312 | 1390 | " attempt to remove file |
1313 | - call inputsave() | |
1314 | - let ok= input("Confirm deletion of file<".rmfile."> ","y") | |
1315 | - call inputrestore() | |
1391 | + if !all | |
1392 | + echohl Statement | |
1393 | + call inputsave() | |
1394 | + let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") | |
1395 | + call inputrestore() | |
1396 | + echohl NONE | |
1397 | + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
1398 | + if ok =~ 'a\%[ll]' | |
1399 | + let all= 1 | |
1400 | + endif | |
1401 | + endif | |
1316 | 1402 | |
1317 | - if ok == "y" | |
1403 | + if all || ok =~ 'y\%[es]' || ok == "" | |
1318 | 1404 | if exists("s:netrw_method") && (s:netrw_method == 2 || s:netrw_method == 3) |
1319 | 1405 | silent! keepjumps .,$d |
1320 | 1406 | call NetBrowseFtpCmd(a:path,"delete ".rmfile) |
@@ -1324,15 +1410,23 @@ | ||
1324 | 1410 | let ret= system(netrw_rm_cmd) |
1325 | 1411 | " call Decho("returned=".ret." errcode=".v:shell_error) |
1326 | 1412 | endif |
1413 | + elseif ok =~ 'q\%[uit]' | |
1414 | + break | |
1327 | 1415 | endif |
1328 | 1416 | |
1329 | 1417 | else |
1330 | 1418 | " attempt to remove directory |
1331 | - call inputsave() | |
1332 | - let ok= input("Confirm deletion of directory<".rmfile."> ","y") | |
1333 | - call inputrestore() | |
1419 | + if !all | |
1420 | + call inputsave() | |
1421 | + let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") | |
1422 | + call inputrestore() | |
1423 | + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
1424 | + if ok =~ 'a\%[ll]' | |
1425 | + let all= 1 | |
1426 | + endif | |
1427 | + endif | |
1334 | 1428 | |
1335 | - if ok == "y" | |
1429 | + if all || ok =~ 'y\%[es]' || ok == "" | |
1336 | 1430 | if exists("s:netrw_method") && (s:netrw_method == 2 || s:netrw_method == 3) |
1337 | 1431 | call NetBrowseFtpCmd(a:path,"rmdir ".rmfile) |
1338 | 1432 | else |
@@ -1348,11 +1442,14 @@ | ||
1348 | 1442 | let ret= system(netrw_rmf_cmd) |
1349 | 1443 | " call Decho("returned=".ret." errcode=".v:shell_error) |
1350 | 1444 | |
1351 | - if v:shell_error != 0 | |
1445 | + if v:shell_error != 0 && !exists("g:netrw_quiet") | |
1352 | 1446 | echoerr "unable to remove directory<".rmfile."> -- is it empty?" |
1353 | 1447 | endif |
1354 | 1448 | endif |
1355 | 1449 | endif |
1450 | + | |
1451 | + elseif ok =~ 'q\%[uit]' | |
1452 | + break | |
1356 | 1453 | endif |
1357 | 1454 | endif |
1358 | 1455 |
@@ -1414,43 +1511,72 @@ | ||
1414 | 1511 | fun! <SID>NetBrowseX(fname,remote) |
1415 | 1512 | " call Dfunc("NetBrowseX(".a:fname." remote=".a:remote.")") |
1416 | 1513 | |
1514 | + " set up the filename | |
1515 | + " (lower case the extension, make a local copy of a remote file) | |
1417 | 1516 | let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') |
1418 | 1517 | if has("win32") || has("win95") || has("win64") || has("win16") |
1419 | 1518 | let exten= substitute(exten,'^.*$','\L&\E','') |
1420 | 1519 | endif |
1421 | -" call Decho("exten<".exten."> "."NetrwFileHandler_".exten."():exists=".exists("*NetrwFileHandler_".exten)) | |
1422 | - if exten != "" && exists("*NetrwFileHandler_".exten) | |
1423 | - | |
1424 | - let fname= a:fname | |
1425 | - if a:remote == 1 | |
1426 | - " create a local copy | |
1427 | - let fname= tempname().".".exten | |
1428 | -" call Decho("create a local copy of <".a:fname."> as <".fname.">") | |
1429 | - exe "keepjumps silent bot 1new ".a:fname | |
1430 | - let eikeep= &ei | |
1431 | - set ei=all bh=delete | |
1432 | - exe "w! ".fname | |
1433 | - let &ei= eikeep | |
1434 | - q | |
1435 | - endif | |
1520 | + let fname= escape(a:fname,"%#") | |
1521 | +" call Decho("fname<".fname."> after escape()") | |
1436 | 1522 | |
1437 | - exe "let ret= NetrwFileHandler_".exten.'("'.fname.'")' | |
1438 | - redraw! | |
1523 | + if a:remote == 1 | |
1524 | + " create a local copy | |
1525 | + let fname= tempname().".".exten | |
1526 | +" call Decho("create a local copy of <".a:fname."> as <".fname.">") | |
1527 | + exe "keepjumps silent bot 1new ".a:fname | |
1528 | + let eikeep= &ei | |
1529 | + set ei=all bh=delete | |
1530 | + exe "w! ".fname | |
1531 | + let &ei= eikeep | |
1532 | + q | |
1533 | + endif | |
1534 | +" call Decho("exten<".exten."> "."NetrwFileHandler_".exten."():exists=".exists("*NetrwFileHandler_".exten)) | |
1439 | 1535 | |
1440 | - " cleanup: remove temporary file, | |
1441 | - " delete current buffer if success with handler, | |
1442 | - " return to prior buffer (directory listing) | |
1443 | - if a:remote == 1 && fname != a:fname | |
1444 | -" call Decho("deleting temporary file<".fname.">") | |
1445 | - call delete(fname) | |
1446 | - endif | |
1447 | - if ret != 0 | |
1448 | - let eikeep= &ei | |
1449 | - set ei=all bh=delete bt=nofile | |
1450 | - exe "norm! \<c-o>" | |
1451 | - let &ei= eikeep | |
1452 | - redraw! | |
1453 | - endif | |
1536 | + " set up redirection | |
1537 | + if &srr =~ "%s" | |
1538 | + let redir= substitute(&srr,"%s","/dev/null"."") | |
1539 | + else | |
1540 | + let redir= &srr . "/dev/null" | |
1541 | + endif | |
1542 | +" call Decho("redir:".redir.":") | |
1543 | + | |
1544 | + " execute the file handler | |
1545 | + if has("win32") || has("win64") | |
1546 | +" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"') | |
1547 | + exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"' | |
1548 | + let ret= v:shell_error | |
1549 | + | |
1550 | + elseif has("unix") && executable("kfmclient") | |
1551 | +" call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir) | |
1552 | + exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir | |
1553 | + let ret= v:shell_error | |
1554 | + | |
1555 | + elseif has("unix") && executable("gnome-open") | |
1556 | +" call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir) | |
1557 | + exe "silent !gnome-open '".escape(fname,'%#')."'".redir | |
1558 | + let ret= v:shell_error | |
1559 | + | |
1560 | + elseif exten != "" && exists("*NetrwFileHandler_".exten) | |
1561 | +" call Decho("let ret= NetrwFileHandler_".exten.'("'.fname.'")') | |
1562 | + exe "let ret= NetrwFileHandler_".exten.'("'.fname.'")' | |
1563 | + endif | |
1564 | + redraw! | |
1565 | + | |
1566 | + " cleanup: remove temporary file, | |
1567 | + " delete current buffer if success with handler, | |
1568 | + " return to prior buffer (directory listing) | |
1569 | + if a:remote == 1 && fname != a:fname | |
1570 | +" call Decho("deleting temporary file<".fname.">") | |
1571 | + call delete(fname) | |
1572 | + endif | |
1573 | + | |
1574 | + if a:remote == 1 | |
1575 | + let eikeep= &ei | |
1576 | + set ei=all bh=delete bt=nofile | |
1577 | + exe "norm! \<c-o>" | |
1578 | + let &ei= eikeep | |
1579 | + redraw! | |
1454 | 1580 | endif |
1455 | 1581 | |
1456 | 1582 | " call Dret("NetBrowseX") |
@@ -1482,6 +1608,8 @@ | ||
1482 | 1608 | endif |
1483 | 1609 | exe "put ='".a:cmd."'" |
1484 | 1610 | |
1611 | + | |
1612 | +" redraw!|call inputsave()|call input("Pausing...")|call inputrestore() "Decho | |
1485 | 1613 | if exists("g:netrw_port") && g:netrw_port != "" |
1486 | 1614 | " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) |
1487 | 1615 | exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port |
@@ -1524,6 +1652,19 @@ | ||
1524 | 1652 | echo "***warning*** unable to comply with your request<" . choice . ">" |
1525 | 1653 | endif |
1526 | 1654 | |
1655 | + " cleanup for Windows | |
1656 | + if has("win32") || has("win95") || has("win64") || has("win16") | |
1657 | + keepjumps silent! %s/\r$// | |
1658 | + endif | |
1659 | + if a:cmd == "dir" | |
1660 | + " infer directory/link based on the file permission string | |
1661 | + keepjumps silent g/d\%([-r][-w][-x]\)\{3}/s@$@/@ | |
1662 | + keepjumps silent g/l\%([-r][-w][-x]\)\{3}/s/$/@/ | |
1663 | + if !g:netrw_longlist | |
1664 | + exe "keepjumps silent ".curline.',$s/^\%(\S\+\s\+\)\{8}//' | |
1665 | + endif | |
1666 | + endif | |
1667 | + | |
1527 | 1668 | " restore settings |
1528 | 1669 | let &ff= ffkeep |
1529 | 1670 | " call Dret("NetBrowseFtpCmd") |
@@ -1544,8 +1685,14 @@ | ||
1544 | 1685 | let hide = listhide |
1545 | 1686 | let listhide= "" |
1546 | 1687 | endif |
1688 | + | |
1689 | + " Prune the list by hiding any files which match | |
1547 | 1690 | " call Decho("pruning <".hide."> listhide<".listhide.">") |
1548 | - exe 'keepjumps silent '.s:netrw_bannercnt.',$g~'.hide.'~d' | |
1691 | + if g:netrw_hide == 1 | |
1692 | + exe 'keepjumps silent '.s:netrw_bannercnt.',$g~'.hide.'~d' | |
1693 | + elseif g:netrw_hide == 2 | |
1694 | + exe 'keepjumps silent '.s:netrw_bannercnt.',$v~'.hide.'~d' | |
1695 | + endif | |
1549 | 1696 | endwhile |
1550 | 1697 | |
1551 | 1698 | " call Dret("NetrwListHide") |
@@ -1662,12 +1809,16 @@ | ||
1662 | 1809 | let fullnewdir= b:netrw_curdir.'/'.newdirname |
1663 | 1810 | " call Decho("fullnewdir<".fullnewdir.">") |
1664 | 1811 | if isdirectory(fullnewdir) |
1665 | - echoerr "***warning*** <".newdirname."> is already a directory!" | |
1812 | + if !exists("g:netrw_quiet") | |
1813 | + echoerr "***warning*** <".newdirname."> is already a directory!" | |
1814 | + endif | |
1666 | 1815 | " call Dret("NetMakeDir : directory<".newdirname."> exists previously") |
1667 | 1816 | return |
1668 | 1817 | endif |
1669 | 1818 | if filereadable(fullnewdir) |
1670 | - echoerr "***warning*** <".newdirname."> is already a file!" | |
1819 | + if !exists("g:netrw_quiet") | |
1820 | + echoerr "***warning*** <".newdirname."> is already a file!" | |
1821 | + endif | |
1671 | 1822 | " call Dret("NetMakeDir : file<".newdirname."> exists previously") |
1672 | 1823 | return |
1673 | 1824 | endif |
@@ -1687,7 +1838,7 @@ | ||
1687 | 1838 | call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,'./')) |
1688 | 1839 | exe "norm! ".hline."G0z\<CR>" |
1689 | 1840 | exe linenum |
1690 | - else | |
1841 | + elseif !exists("g:netrw_quiet") | |
1691 | 1842 | echoerr "***warning*** unable to make directory<".newdirname.">" |
1692 | 1843 | endif |
1693 | 1844 | redraw! |
@@ -1706,7 +1857,7 @@ | ||
1706 | 1857 | call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) |
1707 | 1858 | exe "norm! ".hline."G0z\<CR>" |
1708 | 1859 | exe linenum |
1709 | - else | |
1860 | + elseif !exists("g:netrw_quiet") | |
1710 | 1861 | echoerr "***warning*** unable to make directory<".newdirname.">" |
1711 | 1862 | endif |
1712 | 1863 | redraw! |
@@ -1775,7 +1926,9 @@ | ||
1775 | 1926 | " call Dredir("ls!") |
1776 | 1927 | |
1777 | 1928 | if v:version < 603 |
1778 | - echoerr "vim version<".v:version."> too old for browsing with netrw" | |
1929 | + if !exists("g:netrw_quiet") | |
1930 | + echoerr "vim version<".v:version."> too old for browsing with netrw" | |
1931 | + endif | |
1779 | 1932 | " call Dret("LocalBrowse : vim version<".v:version."> too old") |
1780 | 1933 | return |
1781 | 1934 | endif |
@@ -1796,14 +1949,13 @@ | ||
1796 | 1949 | " remove the trailing "/" |
1797 | 1950 | let dirnamens= substitute(dirname,'/$','','e') |
1798 | 1951 | let dirnamenr= bufnr(dirnamens.'$') |
1799 | -" call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr) | |
1952 | +" call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)) | |
1800 | 1953 | |
1801 | 1954 | if dirnamenr != 0 && bufname(dirnamenr) != dirnamens |
1802 | 1955 | " try keeping the trailing slash |
1803 | 1956 | let dirnamenr = bufnr(dirname.'$') |
1804 | -" call Decho("retry: dirnamenr= bufnr(".dirname.")=".dirnamenr) | |
1957 | +" call Decho("dirnamenr= bufnr(".dirname.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)." (retry with /)") | |
1805 | 1958 | endif |
1806 | -" call Decho("bufnr(dirname<".dirname.">)=".dirnamenr) | |
1807 | 1959 | |
1808 | 1960 | if dirnamenr != -1 |
1809 | 1961 | " buffer already exists (hidden), so switch to it! |
@@ -1812,12 +1964,14 @@ | ||
1812 | 1964 | exe "b ".dirnamenr |
1813 | 1965 | exe 'silent! cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape) |
1814 | 1966 | " call Decho("changed directory to<".dirname.">") |
1815 | - if a:dirname != "." && line("$") >= 5 | |
1816 | -" call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr) | |
1817 | - if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif | |
1818 | - return | |
1967 | + if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir") | |
1968 | + if b:netrw_curdir == dirname | |
1969 | +" call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr) | |
1970 | + if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif | |
1971 | + return | |
1972 | + endif | |
1819 | 1973 | endif |
1820 | -" call Decho("buffer already exists, but needs listing (buf#".dirnamenr.")") | |
1974 | +" call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")") | |
1821 | 1975 | setlocal ma |
1822 | 1976 | keepjumps %d |
1823 | 1977 | if expand("%:p") != dirname |
@@ -1839,19 +1993,20 @@ | ||
1839 | 1993 | nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
1840 | 1994 | nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> |
1841 | 1995 | nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr> |
1842 | - nnoremap <buffer> <silent> a :let g:netrw_hide=!g:netrw_hide<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> | |
1996 | + nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> | |
1843 | 1997 | nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr> |
1844 | 1998 | nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr> |
1845 | 1999 | nnoremap <buffer> <silent> c :exe "cd ".b:netrw_curdir<cr> |
1846 | 2000 | nnoremap <buffer> <silent> d :call <SID>NetMakeDir("")<cr> |
1847 | 2001 | nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(1)<cr> |
1848 | 2002 | nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> |
1849 | - nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | |
2003 | + nnoremap <buffer> <silent> o :exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | |
2004 | + nnoremap <buffer> <silent> p :exe "norm! 0"<bar>call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr> | |
1850 | 2005 | nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr> |
1851 | 2006 | nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> |
1852 | 2007 | nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr> |
1853 | 2008 | nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> |
1854 | - nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | |
2009 | + nnoremap <buffer> <silent> v :exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | |
1855 | 2010 | nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)<cr> |
1856 | 2011 | nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
1857 | 2012 | exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' |
@@ -1888,7 +2043,11 @@ | ||
1888 | 2043 | keepjumps put ='\" Sorted by '.sortby |
1889 | 2044 | endif |
1890 | 2045 | if g:netrw_list_hide != "" && g:netrw_hide |
1891 | - keepjumps put ='\" Hiding: '.g:netrw_list_hide | |
2046 | + if g:netrw_hide == 1 | |
2047 | + keepjumps put ='\" Hiding: '.g:netrw_list_hide | |
2048 | + else | |
2049 | + keepjumps put ='\" Showing: '.g:netrw_list_hide | |
2050 | + endif | |
1892 | 2051 | let s:netrw_bannercnt= s:netrw_bannercnt + 1 |
1893 | 2052 | endif |
1894 | 2053 | keepjumps put ='\" Quick Help: ?:help -:go up dir D:delete R:rename s:sort-by x:exec' |
@@ -1925,13 +2084,35 @@ | ||
1925 | 2084 | fun! LocalBrowseList(dirname) |
1926 | 2085 | " call Dfunc("LocalBrowseList(dirname<".a:dirname.">)") |
1927 | 2086 | |
2087 | + " get the list of files contained in the current directory | |
1928 | 2088 | let dirname = escape(a:dirname,s:netrw_glob_escape) |
1929 | 2089 | let dirnamelen = strlen(a:dirname) |
1930 | 2090 | let filelist = glob(dirname."*") |
2091 | +" call Decho("glob(dirname<".dirname.">,*)=".filelist) | |
1931 | 2092 | if filelist != "" |
1932 | 2093 | let filelist= filelist."\n" |
1933 | 2094 | endif |
1934 | 2095 | let filelist= filelist.glob(dirname.".*") |
2096 | +" call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*")) | |
2097 | + | |
2098 | + " if the directory name includes a "$", and possibly other characters, | |
2099 | + " the glob() doesn't include "." and ".." entries. | |
2100 | + if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)' | |
2101 | +" call Decho("forcibly tacking on .") | |
2102 | + if filelist == "" | |
2103 | + let filelist= dirname."." | |
2104 | + else | |
2105 | + let filelist= filelist."\n".a:dirname."." | |
2106 | + endif | |
2107 | +" call Decho("filelist<".filelist.">") | |
2108 | + endif | |
2109 | + if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)' | |
2110 | +" call Decho("forcibly tacking on ..") | |
2111 | + let filelist= filelist."\n".a:dirname.".." | |
2112 | +" call Decho("filelist<".filelist.">") | |
2113 | + endif | |
2114 | + let filelist= substitute(filelist,'\n\{2,}','\n','ge') | |
2115 | + | |
1935 | 2116 | " call Decho("dirname<".dirname.">") |
1936 | 2117 | " call Decho("dirnamelen<".dirnamelen.">") |
1937 | 2118 | " call Decho("filelist<".filelist.">") |
@@ -1948,6 +2129,9 @@ | ||
1948 | 2129 | if isdirectory(file) |
1949 | 2130 | let pfile= file."/" |
1950 | 2131 | endif |
2132 | + if pfile =~ '//$' | |
2133 | + let pfile= substitute(pfile,'//$','/','e') | |
2134 | + endif | |
1951 | 2135 | let pfile= strpart(pfile,dirnamelen) |
1952 | 2136 | if g:netrw_longlist |
1953 | 2137 | let sz = getfsize(file) |
@@ -2040,6 +2224,7 @@ | ||
2040 | 2224 | let ret = 0 |
2041 | 2225 | let netrw_origdir = s:NetGetcwd(1) |
2042 | 2226 | exe 'cd '.b:netrw_curdir |
2227 | + let all= 0 | |
2043 | 2228 | |
2044 | 2229 | " remove multiple files and directories |
2045 | 2230 | while ctr <= a:lastline |
@@ -2062,22 +2247,40 @@ | ||
2062 | 2247 | |
2063 | 2248 | if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') |
2064 | 2249 | " attempt to remove file |
2065 | - call inputsave() | |
2066 | - let ok= input("Confirm deletion of file<".rmfile."> ","y") | |
2067 | - call inputrestore() | |
2068 | - if ok == "y" | |
2250 | + if !all | |
2251 | + echohl Statement | |
2252 | + call inputsave() | |
2253 | + let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") | |
2254 | + call inputrestore() | |
2255 | + echohl NONE | |
2256 | + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
2257 | + if ok =~ 'a\%[ll]' | |
2258 | + let all= 1 | |
2259 | + endif | |
2260 | + endif | |
2261 | + | |
2262 | + if all || ok =~ 'y\%[es]' || ok == "" | |
2069 | 2263 | let ret= delete(rmfile) |
2070 | 2264 | " call Decho("errcode=".v:shell_error." ret=".ret) |
2265 | + elseif ok =~ 'q\%[uit]' | |
2266 | + break | |
2071 | 2267 | endif |
2072 | 2268 | |
2073 | 2269 | else |
2074 | 2270 | " attempt to remove directory |
2075 | - call inputsave() | |
2076 | - let ok= input("Confirm deletion of directory<".rmfile."> ","y") | |
2077 | - call inputrestore() | |
2271 | + if !all | |
2272 | + echohl Statement | |
2273 | + call inputsave() | |
2274 | + let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") | |
2275 | + call inputrestore() | |
2276 | + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
2277 | + if ok =~ 'a\%[ll]' | |
2278 | + let all= 1 | |
2279 | + endif | |
2280 | + endif | |
2078 | 2281 | let rmfile= substitute(rmfile,'/$','','e') |
2079 | 2282 | |
2080 | - if ok == "y" | |
2283 | + if all || ok =~ 'y\%[es]' || ok == "" | |
2081 | 2284 | " call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")') |
2082 | 2285 | call system(g:netrw_local_rmdir.' "'.rmfile.'"') |
2083 | 2286 | " call Decho("v:shell_error=".v:shell_error) |
@@ -2091,14 +2294,17 @@ | ||
2091 | 2294 | if has("unix") |
2092 | 2295 | " call Decho("3rd attempt to remove directory<".rmfile.">") |
2093 | 2296 | call system("rm ".rmfile) |
2094 | - if v:shell_error != 0 | |
2297 | + if v:shell_error != 0 && !exists("g:netrw_quiet") | |
2095 | 2298 | echoerr "unable to remove directory<".rmfile."> -- is it empty?" |
2096 | 2299 | endif |
2097 | - else | |
2300 | + elseif !exist("g:netrw_quiet")s | |
2098 | 2301 | echoerr "unable to remove directory<".rmfile."> -- is it empty?" |
2099 | 2302 | endif |
2100 | 2303 | endif |
2101 | 2304 | endif |
2305 | + | |
2306 | + elseif ok =~ 'q\%[uit]' | |
2307 | + break | |
2102 | 2308 | endif |
2103 | 2309 | endif |
2104 | 2310 |
@@ -2161,7 +2367,23 @@ | ||
2161 | 2367 | endfun |
2162 | 2368 | |
2163 | 2369 | " --------------------------------------------------------------------- |
2164 | -" NetGetcwd: get the current directory. | |
2370 | +" LocalPreview: {{{2 | |
2371 | +fun! <SID>LocalPreview(path) range | |
2372 | +" call Dfunc("LocalPreview(path<".a:path.">)") | |
2373 | + if has("quickfix") | |
2374 | + if !isdirectory(a:path) | |
2375 | + exe "pedit ".a:path | |
2376 | + elseif !exist("g:netrw_quiet")s | |
2377 | + echoerr "sorry, cannot preview a directory such as <".a:path.">" | |
2378 | + endif | |
2379 | + elseif !exist("g:netrw_quiet")s | |
2380 | + echoerr "sorry, to preview your vim needs the quickfix feature compiled in" | |
2381 | + endif | |
2382 | +" call Dret("LocalPreview") | |
2383 | +endfun | |
2384 | + | |
2385 | +" --------------------------------------------------------------------- | |
2386 | +" NetGetcwd: get the current directory. {{{2 | |
2165 | 2387 | " Change backslashes to forward slashes, if any. |
2166 | 2388 | " If doesc is true, escape certain troublesome characters |
2167 | 2389 | fun! <SID>NetGetcwd(doesc) |
@@ -2354,7 +2576,9 @@ | ||
2354 | 2576 | endif |
2355 | 2577 | |
2356 | 2578 | else |
2357 | - echoerr "***error*** cannot determine method" | |
2579 | + if !exists("g:netrw_quiet") | |
2580 | + echoerr "***error*** cannot determine method" | |
2581 | + endif | |
2358 | 2582 | let b:netrw_method = -1 |
2359 | 2583 | endif |
2360 | 2584 |
@@ -0,0 +1,72 @@ | ||
1 | +" Vim syntax file | |
2 | +" Language: ALSA configuration file | |
3 | +" Maintainer: Nikolai Weibull <source@pcppopper.org> | |
4 | +" URL: http://www.pcppopper.org/ | |
5 | +" Latest Revision: 2004-09-10 | |
6 | +" arch-tag: 3e06fe53-28d5-44a1-871d-279f22e7aed4 | |
7 | + | |
8 | +if version < 600 | |
9 | + syntax clear | |
10 | +elseif exists("b:current_syntax") | |
11 | + finish | |
12 | +endif | |
13 | + | |
14 | +" todo | |
15 | +syn keyword alsoconfTodo contained FIXME TODO XXX NOTE | |
16 | + | |
17 | +" comments | |
18 | +syn region alsaconfComment matchgroup=alsaconfComment start="#" end="$" | |
19 | + \ contains=alsaconfTodo | |
20 | + | |
21 | +" special characters | |
22 | +syn match alsaconfSpecialChar contained "\\[ntvbrf]" | |
23 | +syn match alsaconfSpecialChar contained "\\\o\+" | |
24 | + | |
25 | +" strings | |
26 | +syn region alsaconfString matchgroup=alsaconfString start=+"+ skip=+\\$+ | |
27 | + \ end=+"+ end=+$+ contains=alsaconfSpecialChar | |
28 | + | |
29 | +" preprocessor special | |
30 | +syn match alsaconfSpecial contained "confdir:" | |
31 | + | |
32 | +" preprocessor | |
33 | +syn region alsaconfPreProc matchgroup=alsaconfPreProc start="<" end=">" | |
34 | + \ contains=alsaconfSpecial | |
35 | + | |
36 | +" modes | |
37 | +syn match alsaconfMode "[+?!-]" | |
38 | + | |
39 | +" keywords | |
40 | +syn keyword alsaconfKeyword card default device errors files func strings | |
41 | +syn keyword alsaconfKeyword subdevice type vars | |
42 | + | |
43 | +" variables | |
44 | +syn match alsaconfVariables "@\(hooks\|func\|args\)" | |
45 | + | |
46 | +" Define the default highlighting. | |
47 | +" For version 5.7 and earlier: only when not done already | |
48 | +" For version 5.8 and later: only when an item doesn't have highlighting yet | |
49 | +if version >= 508 || !exists("did_alsaconf_syn_inits") | |
50 | + if version < 508 | |
51 | + let did_dircolors_syn_inits = 1 | |
52 | + command -nargs=+ HiLink hi link <args> | |
53 | + else | |
54 | + command -nargs=+ HiLink hi def link <args> | |
55 | + endif | |
56 | + | |
57 | + HiLink alsoconfTodo Todo | |
58 | + HiLink alsaconfComment Comment | |
59 | + HiLink alsaconfSpecialChar SpecialChar | |
60 | + HiLink alsaconfString String | |
61 | + HiLink alsaconfSpecial Special | |
62 | + HiLink alsaconfPreProc PreProc | |
63 | + HiLink alsaconfMode Special | |
64 | + HiLink alsaconfKeyword Keyword | |
65 | + HiLink alsaconfVariables Identifier | |
66 | + | |
67 | + delcommand HiLink | |
68 | +endif | |
69 | + | |
70 | +let b:current_syntax = "alsaconf" | |
71 | + | |
72 | +" vim: set sts=2 sw=2: |
@@ -1,7 +1,7 @@ | ||
1 | 1 | " Language : Netrw Remote-Directory Listing Syntax |
2 | 2 | " Maintainer : Charles E. Campbell, Jr. |
3 | -" Last change: Aug 20, 2004 | |
4 | -" Version : 4 | |
3 | +" Last change: Sep 08, 2004 | |
4 | +" Version : 5 | |
5 | 5 | " --------------------------------------------------------------------- |
6 | 6 | |
7 | 7 | " Syntax Clearing: {{{1 |
@@ -18,7 +18,7 @@ | ||
18 | 18 | syn match netrwClassify "[*=|@/]\%(\t\|$\)" |
19 | 19 | syn match netrwSymLink "^.*@\%(\t\|$\)" contains=netrwClassify |
20 | 20 | syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup |
21 | -syn match netrwHide '^"\s*Hiding:' skipwhite nextgroup=netrwHidePat | |
21 | +syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite nextgroup=netrwHidePat | |
22 | 22 | syn match netrwSlash contained "/" |
23 | 23 | syn match netrwHidePat contained "[^,]\+" skipwhite nextgroup=netrwHideSep |
24 | 24 | syn match netrwHideSep contained transparent "," skipwhite nextgroup=netrwHidePat |
@@ -1,5 +1,5 @@ | ||
1 | 1 | =============================================================================== |
2 | -= W i t a j w t u t o r i a l u V I M - a - Wersja 1.5. = | |
2 | += W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = | |
3 | 3 | =============================================================================== |
4 | 4 | |
5 | 5 | Vim to potê¿ny edytor, który posiada wiele poleceñ, zbyt du¿o by |
@@ -8,10 +8,12 @@ | ||
8 | 8 | u¿ywaæ Vim-a jako edytora ogólnego przeznaczenia. |
9 | 9 | |
10 | 10 | Czas potrzebny na ukoñczenie tutoriala to 25 do 30 minut i zale¿y |
11 | - od tego jak wiele czasu spêdzisz na eksperymentowaniu. Polecenia | |
12 | - wykonywane w czasie lekcji zmodyfikuj± tekst. Zrób wcze¶niej kopiê | |
13 | - tego pliku do æwiczeñ (je¶li zacz±³e¶ komend± "vimtutor" to ju¿ | |
14 | - pracujesz na kopii). | |
11 | + od tego jak wiele czasu spêdzisz na eksperymentowaniu. | |
12 | + | |
13 | + UWAGA: | |
14 | + Polecenia wykonywane w czasie lekcji zmodyfikuj± tekst. Zrób | |
15 | + wcze¶niej kopiê tego pliku do æwiczeñ (je¶li zacz±³e¶ komend± | |
16 | + "vimtutor" to ju¿ pracujesz na kopii). | |
15 | 17 | |
16 | 18 | Wa¿ne jest, by¶ pamiêta³, ¿e przewodnik ten zosta³ zaprojektowany do |
17 | 19 | nauki poprzez æwiczenia. To oznacza, ¿e musisz wykonywaæ polecenia |
@@ -22,7 +24,7 @@ | ||
22 | 24 | tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu. |
23 | 25 | |
24 | 26 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
25 | - Lekcja 1.1.: PORUSZANIE SIÊ KURSOREM | |
27 | + Lekcja 1.1.: PORUSZANIE SIÊ KURSOREM | |
26 | 28 | |
27 | 29 | ** By wykonaæ ruch kursorem, wci¶nij h, j, k, l jak pokazano. ** |
28 | 30 |
@@ -34,7 +36,7 @@ | ||
34 | 36 | 1. Poruszaj kursorem dopóki nie bêdziesz pewien, ¿e pamiêtasz polecenia. |
35 | 37 | |
36 | 38 | 2. Trzymaj j tak d³ugo a¿ bêdzie siê powtarza³. |
37 | ----> Teraz wiesz jak doj¶æ do nastêpnej lekcji. | |
39 | + Teraz wiesz jak doj¶æ do nastêpnej lekcji. | |
38 | 40 | |
39 | 41 | 3. U¿ywaj±c strza³ki w dó³ przejd¼ do nastêpnej lekcji. |
40 | 42 |
@@ -43,35 +45,35 @@ | ||
43 | 45 | |
44 | 46 | Uwaga: Klawisze kursora tak¿e powinny dzia³aæ, ale u¿ywaj±c hjkl bêdziesz |
45 | 47 | w stanie poruszaæ siê o wiele szybciej jak siê tylko przyzwyczaisz. |
48 | + Naprawdê! | |
46 | 49 | |
47 | 50 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
48 | - Lekcja 1.2.: WCHODZENIE I WYCHODZENIE Z VIM-a | |
51 | + Lekcja 1.2.: WYCHODZENIE Z VIM-a | |
49 | 52 | |
50 | 53 | !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca³± lekcjê.!! |
51 | 54 | |
52 | 55 | 1. Wci¶nij <ESC> (aby upewniæ siê, ¿e jeste¶ w trybie Normal). |
53 | 56 | 2. Wpisz: :q!<ENTER>. |
54 | - | |
55 | ----> To spowoduje wyj¶cie z edytora BEZ zapamiêtywania zmian jakie | |
57 | + To spowoduje wyj¶cie z edytora PORZUCAJ¡C wszelkie zmiany jakie | |
56 | 58 | zd±¿y³e¶ zrobiæ. Je¶li chcesz zapamiêtaæ zmiany i wyj¶æ |
57 | 59 | wpisz: :wq<ENTER> |
58 | 60 | |
59 | 61 | 3. Kiedy widzisz znak zachêty pow³oki wpisz komendê, ¿eby wróciæ |
60 | - do tutoriala. | |
61 | - Powinienie¶ wpisaæ: vimtutor<ENTER> | |
62 | - Normalnie u¿y³by¶: vim tutor<ENTER> | |
63 | - | |
64 | ----> 'vim' oznacza edytor vim, 'tutor' jest plikem, który chcia³by¶ | |
65 | - edytowaæ. | |
62 | + do tutoriala. Czyli: vimtutor<ENTER> | |
66 | 63 | |
67 | 64 | 4. Je¶li chcesz zapamiêtaæ polecenia, wykonaj kroki 1. do 3. aby |
68 | - wyj¶æ i wróciæ do edytora. Potem przenie¶ siê do Lekcji 1.3. | |
65 | + wyj¶æ i wróciæ do edytora. | |
66 | + | |
67 | +UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi³e¶. W nastêpnych | |
68 | +lekcjach dowiesz siê jak je zapamiêtywaæ. | |
69 | + | |
70 | + 5. Przenie¶ kursor do lekcji 1.3. | |
71 | + | |
69 | 72 | |
70 | 73 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
71 | - Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE | |
74 | + Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE | |
72 | 75 | |
73 | - | |
74 | - ** W trybie Normal wci¶nij x aby usun±æ znak pod kursorem. ** | |
76 | + ** Wci¶nij x aby usun±æ znak pod kursorem. ** | |
75 | 77 | |
76 | 78 | 1. Przenie¶ kursor do linii poni¿ej oznaczonej --->. |
77 | 79 |
@@ -90,11 +92,12 @@ | ||
90 | 92 | |
91 | 93 | |
92 | 94 | |
95 | + | |
93 | 96 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
94 | - Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) | |
97 | + Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) | |
95 | 98 | |
96 | 99 | |
97 | - ** W trybie Normal wci¶nij i aby wstawiæ tekst. ** | |
100 | + ** Wci¶nij i aby wstawiæ tekst. ** | |
98 | 101 | |
99 | 102 | 1. Przenie¶ kursor do pierwszej linii poni¿ej oznaczonej --->. |
100 | 103 |
@@ -114,33 +117,79 @@ | ||
114 | 117 | |
115 | 118 | |
116 | 119 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
120 | + Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) | |
121 | + | |
122 | + | |
123 | + ** Wci¶nij A by dodaæ tekst. ** | |
124 | + | |
125 | + 1. Przenie¶ kursor do pierwszej linii poni¿ej oznaczonej --->. | |
126 | + Nie ma znaczenia, który to bêdzie znak. | |
127 | + | |
128 | + 2. Wci¶nij A i wpisz odpowiednie dodatki. | |
129 | + | |
130 | + 3. Kiedy tekst zosta³ dodany, wci¶nij <ESC> i wróæ do trybu Normalnego. | |
131 | + | |
132 | + 4. Przenie¶ kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3 | |
133 | + aby poprawiæ zdanie. | |
134 | + | |
135 | +---> Brakuje tu tro | |
136 | + Brakuje tu trochê tekstu. | |
137 | +---> Tu te¿ trochê bra | |
138 | + Tu te¿ trochê brakuje. | |
139 | + | |
140 | + 5. Kiedy ju¿ utrwali³e¶ æwiczenie przejd¼ do lekcji 1.6. | |
141 | + | |
142 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
143 | + Lekcja 1.6.: EDYCJA PLIKU | |
144 | + | |
145 | + | |
146 | + ** U¿yj :wq aby zapisaæ plik i wyj¶æ. ** | |
147 | + | |
148 | + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca³± lekcjê !! | |
149 | + | |
150 | + 1. Zakoñcz tutorial tak jak w lekcji 1.2.: :q! | |
151 | + | |
152 | + 2. W pow³oce wydaj polecenie: vim tutor<ENTER> | |
153 | + "vim" jest poleceniem uruchamiaj±cym edytor Vimm. 'tutor' to nazwa pliku | |
154 | + jaki chcesz edytowaæ. U¿yj pliku jaki mo¿e zostaæ zmieniony. | |
155 | + | |
156 | + 3. Dodaj i usuñ tekst tak jak siê nauczy³e¶ w poprzednich lekcjach. | |
157 | + | |
158 | + 4. Zapisz plik ze zmianami w opu¶æ Vima: :wq<ENTER> | |
159 | + | |
160 | + 5. Uruchom ponownie vimtutor i przejd¼ do podsumowania lekcji. | |
161 | + | |
162 | + 6. Po przeczytaniu wszystkich kroków i zrozumieniu ich: wykonaj je. | |
163 | + | |
164 | + | |
165 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
117 | 166 | LEKCJA 1. PODSUMOWANIE |
118 | 167 | |
119 | 168 | 1. Poruszasz kursorem u¿ywaj±c "strza³ek" i klawiszy hjkl . |
120 | 169 | h (w lewo) j (w dó³) k (do góry) l (w prawo) |
121 | 170 | |
122 | - 2. By wej¶æ do Vim-a (od znaku zachêty) wpisz: | |
171 | + 2. By wej¶æ do Vim-a (z pow³oki) wpisz: | |
123 | 172 | vim NAZWA_PLIKU<ENTER> |
124 | 173 | |
125 | 174 | 3. By wyj¶æ z Vim-a wpisz: |
126 | 175 | <ESC> :q!<ENTER> by usun±c wszystkie zmiany. |
127 | 176 | LUB: <ESC> :wq<ENTER> by zmiany zachowaæ. |
128 | 177 | |
129 | - 4. By usun±æ znak pod kursorem w trybie Normal: x | |
178 | + 4. By usun±æ znak pod kursorem wci¶nij: x | |
130 | 179 | |
131 | - 5. By wstawiæ tekst przed kursorem w trybie Normal: | |
132 | - i type in text <ESC> | |
180 | + 5. By wstawiæ tekst przed kursorem lub dodaæ: | |
181 | + i wpisz tekst <ESC> wstawi przed kursorem | |
182 | + A wpisz tekst <ESC> doda na koñcu linii | |
133 | 183 | |
134 | 184 | UWAGA: Wci¶niêcie <ESC> przeniesie Ciê z powrotem do trybu Normal |
135 | 185 | lub odwo³a niechciane lub czê¶ciowo wprowadzone polecenia. |
136 | 186 | |
137 | 187 | Teraz mo¿emy kontynuowaæ i przej¶æ do Lekcji 2. |
138 | - | |
139 | 188 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
140 | 189 | Lekcja 2.1.: POLECENIE DELETE (usuwanie) |
141 | 190 | |
142 | 191 | |
143 | - ** Wpisz dw by usun±c tekst do koñca wyrazu. ** | |
192 | + ** Wpisz dw by usun±c wyraz. ** | |
144 | 193 | |
145 | 194 | 1. Wci¶nij <ESC> by upewniæ siê, ¿e jeste¶ w trybie Normal. |
146 | 195 |
@@ -150,9 +199,9 @@ | ||
150 | 199 | |
151 | 200 | 4. Wpisz dw by usun±c wyraz. |
152 | 201 | |
153 | - UWAGA: Litery dw bêd± siê pojawiaæ na dole ekranu w miarê | |
154 | - wpisywania. Je¶li wpisa³e¶ co¶ ¼le wci¶nij <ESC> i zacznij od | |
155 | - pocz±tku. | |
202 | + UWAGA: Litera d pojawi siê na dole ekranu. Vim czeka na wpisanie w . | |
203 | + Je¶li zobaczysz inny znak wpisa³e¶ co¶ ¼le, wci¶nij <ESC> i zacznij | |
204 | + od pocz±tku. | |
156 | 205 | |
157 | 206 | ---> Jest tu parê papier wyrazów, które kamieñ nie nale¿± do no¿yce tego zdania. |
158 | 207 |
@@ -183,53 +232,99 @@ | ||
183 | 232 | |
184 | 233 | |
185 | 234 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
186 | - Lekcja 2.3.: O POLECENIACH I OBIEKTACH | |
235 | + Lekcja 2.3.: O OPERATORACH I RUCHACH | |
187 | 236 | |
188 | 237 | |
189 | - Format dla polecenia usuwaj±cego d jest taki: | |
238 | + Wiele poleceñ zmieniaj±cych tekst s± z³o¿one z operatora i ruchu. | |
239 | + Format dla polecenia usuwaj±cego z operatorem d jest taki: | |
190 | 240 | |
191 | - [liczba] d obiekt LUB d [liczba] obiekt | |
241 | + d ruch | |
192 | 242 | |
193 | 243 | Gdzie: |
194 | - liczba - ile razy polecenie ma byæ wykonane (opcjonalne, domy¶lna=1). | |
195 | - d - polecenie usuwaj±ce. | |
196 | - obiekt - na czym polecenie bêdzie wykonywane (lista poni¿ej). | |
244 | + d - operator usuwania. | |
245 | + ruch - na czym polecenie bêdzie wykonywane (lista poni¿ej). | |
197 | 246 | |
198 | - Krótka lista obiektów: | |
199 | - w - od kursora do koñca wyrazu w³±czaj±c spacjê. | |
200 | - e - od kursora do koñca wyrazu NIE w³±czaj±c spacji. | |
201 | - $ - od kursora do koñca linii. | |
247 | + Krótka lista ruchów: | |
248 | + w - do pocz±tku nastêpnego wyrazu WY£¡CZAJ¡C pierwszy znak. | |
249 | + e - do koñca bie¿±cego wyrazu, W£¡CZAJ¡C ostatni znak. | |
250 | + $ - do koñca linii, W£¡CZAJ¡C ostatni znak. | |
202 | 251 | |
203 | -UWAGA: Dla ciekawskich, wybieranie obiektu w trybie Normal bez polecania | |
204 | - polecenia przeniesie kursor tak jak opisano w li¶cie obiektów. | |
252 | +W ten sposób wpisanie de usunie znaki od kursora do koñca wyrazu. | |
253 | + | |
254 | +UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor | |
255 | + tak jak to okre¶lono. | |
256 | + | |
257 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
258 | + Lekcja 2.4.: U¯YCIE MNO¯NIKA DLA RUCHU | |
259 | + | |
260 | + | |
261 | + ** Wpisanie liczby przed ruchem powtarza ruch odpowiedni± ilo¶æ razy. ** | |
262 | + | |
263 | + 1. Przenie¶ kursor na pocz±tek linii poni¿ej zaznaczonej --->. | |
264 | + | |
265 | + 2. Wpisz 2w aby przenie¶æ kursor o dwa wyrazy do przodu. | |
266 | + | |
267 | + 3. Wpisz 3e aby przenie¶æ kursor do koñca trzeciego wyrazu w przód. | |
268 | + | |
269 | + 4. Wpisz 0 (zero) aby przenie¶æ kursor do pocz±tku linii. | |
270 | + | |
271 | + 5. Powtórz kroki 2. i 3. z innymi liczbami. | |
272 | + | |
273 | + | |
274 | + ---> To jest zwyk³y wiersz z wyrazami po których mo¿esz siê poruszaæ. | |
275 | + | |
276 | + 6. Przejd¼ do lekcji 2.5. | |
205 | 277 | |
206 | 278 | |
207 | 279 | |
208 | 280 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
209 | - Lekcja 2.4.: WYJ¡TEK DO 'POLECENIE-OBIEKT' | |
281 | + Lekcja 2.5.: U¯YCIE MNO¯NIKA BY WIÊCEJ USUN¡Æ | |
210 | 282 | |
211 | 283 | |
212 | - ** Wpisz dd by usun±c ca³± liniê. ** | |
284 | + ** Wpisanie liczby z operatorem powtarza go odpowiedni± ilo¶æ razy. ** | |
213 | 285 | |
214 | - Z powodu czêsto¶ci usuwania ca³ych linii, projektanci Vim-a zdecydowali, ¿e | |
215 | - bêdzie ³atwiej wpisaæ dwa razy pod rz±d d aby usun±æ liniê. | |
286 | + W wy¿ej wspomnianej kombinacji operatora usuwania i ruchu podaj mno¿nik | |
287 | + przed ruchem by wiêcej usun±æ: | |
288 | + d liczba ruch | |
289 | + | |
290 | + 1. Przenie¶ kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. | |
291 | + | |
292 | + 2. Wpisz 2dw aby usun±æ dwa wyrazy KAPITALIKAMI. | |
293 | + | |
294 | + 3. Powtarzaj kroki 1. i 2. z innymi mno¿nikami aby usun±æ kolejne wyrazy | |
295 | + KAPITALIKAMI jednym poleceniem | |
296 | + | |
297 | +---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów zosta³a ERT FGH CF oczyszczona. | |
298 | + | |
299 | +UWAGA: Mno¿nik pomiêdzy operatorem d i ruchem dzia³a podobnie do ruchu bez | |
300 | + operatora. | |
301 | + | |
302 | + | |
303 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
304 | + Lekcja 2.6.: OPEROWANIE NA LINIACH | |
305 | + | |
306 | + | |
307 | + ** Wpisz dd aby usun±æ ca³± liniê. ** | |
308 | + | |
309 | + Z powodu czêsto¶ci usuwania ca³ych linii, projektanci VI zdecydowali, ¿e | |
310 | + bêdzie ³atwiej wpisaæ dwa razy d aby usun±æ liniê. | |
216 | 311 | |
217 | 312 | 1. Przenie¶ kursor do zdania poni¿ej. |
218 | 313 | 2. Wpisz dd aby usun±c wiersz. |
219 | 314 | 3. Teraz przenie¶ siê do czwartego wiersza. |
220 | - 4. Wpisz 2dd (pamiêtaj liczba-polecenie-obiekt) aby usun±c dwia wiersze. | |
315 | + 4. Wpisz 2dd aby usun±c dwia wiersze. | |
221 | 316 | |
222 | - 1) Ró¿e s± czerwone, | |
223 | - 2) B³oto jest fajne, | |
224 | - 3) Fio³ki s± niebieskie, | |
225 | - 4) Mam samochód, | |
226 | - 5) Zegar podaje czas, | |
227 | - 6) Cukier jest s³odki, | |
228 | - 7) I ty te¿. | |
317 | +---> 1) Ró¿e s± czerwone, | |
318 | +---> 2) B³oto jest fajne, | |
319 | +---> 3) Fio³ki s± niebieskie, | |
320 | +---> 4) Mam samochód, | |
321 | +---> 5) Zegar podaje czas, | |
322 | +---> 6) Cukier jest s³odki, | |
323 | +---> 7) I ty te¿. | |
229 | 324 | |
230 | 325 | |
231 | 326 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
232 | - Lekcja 2.5.: POLECENIE UNDO (cofnij) | |
327 | + Lekcja 2.7.: POLECENIE UNDO (cofnij) | |
233 | 328 | |
234 | 329 | |
235 | 330 | ** Wci¶nij u aby cofn±æ skutki ostatniego polecenia. |
@@ -254,62 +349,62 @@ | ||
254 | 349 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
255 | 350 | LEKCJA 2. PODSUMOWANIE |
256 | 351 | |
257 | - 1. By usun±æ znaki od kursora do koñca wyrazu wpisz: dw | |
258 | - | |
259 | - 2. By usun±æ znaki od kursora do koñca linii wpisz: d$ | |
260 | - | |
261 | - 3. By usun±æ ca³± liniê: dd | |
262 | 352 | |
263 | - 4. Format polecenia w trybie Normal: | |
264 | - | |
265 | - [liczba] polecenie obiekt LUB polecenie [liczba] obiekt | |
266 | - | |
267 | - Gdzie: | |
268 | - liczba - ile razy polecenie ma byæ wykonane | |
269 | - polecenie - to co trzeba zrobiæ (np. d dla usuwania) | |
270 | - obiekt - na czym polecenie bêdzie wykonywane, takie jak w (wyraz), | |
353 | + 1. By usun±æ znaki od kursora do nastêpnego wyrazu wpisz: dw | |
354 | + 2. By usun±æ znaki od kursora do koñca linii wpisz: d$ | |
355 | + 3. By usun±æ ca³± liniê: dd | |
356 | + 4. By powtórzyæ ruch poprzed¼ go liczb±: 2w | |
357 | + 5. Format polecenia zmiany to: | |
358 | + operator [liczba] ruch | |
359 | + gdzie: | |
360 | + operator - to co trzeba zrobiæ (np. d dla usuwania) | |
361 | + [liczba] - opcjonalne, ile razy powtórzyæ ruch | |
362 | + ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), | |
271 | 363 | $ (do koñca linii), etc. |
272 | 364 | |
273 | - 5. By cofn±æ poprzednie polecenie, wpisz: u (ma³e u) | |
365 | + 6. By przej¶æ do pocz±tku linii u¿yj zera: 0 | |
366 | + 7. By cofn±æ poprzednie polecenie, wpisz: u (ma³e u) | |
274 | 367 | By cofn±æ wszystkie zmiany w linii wpisz: U (wielkie U) |
275 | 368 | By cofn±æ cofniêcia wpisz: CTRL-R |
276 | 369 | |
370 | + | |
371 | + | |
277 | 372 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
278 | 373 | Lekcja 3.1.: POLECENIE PUT (wstaw) |
279 | 374 | |
280 | 375 | |
281 | - ** Wpisz p by wstawiæ ostatnie usuniêcia po kursorze. ** | |
376 | + ** Wpisz p by wstawiæ ostatnie usuniêcia za kursorem. ** | |
282 | 377 | |
283 | - 1. Przenie¶ kursor do pierwszej linii w zestawie poni¿ej. | |
378 | + 1. Przenie¶ kursor do pierwszej linii ---> poni¿ej. | |
284 | 379 | |
285 | - 2. Wpisz dd aby usun±æ liniê i przechowaæ j± w buforze Vim-a. | |
380 | + 2. Wpisz dd aby usun±æ liniê i przechowaæ j± w rejestrze Vim-a. | |
286 | 381 | |
287 | - 3. Przenie¶ kursor do linii POWY¯EJ tej gdzie usuniêta linia powinna | |
382 | + 3. Przenie¶ kursor do linii c), POWY¯EJ tej gdzie usuniêta linia powinna | |
288 | 383 | siê znajdowaæ. |
289 | 384 | |
290 | - 4. W trybie Normal, wci¶nij p by wstawiæ liniê. | |
385 | + 4. Wci¶nij p by wstawiæ liniê poni¿ej kursora. | |
291 | 386 | |
292 | 387 | 5. Powtaj kroki 2. do 4. a¿ znajd± siê w odpowiednim porz±dku. |
293 | 388 | |
294 | - d) Jak dwa anio³ki. | |
295 | - b) Na dole fio³ki, | |
296 | - c) A my siê kochamy, | |
297 | - a) Na górze ró¿e, | |
389 | +---> d) Jak dwa anio³ki. | |
390 | +---> b) Na dole fio³ki, | |
391 | +---> c) A my siê kochamy, | |
392 | +---> a) Na górze ró¿e, | |
298 | 393 | |
299 | 394 | |
300 | 395 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
301 | 396 | Lekcja 3.2.: POLECENIE REPLACE (zast±p) |
302 | 397 | |
303 | 398 | |
304 | - ** Wpisz r a nastêpnie znak by zast±piæ znak pod kursorem. ** | |
399 | + ** Wpisz rx aby zast±piæ znak pod kursorem na x . ** | |
305 | 400 | |
306 | 401 | 1. Przenie¶ kursor do pierwszej linii poni¿ej oznaczonej ---> |
307 | 402 | |
308 | 403 | 2. Ustaw kursor na pierwszym b³êdzie. |
309 | 404 | |
310 | - 3. Wpisz r a potem znak jaki powinien zast±piæ b³êdny. | |
405 | + 3. Wpisz r a potem znak jaki powinien go zast±piæ. | |
311 | 406 | |
312 | - 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bêdzie poprawna. | |
407 | + 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bêdzie taka jak druga. | |
313 | 408 | |
314 | 409 | ---> Kjedy ten wiersz bi³ wstókiwany kto¶ wcizn±³ perê z³ych klawirzy! |
315 | 410 | ---> Kiedy ten wiersz by³ wstukiwany kto¶ wcisn±³ parê z³ych klawiszy! |
@@ -321,18 +416,17 @@ | ||
321 | 416 | |
322 | 417 | |
323 | 418 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
324 | - Lekcja 3.3.: POLECENIE CHANGE (zmieñ) | |
419 | + Lekcja 3.3.: OPERATOR CHANGE (zmieñ) | |
325 | 420 | |
326 | - ** By zmieniæ ca³e s³owo lub jego czê¶æ wpisz cw (change word). ** | |
421 | + ** By zmieniæ do koñca wyrazu wpisz ce . ** | |
327 | 422 | |
328 | 423 | 1. Przenie¶ kursor do pierwszej linii poni¿ej oznaczonej --->. |
329 | 424 | |
330 | 425 | 2. Umie¶æ kursor na u w lunos. |
331 | 426 | |
332 | - 3. Wpisz cw i popraw wyraz (w tym wypadku wstaw 'inia'). | |
427 | + 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). | |
333 | 428 | |
334 | - 4. Wci¶nij <ESC> i przejd¼ do nastêpnego b³êdu (pierwszy znak, który ma | |
335 | - ulec zmianie). | |
429 | + 4. Wci¶nij <ESC> i przejd¼ do nastêpnej planowanej zmiany. | |
336 | 430 | |
337 | 431 | 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie bêdzie takie same |
338 | 432 | jak drugie. |
@@ -340,20 +434,21 @@ | ||
340 | 434 | ---> Ta lunos ma pire s³ów, które t¿ina zbnic u¿ifajonc pcmazu zmieñ. |
341 | 435 | ---> Ta linia ma parê s³ów, które trzeba zmieniæ u¿ywaj±c polecenia zmieñ. |
342 | 436 | |
343 | - Zauwa¿, ¿e cw nie tylko zamienia wyraz, ale tak¿e zmienia tryb na | |
437 | + Zauwa¿, ¿e ce nie tylko zamienia wyraz, ale tak¿e zmienia tryb na | |
344 | 438 | Insert (wprowadzanie). |
345 | 439 | |
440 | + | |
346 | 441 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
347 | 442 | Lekcja 3.4.: WIÊCEJ ZMIAN U¯YWAJ¡C c |
348 | 443 | |
349 | 444 | |
350 | - ** Polecenie change u¿ywa takich samych obiektów jak delete. ** | |
445 | + ** Polecenie change u¿ywa takich samych ruchów jak delete. ** | |
351 | 446 | |
352 | - 1. Polecenie change dzia³a tak samo jak delete. Format wygl±da tak: | |
447 | + 1. Operator change dzia³a tak samo jak delete. Format wygl±da tak: | |
353 | 448 | |
354 | - [liczba] c obiekt LUB c [liczba] obiekt | |
449 | + c [liczba] ruch | |
355 | 450 | |
356 | - 2. Obiekty s± tak¿e takie same, np.: w (wyraz), $ (koniec linii), etc. | |
451 | + 2. Ruchy s± tak¿e takie same, np.: w (wyraz), $ (koniec linii), etc. | |
357 | 452 | |
358 | 453 | 3. Przenie¶ siê do pierwszej linii poni¿ej oznaczonej ---> |
359 | 454 |
@@ -364,7 +459,7 @@ | ||
364 | 459 | ---> Koniec tego wiersza musi byæ poprawiony aby wygl±dal tak jak drugi. |
365 | 460 | ---> Koniec tego wiersza musi byæ poprawiony u¿ywaj±c polecenia c$ . |
366 | 461 | |
367 | - | |
462 | +UWAGA: Mo¿esz u¿ywaæ <BS> aby poprawiaæ b³êdy w czasie pisania. | |
368 | 463 | |
369 | 464 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
370 | 465 | LEKCJA 3. PODSUMOWANIE |
@@ -377,41 +472,41 @@ | ||
377 | 472 | 2. By zamieniæ znak pod kursorem wci¶nij r a potem znak, który ma zast±piæ |
378 | 473 | oryginalny. |
379 | 474 | |
380 | - 3. Polecenie change pozwala Ci na zast±pienie wyszczególnionego obiektu | |
381 | - od kursora do koñca obiektu. Np. wpisz cw aby zamieniæ tekst od | |
382 | - kursora do koñca wyrazu, c$ aby zmieniæ tekst do koñca linii. | |
475 | + 3. Operator change pozwala Ci na zast±pienie od kursora do miejsca gdzie | |
476 | + zabra³by ciê ruch. Np. wpisz ce aby zamieniæ tekst od kursora do koñca | |
477 | + wyrazu, c$ aby zmieniæ tekst do koñca linii. | |
383 | 478 | |
384 | 479 | 4. Format do polecenia change (zmieñ): |
385 | 480 | |
386 | - [liczba] c obiekt LUB c [liczba] obiekt | |
481 | + c [liczba] obiekt | |
387 | 482 | |
388 | 483 | Teraz przejd¼ do nastêpnej lekcji. |
389 | 484 | |
390 | 485 | |
391 | 486 | |
392 | 487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
393 | - Lekcja 4.1.: LOKALIZACJA ORAZ STATUS PLIKU | |
488 | + Lekcja 4.1.: PO£O¯ENIE KURSORA ORAZ STATUS PLIKU | |
394 | 489 | |
395 | 490 | ** Naci¶nij CTRL-G aby zobaczyæ swoje po³o¿enie w pliku i status |
396 | - pliku. Naci¶nij SHIFT-G aby przej¶æ do linii w pliku. ** | |
491 | + pliku. Naci¶nij G aby przej¶æ do linii w pliku. ** | |
397 | 492 | |
398 | 493 | UWAGA: Przeczytaj ca³± lekcjê zanim wykonasz jakie¶ polecenia!!! |
399 | 494 | |
400 | - 1. Przytrzymaj klawisz CTRL i wci¶nij g . Na dole strony pojawi siê pasek | |
401 | - statusu z nazw± pliku i numerem linii, w której jeste¶. Zapamiêtaj numer | |
402 | - linii dla potrzeb kroku 3. | |
495 | + 1. Przytrzymaj klawisz CTRL i wci¶nij g . U¿ywamy notacji CTRL-G. | |
496 | + Na dole strony pojawi siê pasek statusu z nazw± pliku i pozycj± w pliku. | |
497 | + Zapamiêtaj numer linii dla potrzeb kroku 3. | |
403 | 498 | |
404 | - 2. Wci¶nij SHIFT-G aby przej¶æ na koniec pliku. | |
499 | +UWAGA: Mo¿esz te¿ zobaczyæ pozycjê kursora w prawym, dolnym rogu ekranu. | |
500 | + Dzieje siê tak kiedy ustawiona jest opcja 'ruler' (wyja¶nione w lekcji 6.). | |
405 | 501 | |
406 | - 3. Wpisz numer linii, w której by³e¶ a potem SHIFT-G. To przeniesie Ciê | |
407 | - z powrotem do linii, w której by³e¶ kiedy wcisn±³e¶ CTRL-G (kiedy | |
408 | - wpisujesz numery NIE pojawiaj± siê one na ekranie). | |
502 | + 2. Wci¶nij G aby przej¶æ na koniec pliku. | |
503 | + Wci¶nij gg aby przej¶æ do pocz±tku pliku. | |
504 | + | |
505 | + 3. Wpisz numer linii, w której by³e¶ a potem G . To przeniesie ciê | |
506 | + z powrotem do linii, w której by³e¶ kiedy wcisn±³e¶ CTRL-G. | |
409 | 507 | |
410 | 508 | 4. Je¶li czujesz siê wystarczaj±co pewnie, wykonaj kroki 1-3. |
411 | 509 | |
412 | - | |
413 | - | |
414 | - | |
415 | 510 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
416 | 511 | Lekcja 4.2.: POLECENIE SZUKAJ |
417 | 512 |
@@ -424,16 +519,16 @@ | ||
424 | 519 | 2. Teraz wpisz b³ond<ENTER> . To jest s³owo, którego chcesz szukaæ. |
425 | 520 | |
426 | 521 | 3. By szukaæ tej samej frazy ponownie, po prostu wci¶nij n . |
427 | - Aby szukaæ tej frazy w przeciwnym, kierunku wci¶nij SHIFT-N. | |
522 | + Aby szukaæ tej frazy w przeciwnym, kierunku wci¶nij N . | |
428 | 523 | |
429 | 524 | 4. Je¶li chcesz szukaæ frazy do ty³u, u¿yj polecenia ? zamiast / . |
430 | 525 | |
431 | ----> Kiedy polecenie 'szukaj' osi±gnie koniec pliku, przeszukiwanie | |
432 | - zacznie siê od pocz±tku pliku. | |
526 | + 5. Aby wróciæ gdzie by³e¶ wci¶nij CTRL-O. Powtarzaj by wróciæ dalej. CTRL-I | |
527 | + idzie do przodu. | |
433 | 528 | |
434 | - 'b³ond' to nie jest metoda by przeliterowaæ b³±d; 'b³ond' to b³±d. | |
435 | - | |
436 | - | |
529 | +UWAGA: 'b³ond' to nie jest metoda by przeliterowaæ b³±d; 'b³ond' to b³±d. | |
530 | +UWAGA: Kiedy szukanie osi±gnie koniec pliku bêdzie kontynuowa³o od pocz±tku | |
531 | +o ile opcja 'wrapscan' nie zosta³a przestawiona. | |
437 | 532 | |
438 | 533 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
439 | 534 | Lekcja 4.3.: W POSZUKIWANIU PARUJ¡CYCH NAWIASÓW |
@@ -449,6 +544,8 @@ | ||
449 | 544 | |
450 | 545 | 4. Wci¶nij % aby przenie¶æ kursor z powrotem do paruj±cego nawiasu. |
451 | 546 | |
547 | + 5. Przenie¶ kursor do innego (,),[,],{ lub } i zobacz co robi % . | |
548 | + | |
452 | 549 | ---> To ( jest linia testowa z (, [, ] i {, } . )) |
453 | 550 | |
454 | 551 | UWAGA: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu |
@@ -456,10 +553,8 @@ | ||
456 | 553 | |
457 | 554 | |
458 | 555 | |
459 | - | |
460 | - | |
461 | 556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
462 | - Lekcja 4.4.: INNA METODA POPRAWIANIA B£ÊDÓW | |
557 | + Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) | |
463 | 558 | |
464 | 559 | |
465 | 560 | ** Wpisz :s/stary/nowy/g aby zamieniæ 'stary' na 'nowy'. ** |
@@ -469,30 +564,32 @@ | ||
469 | 564 | 2. Wpisz :s/czaas/czas<ENTER> . Zauwa¿, ¿e to polecenie zmienia |
470 | 565 | tylko pierwsze wyst±pienie 'czaas' w linii. |
471 | 566 | |
472 | - 3. Teraz wpisz :s/czaas/czas/g oznacza zamianê (substytucjê) | |
473 | - globalnie w ca³ej linii. Zmienia wszystkie wyst±pienia w linii. | |
567 | + 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianê (substytucjê) | |
568 | + globalnie w ca³ej linii. Zmienia wszystkie wyst±pienia 'czaas' w linii. | |
474 | 569 | |
475 | 570 | ---> Najlepszy czaas na zobaczenie naj³adniejszych kwiatów to czaas wiosny. |
476 | 571 | |
477 | 572 | 4. Aby zmieniæ wszystkie wyst±pienia ³añcucha znaków pomiêdzy dwoma liniami, |
478 | - wpisz: :#,#s/stare/nowe/g gdzie #,# s± numerami dwóch linii. | |
479 | - Wpisz :%s/stare/nowe/g by zmieniæ wszystkie wyst±pienia w ca³ym pliku. | |
480 | - | |
481 | - | |
482 | - | |
573 | + wpisz: :#,#s/stare/nowe/g gdzie #,# s± numerami linii ograniczaj±cych | |
574 | + region gdzie ma nast±piæ zamiana. | |
575 | + wpisz :%s/stare/nowe/g by zmieniæ wszystkie wyst±pienia w ca³ym pliku. | |
576 | + wpisz :%s/stare/nowe/gc by zmieniæ wszystkie wyst±pienia w ca³ym | |
577 | + pliku, prosz±c o potwierdzenie za ka¿dym razem | |
483 | 578 | |
484 | 579 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
485 | 580 | LEKCJA 4. PODSUMOWANIE |
486 | 581 | |
487 | - | |
488 | - 1. CTRL-G poka¿e Twoj± pozycjê w pliku i status pliku. SHIFT-G przenosi | |
489 | - Ciê do koñca pliku. SHIFT-G poprzedzony liczb± przenosi Ciê do linii | |
490 | - o tym numerze. | |
582 | + 1. CTRL-G poka¿e Twoj± pozycjê w pliku i status pliku. SHIFT-G przenosi | |
583 | + ciê do koñca pliku. | |
584 | + G przenosi do koñca pliku. | |
585 | + liczba G przenosi do linii [liczba]. | |
586 | + gg przenosi do pierwszej linii. | |
491 | 587 | |
492 | 588 | 2. Wpisanie / a nastêpnie ³añcucha znaków szuka ³añcucha DO PRZODU. |
493 | 589 | Wpisanie ? a nastêpnie ³añcucha znaków szuka ³añcucha DO TY£U. |
494 | 590 | Po wyszukiwaniu wci¶nij n by znale¼æ nastêpne wyst±pienie szukanej |
495 | - frazy tym samym kierunku lub Shift-N by szukaæ w kierunku przeciwnym. | |
591 | + frazy tym samym kierunku lub N by szukaæ w kierunku przeciwnym. | |
592 | + CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. | |
496 | 593 | |
497 | 594 | 3. Wpisanie % gdy kursor znajduje siê na (,),[,],{, lub } lokalizuje |
498 | 595 | paruj±cy znak. |
@@ -502,8 +599,6 @@ | ||
502 | 599 | By zamieniæ frazy pomiêdzy dwoma liniami # wpisz :#,#s/stary/nowy/g |
503 | 600 | By zamieniæ wszystkie wyst±pienia w pliku wpisz :%s/stary/nowy/g |
504 | 601 | By Vim prosi³ Ciê o potwierdzienie dodaj 'c' :%s/stary/nowy/gc |
505 | - | |
506 | - | |
507 | 602 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
508 | 603 | Lekcja 5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE |
509 | 604 |
@@ -520,9 +615,9 @@ | ||
520 | 615 | poka¿e spis plików w Twoim katalogu, tak jakby¶ by³ przy znaku zachêty |
521 | 616 | pow³oki. Mo¿esz te¿ u¿yæ :!dir je¶li ls nie dzia³a. |
522 | 617 | |
523 | ----> Uwaga: W ten sposób mo¿na wykonaæ wszystkie polecenia pow³oki. | |
524 | ----> Uwaga: Wszystkie polecenia : musz± byæ zakoñczone <ENTER>. | |
525 | - | |
618 | +Uwaga: W ten sposób mo¿na wykonaæ wszystkie polecenia pow³oki. | |
619 | +Uwaga: Wszystkie polecenia : musz± byæ zakoñczone <ENTER>. | |
620 | + Od tego momentu nie zawsze bêdziemy o tym wspominaæ. | |
526 | 621 | |
527 | 622 | |
528 | 623 |
@@ -531,7 +626,7 @@ | ||
531 | 626 | Lekcja 5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW |
532 | 627 | |
533 | 628 | |
534 | - ** By zachowaæ zmiany w pliku wpisz :w NAZWA_PLIKU . ** | |
629 | + ** By zachowaæ zmiany w tek¶ci wpisz :w NAZWA_PLIKU . ** | |
535 | 630 | |
536 | 631 | 1. Wpisz :!dir lub :!ls by zobaczyæ spis plików w katalogu. |
537 | 632 | Ju¿ wiesz, ¿e musisz wcisn±æ <ENTER> po tym. |
@@ -541,37 +636,37 @@ | ||
541 | 636 | 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw± pliku jak± wybra³e¶.) |
542 | 637 | |
543 | 638 | 4. To polecenie zapamiêta ca³y plik (Vim Tutor) pod nazw± TEST. |
544 | - By to sprawdziæ wpisz :!dir , ¿eby znowu zobaczyæ listê plików. | |
639 | + By to sprawdziæ wpisz :!dir lub :!ls , ¿eby znowu zobaczyæ listê plików. | |
545 | 640 | |
546 | ----> Zauwa¿, ¿e gdyby¶ teraz wyszed³ z Vim-a, a nastêpnie wszed³ ponownie | |
547 | - komend± vim TEST , plik by³by dok³adn± kopi± tutoriala kiedy go | |
548 | - zapisywa³e¶. | |
641 | +Uwaga: Zauwa¿, ¿e gdyby¶ teraz wyszed³ z Vim-a, a nastêpnie wszed³ ponownie | |
642 | + komend± vim TEST , plik by³by dok³adn± kopi± tutoriala kiedy go | |
643 | + zapisywa³e¶. | |
549 | 644 | |
550 | 645 | 5. Teraz usuñ plik wpisuj±c: :!rm TEST |
551 | 646 | |
552 | 647 | |
553 | 648 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
554 | - Lekcja 5.3.: SELEKTYWNE POLECENIE WRITE (zapisz) | |
649 | + Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU | |
555 | 650 | |
556 | 651 | |
557 | - ** By zachowaæ czê¶æ pliku wpisz :#,# w NAZWA_PLIKU ** | |
558 | - | |
559 | - 1. Jeszcze raz wpisz :!dir lub :!ls by uzyskaæ listê plików | |
560 | - w katalogu i wybierz odpowiedni± nazwê tak± jak TEST. | |
561 | - | |
562 | - 2. Przenie¶ kursor na góre tej strony i wci¶nij CTRL-G by uzyskaæ | |
563 | - numer linii. ZAPAMIÊTAJ TÊ LICZBÊ! | |
652 | + ** By zachowaæ czê¶æ pliku wpisz v ruch :w NAZWA_PLIKU ** | |
564 | 653 | |
565 | - 3. Teraz przenie¶ siê na dó³ strony i wpisz CTRL-G znowu. ZAPAMIÊTAJ | |
566 | - NUMER TAK¯E TEJ LINII! | |
654 | + 1. Przenie¶ kursor do tego wiersza. | |
567 | 655 | |
568 | - 4. By zachowaæ JEDYNIE czê¶æ pliku wpisz :#,# w TEST gdzie #,# to | |
569 | - dwie liczby jakie zapamiêta³e¶ (góra, dó³ ekranu), a TEST to nazwa | |
570 | - Twojego pliku. | |
656 | + 2. Wci¶nij v i przenie¶ kursor do punktu 5. Zauwa¿, ¿e tekst zosta³ | |
657 | + pod¶wietlony. | |
571 | 658 | |
572 | - 5. Ponownie sprawd¼ czy ten plik tam jest ( :!dir ), ale NIE usuwaj go. | |
659 | + 3. Wci¶nij znak : . Na dole ekranu pojawi siê :'<,'> . | |
573 | 660 | |
661 | + 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. | |
662 | + Upewnij siê, ¿e widzisz :'<,'>w TEST zanim wci¶niesz Enter. | |
574 | 663 | |
664 | + 5. Vim zapisze wybrane linie do pliku TEST. U¿yj :!dir lub :!ls , ¿eby to | |
665 | + zobaczyæ. Jeszcze go nie usuwaj! U¿yjemy go w nastêpnej lekcji. | |
666 | + | |
667 | +UWAGA: Wci¶niêcie v zaczyna tryb Wizualny. Mo¿esz poruszaæ kursorem by | |
668 | + zmieniæ rozmiary zaznaczenia. Mo¿esz te¿ u¿yæ operatora by zrobiæ co¶ | |
669 | + z tekstem. Na przyk³ad d usuwa tekst. | |
575 | 670 | |
576 | 671 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
577 | 672 | Lekcja 5.4.: WSTAWIANIE I £¡CZENIE PLIKÓW |
@@ -579,21 +674,21 @@ | ||
579 | 674 | |
580 | 675 | ** By wstawiæ zawarto¶æ pliku wpisz :r NAZWA_PLIKU ** |
581 | 676 | |
582 | - 1. Wpisz :!dir by siê upewniæ, ze Twój plik TEST zosta³ poprawnie | |
583 | - zapamiêtany. | |
677 | + 1. Umie¶æ kursor tu¿ powy¿ej tej linii. | |
584 | 678 | |
585 | - 2. Umie¶æ kursor na górze strony. | |
586 | - | |
587 | -UWAGA: Po wykonaniu kroku 3. ponownie zobaczysz Lekcjê 5.3. Potem przejd¼ | |
679 | +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd¼ | |
588 | 680 | do DO£U by zobaczyæ ponownie tê lekcjê. |
589 | 681 | |
590 | - 3. Teraz wczytaj plik TEST u¿ywaj±c polecenia :r TEST , gdzie TEST | |
682 | + 2. Teraz wczytaj plik TEST u¿ywaj±c polecenia :r TEST , gdzie TEST | |
591 | 683 | jest nazw± pliku. |
684 | + Wczytany plik jest umieszczony poni¿ej linii z kursorem. | |
592 | 685 | |
593 | -UWAGA: Plik, który wczytujesz jest wstawiany tam gdzie by³ kursor. | |
686 | + 3. By sprawdziæ czy plik zosta³ wczytany cofnij kursor i zobacz, ¿e | |
687 | + teraz s± dwie kopie Lekcji 5.3., orygina³ i kopia z pliku. | |
594 | 688 | |
595 | - 4. By sprawdziæ czy plik zosta³ wczytany cofnij kursor i zobacz, ¿e | |
596 | - teraz s± dwie kopie Lekcji 5.3., orygina³ i kopia z pliku. | |
689 | +UWAGA: Mo¿esz te¿ wczytaæ wyj¶cie zewnêtrznego polecenia. Na przyk³ad | |
690 | + :r !ls wczytuje wyj¶cie polecenia ls i umieszcza je pod kursorem. | |
691 | + | |
597 | 692 | |
598 | 693 | |
599 | 694 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
@@ -610,12 +705,12 @@ | ||
610 | 705 | |
611 | 706 | 2. :w NAZWA_PLIKU zapisuje obecny plik Vim-a na dysk z nazw± NAZWA_PLIKU. |
612 | 707 | |
613 | - 3. :#,#w NAZWA_PLIKU zapisuje linie od # do # w pliku NAZWA_PLIKU. | |
708 | + 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. | |
614 | 709 | |
615 | 710 | 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do |
616 | - bie¿±cego pliku po kursorze. | |
711 | + bie¿±cego pliku poni¿ej kursora. | |
617 | 712 | |
618 | - | |
713 | + 5. :r !dir wczytuje wyj¶cie polecenia dir i umieszcza je poni¿ej kursora. | |
619 | 714 | |
620 | 715 | |
621 | 716 |
@@ -631,16 +726,16 @@ | ||
631 | 726 | 2. Wpisz o (ma³e) by otworzyæ liniê PONI¯EJ kursora i przenie¶æ siê |
632 | 727 | do trybu Insert (wprowadzanie). |
633 | 728 | |
634 | - 3. Teraz przepisz liniê oznaczon± ---> i wci¶nij <ESC> by wyj¶æ | |
635 | - z trybu Insert (wprowadzanie). | |
729 | + 3. Wpisz trochê tekstu i wci¶nij <ESC> by wyj¶æ z trybu Insert (wprowadzanie). | |
636 | 730 | |
637 | ----> Po wci¶niêciu o kursor znajdzie siê w otwartej linii w trybie | |
638 | - Insert (wprowadzanie). | |
731 | +---> Po wci¶niêciu o kursor znajdzie siê w otwartej linii w trybie Insert. | |
639 | 732 | |
640 | 733 | 4. By otworzyæ liniê POWY¯EJ kursora wci¶nij wielkie O zamiast ma³ego |
641 | 734 | o . Wypróbuj to na linii poni¿ej. |
642 | 735 | |
643 | - Otwórz liniê powy¿ej wciskaj±c SHIFT-O gdy kursor bêdzie na tej linii. | |
736 | +---> Otwórz liniê powy¿ej wciskaj±c SHIFT-O gdy kursor bêdzie na tej linii. | |
737 | + | |
738 | + | |
644 | 739 | |
645 | 740 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
646 | 741 | Lekcja 6.2.: POLECENIE APPEND (dodaj) |
@@ -648,137 +743,203 @@ | ||
648 | 743 | |
649 | 744 | ** Wpisz a by dodaæ tekst ZA kursorem. ** |
650 | 745 | |
651 | - 1. Przenie¶ kursor do koñca pierwszej linii poni¿ej oznaczonej ---> | |
652 | - Zrób to wciskaj±c $ w trybie Normal. | |
653 | - | |
654 | - 2. Wpisz a (ma³e) aby dodaæ tekst ZA znakiem pod kursorem. | |
655 | - Wielkie A dodaje tekst na koñcu linii. | |
746 | + 1. Przenie¶ kursor do pocz±tku pierwszej linii poni¿ej oznaczonej ---> | |
656 | 747 | |
657 | -Uwaga: To oszczêdza wpisania: ostatni znak ( $ ), i , tekst do dodania, | |
658 | - <ESC>, strza³ka w prawo i ostatecznie x , tylko po to by dodaæ | |
659 | - tekst na koñcu linii. | |
748 | + 2. Wciskaj e dopóki kursor nie bêdzie na koñcu li . | |
660 | 749 | |
661 | - 3. Teraz dokoñcz pierwsz± liniê. Zauwa¿ tak¿e, ¿e append (dodaj) | |
662 | - dzia³a tak samo jak tryb Insert (wprowadzanie) z wyj±tkiem tego gdzie | |
663 | - tekst jest wstawiany. | |
750 | + 3. Wpisz a (ma³e) aby dodaæ tekst ZA znakiem pod kursorem. | |
664 | 751 | |
665 | ----> Ta linia pozwoli Ci æwiczyæ | |
752 | + 4. Dokoñcz wyraz tak jak w linii poni¿ej. Wci¶nij <ESC> aby opu¶ciæ tryb | |
753 | + Insert. | |
754 | + | |
755 | + 5. U¿yj e by przej¶æ do kolejnego niedokoñczonego wyraze i powtarzaj kroki | |
756 | + 3. i 4. | |
757 | + | |
758 | +---> Ta li poz Ci æwi dodaw teks do koñ lin | |
666 | 759 | ---> Ta linia pozwoli Ci æwiczyæ dodawanie tekstu do koñca linii. |
667 | 760 | |
761 | +Uwaga: a , i and A prowadz± do trybu Insert, jedyn± ró¿nic± jest miejsce | |
762 | + gdzie nowe znaki bêd± dodawane. | |
668 | 763 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
669 | 764 | Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) |
670 | 765 | |
671 | 766 | |
672 | 767 | ** Wpisz wielkie R by zamieniæ wiêcej ni¿ jeden znak. ** |
673 | 768 | |
674 | - 1. Przenie¶ kursor do pierwszej linii poni¿ej oznaczonej --->. | |
675 | - | |
676 | - 2. Umie¶æ kursor na pocz±tku pierwszego wyrazu, który rózni siê od | |
677 | - drugiej linii oznaczonej ---> (wyraz 'ostatni'). | |
769 | + 1. Przenie¶ kursor do pierwszej linii poni¿ej oznaczonej --->. Przenie¶ | |
770 | + kursor do pierwszego xxx . | |
678 | 771 | |
679 | - 3. Teraz wpisz R i zamieñ resztê tekstu w pierwszej linii przez | |
680 | - nadpisanie nad starym tekstem tak aby pierwsza linia brzmia³a tak samo | |
681 | - jak druga. | |
772 | + 2. Wci¶nij R i wpisz numer poni¿ej w drugiej linii, tak, ¿e zast±pi on | |
773 | + xxx. | |
682 | 774 | |
683 | ----> To make the first line the same as the last on this page use the keys. | |
684 | ----> To make the first line the same as the second, type R and the new text. | |
775 | + 3. Wci¶nij <ESC> by opu¶ciæ tryb Replace. Zauwa¿, ¿e reszta linii pozostaje | |
776 | + niezmieniona. | |
685 | 777 | |
686 | - 4. Zauwa¿, ¿e kiedy wci¶niesz <ESC> aby wyj¶æ niezmieniony tekst | |
687 | - pozostaje. | |
778 | + 5. Powtarzaj kroki by wymieniæ wszystkie xxx. | |
779 | + | |
780 | +---> Dodanie 123 do xxx daje xxx. | |
781 | +---> Dodanie 123 do 456 daje 579. | |
782 | + | |
783 | +UWAGA: Tryb Replace jest jak tryb Insert, ale ka¿dy znak usuwa istniej±cy | |
784 | + znak. | |
785 | + | |
786 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
787 | + Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU | |
688 | 788 | |
689 | 789 | |
790 | + ** u¿yj operatora y aby skopiowaæ tekst i p aby go wkleiæ ** | |
791 | + | |
792 | + 1. Przejd¼ do linii oznaczonej ---> i umie¶c kursor za "a)". | |
793 | + | |
794 | + 2. Wejd¼ w tryb Visual v i przenie¶ kursor na pocz±tek "pierwszy". | |
795 | + | |
796 | + 3. Wci¶nij y aby yankowaæ (kopiowaæ) pod¶wietlony tekst. | |
797 | + | |
798 | + 4. Przenie¶ kursor do koñca nastêpnej linii: j$ | |
799 | + | |
800 | + 5. Wci¶nij p aby wpakowaæ (paste) tekst. Dodaj: a drugi<ESC> . | |
801 | + | |
802 | + 6. U¿yj trybu Visual aby wybraæ " element.", yankuj go y , przejd¼ do koñca | |
803 | + nastêpnej linii j$ i upakuj tam tekst z p . | |
804 | + | |
805 | +---> a) to jest pierwszy element. | |
806 | + b) | |
807 | +Uwaga: mo¿esz u¿yæ y jako operatora; yw kopiuje jeden wyraz. | |
690 | 808 | |
691 | 809 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
692 | - Lekcja 6.4.: USTAWIANIE OPCJI | |
810 | + Lekcja 6.5.: USTAWIANIE OPCJI | |
693 | 811 | |
694 | 812 | |
695 | 813 | ** Ustawianie opcji tak by szukaj lub substytucja ignorowa³y wielko¶æ liter ** |
696 | 814 | |
697 | - 1. Szukaj 'ignore' wpisuj±c (w trybie Normal): | |
698 | - /ignore | |
815 | + 1. Szukaj 'ignore' wpisuj±c: /ignore<ENTER> | |
699 | 816 | Powtórz szukanie kilka razy naciskaj±c klawisz n . |
700 | 817 | |
701 | 818 | 2. Ustaw opcjê 'ic' (Ignore case -- ignoruj wielko¶æ liter) poprzez |
702 | 819 | wpisanie: :set ic |
703 | 820 | |
704 | - 3. Teraz szukaj 'ignore' ponownie wciskuj±c: n | |
705 | - Powtórz szukanie kilka razy naciskaj±c klawisz n . | |
821 | + 3. Teraz szukaj 'ignore' ponownie wciskuj±c: n | |
822 | + Zauwa¿, ¿e Ignore i IGNORE tak¿e s± teraz znalezione. | |
706 | 823 | |
707 | - 4. Ustaw opcje 'hlsearch' i 'incsearch': | |
708 | - :set hls is | |
824 | + 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is | |
709 | 825 | |
710 | 826 | 5. Teraz wprowad¼ polecenie szukaj ponownie i zobacz co siê zdarzy: |
711 | - /ignore | |
827 | + /ignore<ENTER> | |
712 | 828 | |
829 | + 6. Aby wy³±czyæ ignorowanie wielko¶ci liter: :set noic | |
713 | 830 | |
831 | +Uwaga: Aby usun±æ pod¶wietlanie dopasowañ wpisz: :nohlsearch | |
832 | +Uwaga: Aby ignorowaæ wielko¶æ liter dla jednego wyszukiwania: /ignore\c<ENTER> | |
714 | 833 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
715 | 834 | LEKCJA 6. PODSUMOWANIE |
716 | 835 | |
717 | 836 | |
718 | - 1. Wpisanie o otwiera liniê PONI¯EJ kursora i umieszcza kursor | |
719 | - w otwartej linii w trybie Insert (wprowadzanie). | |
720 | - Wpisanie wielkiego O otwiera liniê POWY¯EJ linii, w której | |
721 | - znajduje siê kursor. | |
722 | - | |
837 | + 1. Wpisanie o otwiera liniê PONI¯EJ kursora. | |
838 | + Wpisanie wielkiego O otwiera liniê POWY¯EJ kursora. | |
723 | 839 | 2. Wpisz a by wstawiæ tekst ZA znakiem na, którym jest kursor. |
724 | - Wpisanie wielkiego A automatycznie dodaje tekst na koñcu linii. | |
725 | - | |
726 | - 3. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki | |
840 | + Wpisanie wielkiego A dodaje tekst na koñcu linii. | |
841 | + 3. Polecenie e przenosi do koñca wyrazu. | |
842 | + 4. Operato y yankuje (kopiuje) tekst, p pakuje (wkleja, paste) go. | |
843 | + 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki | |
727 | 844 | nie zostanie wci¶niêty <ESC>. |
728 | - | |
729 | - 4. Wpisanie ":set xxx" ustawia opcjê "xxx". | |
730 | - | |
731 | - | |
845 | + 6. Wpisanie ":set xxx" ustawia opcjê "xxx". Nietkóre opcje: | |
846 | + 'ic' 'ignorecase' ignoruj wielko¶æ znaków | |
847 | + 'is' 'incsearch' poka¿ czê¶ciowe dopasowania | |
848 | + 'hls' 'hlsearch' pod¶wietl wszystkie dopasowania | |
849 | + Mo¿esz u¿yæ zarówno d³ugiej jak i krótkiej formy. | |
850 | + 7. Dodaj "no" aby wy³±czyæ opcjê: :set noic | |
732 | 851 | |
733 | 852 | |
734 | 853 | |
735 | 854 | |
736 | 855 | |
737 | 856 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
738 | - LEKCJA 7. POLECENIA POMOCY ON-LINE | |
739 | - | |
857 | + LEKCJA 7.1. JAK UZYSKAÆ POMOC | |
740 | 858 | |
741 | 859 | ** U¿ycie systemu pomocy on-line ** |
742 | 860 | |
743 | 861 | Vim posiada bardzo dobry system pomocy on-line. By zacz±æ spróbuj jednej |
744 | 862 | z trzech mo¿liwo¶ci: |
745 | - | |
746 | 863 | - wci¶nij klawisz <HELP> (je¶li takowy posiadasz) |
747 | 864 | - wci¶nij klawisz <F1> (je¶li takowy posiadasz) |
748 | 865 | - wpisz :help<ENTER> |
749 | 866 | |
750 | - Wpisz :q<ENTER> by zamkn±c okno pomocy. | |
867 | + Przeczytaj tekst w oknie pomocy aby dowiedzieæ siê jak dzia³a pomoc. | |
868 | + wpisz CTRL-W CTRL-W aby przeskoczyæ z jednego okna do innego | |
869 | + wpisz :q<ENTER> aby zamkn±æ okno pomocy. | |
751 | 870 | |
752 | 871 | Mo¿esz te¿ znale¼æ pomoc na ka¿dy temat podaj±c argument polecenia ":help". |
753 | 872 | Spróbuj tych (nie zapomnij wcisn±æ <ENTER>): |
754 | 873 | |
755 | 874 | :help w |
756 | - :help c_<T | |
875 | + :help c_CTRL-D | |
757 | 876 | :help insert-index |
758 | 877 | :help user-manual |
759 | - | |
760 | 878 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
761 | - LEKCJA 8. TWORZENIE SKRYPTU STARTOWEGO | |
879 | + LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO | |
762 | 880 | |
763 | - ** W³±czanie mo¿liwo¶ci Vim-a ** | |
881 | + ** W³±cz mo¿liwo¶ci Vim-a ** | |
764 | 882 | |
765 | 883 | Vim ma o wiele wiêcej mo¿liwo¶ci ni¿ Vi, ale wiêkszo¶æ z nich jest domy¶lnie |
766 | 884 | wy³±czona. Je¶li chcesz w³±czyæ te mo¿liwo¶ci na starcie musisz utworzyæ |
767 | 885 | plik "vimrc". |
768 | 886 | |
769 | 887 | 1. Pocz±tek edycji pliku "vimrc" zale¿y od Twojego systemu: |
770 | - :edit ~/.vimrc dla Unixa | |
888 | + :edit ~/.vimrc dla Uniksa | |
771 | 889 | :edit $VIM/_vimrc dla MS-Windows |
772 | - | |
773 | 890 | 2. Teraz wczytaj przyk³adowy plik "vimrc": |
774 | 891 | :read $VIMRUNTIME/vimrc_example.vim |
775 | - | |
776 | 892 | 3. Zapisz plik: |
777 | - :write | |
893 | + :w | |
778 | 894 | |
779 | 895 | Nastêpnym razem gdy zaczniesz pracê w Vimie bêdzie on u¿ywaæ pod¶wietlania |
780 | 896 | sk³adni. Mo¿esz dodaæ wszystkie swoje ulubione ustawienia do tego pliku |
781 | 897 | "vimrc". |
898 | + Aby uzyskaæ wiêcej informacji wpisz :help vimrc-intro | |
899 | + | |
900 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
901 | + Lekcja 7.3.: UZUPE£NIANIE | |
902 | + | |
903 | + | |
904 | + ** Uzupe³nianie linii poleceñ z CTRL-D i <TAB> ** | |
905 | + | |
906 | + 1. Upewnij siê, ¿e Vim nie jest w trybie kompatybilno¶ci: :set nocp | |
907 | + | |
908 | + 2. Zerknij jakie pliki s± w bie¿±cm katalogu: :!ls lub :!dir | |
909 | + | |
910 | + 3. Wpisz pocz±tek polecenia: :e | |
911 | + | |
912 | + 4. Wci¶nij CTRL-D i Vim poka¿e listê poleceñ jakie zaczynaj± siê na "e". | |
913 | + | |
914 | + 5. Wci¶nij <TAB> i Vim uzupe³ni polecenie do ":edit". | |
915 | + | |
916 | + 6. Dodaj spacjê i zacznij wpisywaæ nazwê istniej±cego pliku: :edit FIL | |
917 | + | |
918 | + 7. Wci¶nij <TAB>. Vim uzupe³ni nazwê (je¶li jest niepowtarzalna). | |
919 | + | |
920 | +UWAGA: Uzupe³nianie dzia³a dla wielu poleceñ. Spróbuj wcisn±æ CTRL-D i <TAB>. | |
921 | + U¿yteczne zw³aszcza przy :help . | |
922 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
923 | + Lekcja 7. PODSUMOWANIE | |
924 | + | |
925 | + | |
926 | + 1. Wpisz :help lub wci¶nij <F1> lub <Help> aby otworzyæ okno pomocy. | |
927 | + | |
928 | + 2. Wpisz :help cmd aby uzyskaæ pomoc o cmd . | |
929 | + | |
930 | + 3. Wpisz CTRL-W CTRL-W aby przeskoczyæ do innego okna. | |
931 | + | |
932 | + 4. Wpisz :q aby zamkn±æ okno pomocy. | |
933 | + | |
934 | + 5. Utwórz plik startowy vimrc aby zachowaæ wybrane ustawienia. | |
935 | + | |
936 | + 6. Po poleceniu : , wci¶nij CTRL-D aby zobaczyæ mo¿liwe uzupe³nienia. | |
937 | + Wci¶nij <TAB> aby u¿yæ jednego z nich. | |
938 | + | |
939 | + | |
940 | + | |
941 | + | |
942 | + | |
782 | 943 | |
783 | 944 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
784 | 945 |
@@ -826,5 +987,5 @@ | ||
826 | 987 | Przet³umaczone przez Miko³aja Machowskiego, |
827 | 988 | Sierpieñ 2001, |
828 | 989 | rev. Marzec 2002 |
990 | + 2nd rev. Wrzesieñ 2004 | |
829 | 991 | Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl |
830 | - |
@@ -1,5 +1,5 @@ | ||
1 | 1 | =============================================================================== |
2 | -= W i t a j w t u t o r i a l u V I M - a - Wersja 1.5. = | |
2 | += W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = | |
3 | 3 | =============================================================================== |
4 | 4 | |
5 | 5 | Vim to potê¿ny edytor, który posiada wiele poleceñ, zbyt du¿o by |
@@ -8,21 +8,23 @@ | ||
8 | 8 | u¿ywaæ Vim-a jako edytora ogólnego przeznaczenia. |
9 | 9 | |
10 | 10 | Czas potrzebny na ukoñczenie tutoriala to 25 do 30 minut i zale¿y |
11 | - od tego jak wiele czasu spêdzisz na eksperymentowaniu. Polecenia | |
12 | - wykonywane w czasie lekcji zmodyfikuj¹ tekst. Zrób wczeniej kopiê | |
13 | - tego pliku do æwiczeñ (jeli zacz¹³e komend¹ "vimtutor" to ju¿ | |
14 | - pracujesz na kopii). | |
11 | + od tego jak wiele czasu spêdzisz na eksperymentowaniu. | |
12 | + | |
13 | + UWAGA: | |
14 | + Polecenia wykonywane w czasie lekcji zmodyfikuj¹ tekst. Zrób | |
15 | + wczeniej kopiê tego pliku do æwiczeñ (jeli zacz¹³e komend¹ | |
16 | + "vimtutor" to ju¿ pracujesz na kopii). | |
15 | 17 | |
16 | 18 | Wa¿ne jest, by pamiêta³, ¿e przewodnik ten zosta³ zaprojektowany do |
17 | 19 | nauki poprzez æwiczenia. To oznacza, ¿e musisz wykonywaæ polecenia |
18 | 20 | by nauczyæ siê ich prawid³owo. Jeli bêdziesz jedynie czyta³ tekst |
19 | 21 | szybko zapomnisz wiele poleceñ! |
20 | 22 | |
21 | - Teraz upewnij siê, ¿e nie masz wciniêtego CapsLocka i wciskaj j | |
23 | + Teraz upewnij siê, ¿e nie masz wciniêtego CapsLocka i wciskaj j | |
22 | 24 | tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu. |
23 | 25 | |
24 | 26 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
25 | - Lekcja 1.1.: PORUSZANIE SIÊ KURSOREM | |
27 | + Lekcja 1.1.: PORUSZANIE SIÊ KURSOREM | |
26 | 28 | |
27 | 29 | ** By wykonaæ ruch kursorem, wcinij h, j, k, l jak pokazano. ** |
28 | 30 |
@@ -34,7 +36,7 @@ | ||
34 | 36 | 1. Poruszaj kursorem dopóki nie bêdziesz pewien, ¿e pamiêtasz polecenia. |
35 | 37 | |
36 | 38 | 2. Trzymaj j tak d³ugo a¿ bêdzie siê powtarza³. |
37 | ----> Teraz wiesz jak dojæ do nastêpnej lekcji. | |
39 | + Teraz wiesz jak dojæ do nastêpnej lekcji. | |
38 | 40 | |
39 | 41 | 3. U¿ywaj¹c strza³ki w dó³ przejd do nastêpnej lekcji. |
40 | 42 |
@@ -43,35 +45,35 @@ | ||
43 | 45 | |
44 | 46 | Uwaga: Klawisze kursora tak¿e powinny dzia³aæ, ale u¿ywaj¹c hjkl bêdziesz |
45 | 47 | w stanie poruszaæ siê o wiele szybciej jak siê tylko przyzwyczaisz. |
48 | + Naprawdê! | |
46 | 49 | |
47 | 50 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
48 | - Lekcja 1.2.: WCHODZENIE I WYCHODZENIE Z VIM-a | |
51 | + Lekcja 1.2.: WYCHODZENIE Z VIM-a | |
49 | 52 | |
50 | 53 | !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca³¹ lekcjê.!! |
51 | 54 | |
52 | 55 | 1. Wcinij <ESC> (aby upewniæ siê, ¿e jeste w trybie Normal). |
53 | 56 | 2. Wpisz: :q!<ENTER>. |
54 | - | |
55 | ----> To spowoduje wyjcie z edytora BEZ zapamiêtywania zmian jakie | |
57 | + To spowoduje wyjcie z edytora PORZUCAJ¥C wszelkie zmiany jakie | |
56 | 58 | zd¹¿y³e zrobiæ. Jeli chcesz zapamiêtaæ zmiany i wyjæ |
57 | 59 | wpisz: :wq<ENTER> |
58 | 60 | |
59 | 61 | 3. Kiedy widzisz znak zachêty pow³oki wpisz komendê, ¿eby wróciæ |
60 | - do tutoriala. | |
61 | - Powinienie wpisaæ: vimtutor<ENTER> | |
62 | - Normalnie u¿y³by: vim tutor<ENTER> | |
63 | - | |
64 | ----> 'vim' oznacza edytor vim, 'tutor' jest plikem, który chcia³by | |
65 | - edytowaæ. | |
62 | + do tutoriala. Czyli: vimtutor<ENTER> | |
66 | 63 | |
67 | 64 | 4. Jeli chcesz zapamiêtaæ polecenia, wykonaj kroki 1. do 3. aby |
68 | - wyjæ i wróciæ do edytora. Potem przenie siê do Lekcji 1.3. | |
65 | + wyjæ i wróciæ do edytora. | |
66 | + | |
67 | +UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi³e. W nastêpnych | |
68 | +lekcjach dowiesz siê jak je zapamiêtywaæ. | |
69 | + | |
70 | + 5. Przenie kursor do lekcji 1.3. | |
71 | + | |
69 | 72 | |
70 | 73 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
71 | - Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE | |
74 | + Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE | |
72 | 75 | |
73 | - | |
74 | - ** W trybie Normal wcinij x aby usun¹æ znak pod kursorem. ** | |
76 | + ** Wcinij x aby usun¹æ znak pod kursorem. ** | |
75 | 77 | |
76 | 78 | 1. Przenie kursor do linii poni¿ej oznaczonej --->. |
77 | 79 |
@@ -90,11 +92,12 @@ | ||
90 | 92 | |
91 | 93 | |
92 | 94 | |
95 | + | |
93 | 96 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
94 | - Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) | |
97 | + Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) | |
95 | 98 | |
96 | 99 | |
97 | - ** W trybie Normal wcinij i aby wstawiæ tekst. ** | |
100 | + ** Wcinij i aby wstawiæ tekst. ** | |
98 | 101 | |
99 | 102 | 1. Przenie kursor do pierwszej linii poni¿ej oznaczonej --->. |
100 | 103 |
@@ -114,35 +117,81 @@ | ||
114 | 117 | |
115 | 118 | |
116 | 119 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
120 | + Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) | |
121 | + | |
122 | + | |
123 | + ** Wcinij A by dodaæ tekst. ** | |
124 | + | |
125 | + 1. Przenie kursor do pierwszej linii poni¿ej oznaczonej --->. | |
126 | + Nie ma znaczenia, który to bêdzie znak. | |
127 | + | |
128 | + 2. Wcinij A i wpisz odpowiednie dodatki. | |
129 | + | |
130 | + 3. Kiedy tekst zosta³ dodany, wcinij <ESC> i wróæ do trybu Normalnego. | |
131 | + | |
132 | + 4. Przenie kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3 | |
133 | + aby poprawiæ zdanie. | |
134 | + | |
135 | +---> Brakuje tu tro | |
136 | + Brakuje tu trochê tekstu. | |
137 | +---> Tu te¿ trochê bra | |
138 | + Tu te¿ trochê brakuje. | |
139 | + | |
140 | + 5. Kiedy ju¿ utrwali³e æwiczenie przejd do lekcji 1.6. | |
141 | + | |
142 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
143 | + Lekcja 1.6.: EDYCJA PLIKU | |
144 | + | |
145 | + | |
146 | + ** U¿yj :wq aby zapisaæ plik i wyjæ. ** | |
147 | + | |
148 | + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca³¹ lekcjê !! | |
149 | + | |
150 | + 1. Zakoñcz tutorial tak jak w lekcji 1.2.: :q! | |
151 | + | |
152 | + 2. W pow³oce wydaj polecenie: vim tutor<ENTER> | |
153 | + "vim" jest poleceniem uruchamiaj¹cym edytor Vimm. 'tutor' to nazwa pliku | |
154 | + jaki chcesz edytowaæ. U¿yj pliku jaki mo¿e zostaæ zmieniony. | |
155 | + | |
156 | + 3. Dodaj i usuñ tekst tak jak siê nauczy³e w poprzednich lekcjach. | |
157 | + | |
158 | + 4. Zapisz plik ze zmianami w opuæ Vima: :wq<ENTER> | |
159 | + | |
160 | + 5. Uruchom ponownie vimtutor i przejd do podsumowania lekcji. | |
161 | + | |
162 | + 6. Po przeczytaniu wszystkich kroków i zrozumieniu ich: wykonaj je. | |
163 | + | |
164 | + | |
165 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
117 | 166 | LEKCJA 1. PODSUMOWANIE |
118 | 167 | |
119 | - 1. Poruszasz kursorem u¿ywaj¹c "strza³ek" i klawiszy hjkl . | |
168 | + 1. Poruszasz kursorem u¿ywaj¹c "strza³ek" i klawiszy hjkl . | |
120 | 169 | h (w lewo) j (w dó³) k (do góry) l (w prawo) |
121 | 170 | |
122 | - 2. By wejæ do Vim-a (od znaku zachêty) wpisz: | |
171 | + 2. By wejæ do Vim-a (z pow³oki) wpisz: | |
123 | 172 | vim NAZWA_PLIKU<ENTER> |
124 | 173 | |
125 | 174 | 3. By wyjæ z Vim-a wpisz: |
126 | 175 | <ESC> :q!<ENTER> by usun¹c wszystkie zmiany. |
127 | 176 | LUB: <ESC> :wq<ENTER> by zmiany zachowaæ. |
128 | 177 | |
129 | - 4. By usun¹æ znak pod kursorem w trybie Normal: x | |
178 | + 4. By usun¹æ znak pod kursorem wcinij: x | |
130 | 179 | |
131 | - 5. By wstawiæ tekst przed kursorem w trybie Normal: | |
132 | - i type in text <ESC> | |
180 | + 5. By wstawiæ tekst przed kursorem lub dodaæ: | |
181 | + i wpisz tekst <ESC> wstawi przed kursorem | |
182 | + A wpisz tekst <ESC> doda na koñcu linii | |
133 | 183 | |
134 | 184 | UWAGA: Wciniêcie <ESC> przeniesie Ciê z powrotem do trybu Normal |
135 | 185 | lub odwo³a niechciane lub czêciowo wprowadzone polecenia. |
136 | 186 | |
137 | 187 | Teraz mo¿emy kontynuowaæ i przejæ do Lekcji 2. |
138 | - | |
139 | 188 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
140 | - Lekcja 2.1.: POLECENIE DELETE (usuwanie) | |
189 | + Lekcja 2.1.: POLECENIE DELETE (usuwanie) | |
141 | 190 | |
142 | 191 | |
143 | - ** Wpisz dw by usun¹c tekst do koñca wyrazu. ** | |
192 | + ** Wpisz dw by usun¹c wyraz. ** | |
144 | 193 | |
145 | - 1. Wcinij <ESC> by upewniæ siê, ¿e jeste w trybie Normal. | |
194 | + 1. Wcinij <ESC> by upewniæ siê, ¿e jeste w trybie Normal. | |
146 | 195 | |
147 | 196 | 2. Przenie kursor do linii poni¿ej oznaczonej --->. |
148 | 197 |
@@ -150,9 +199,9 @@ | ||
150 | 199 | |
151 | 200 | 4. Wpisz dw by usun¹c wyraz. |
152 | 201 | |
153 | - UWAGA: Litery dw bêd¹ siê pojawiaæ na dole ekranu w miarê | |
154 | - wpisywania. Jeli wpisa³e co le wcinij <ESC> i zacznij od | |
155 | - pocz¹tku. | |
202 | + UWAGA: Litera d pojawi siê na dole ekranu. Vim czeka na wpisanie w . | |
203 | + Jeli zobaczysz inny znak wpisa³e co le, wcinij <ESC> i zacznij | |
204 | + od pocz¹tku. | |
156 | 205 | |
157 | 206 | ---> Jest tu parê papier wyrazów, które kamieñ nie nale¿¹ do no¿yce tego zdania. |
158 | 207 |
@@ -163,15 +212,15 @@ | ||
163 | 212 | Lekcja 2.2.: WIÊCEJ POLECEÑ USUWAJ¥CYCH |
164 | 213 | |
165 | 214 | |
166 | - ** Wpisz d$ aby usun¹æ tekst do koñca linii. ** | |
215 | + ** Wpisz d$ aby usun¹æ tekst do koñca linii. ** | |
167 | 216 | |
168 | - 1. Wcinij <ESC> aby siê upewniæ, ¿e jeste w trybie Normal. | |
217 | + 1. Wcinij <ESC> aby siê upewniæ, ¿e jeste w trybie Normal. | |
169 | 218 | |
170 | 219 | 2. Przenie kursor do linii poni¿ej oznaczonej --->. |
171 | 220 | |
172 | 221 | 3. Przenie kursor do koñca poprawnego zdania (PO pierwszej . ). |
173 | 222 | |
174 | - 4. Wpisz d$ aby usun¹æ resztê linii. | |
223 | + 4. Wpisz d$ aby usun¹æ resztê linii. | |
175 | 224 | |
176 | 225 | ---> Kto wpisa³ koniec tego zdania dwukrotnie. zdania dwukrotnie. |
177 | 226 |
@@ -183,53 +232,99 @@ | ||
183 | 232 | |
184 | 233 | |
185 | 234 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
186 | - Lekcja 2.3.: O POLECENIACH I OBIEKTACH | |
235 | + Lekcja 2.3.: O OPERATORACH I RUCHACH | |
187 | 236 | |
188 | 237 | |
189 | - Format dla polecenia usuwaj¹cego d jest taki: | |
238 | + Wiele poleceñ zmieniaj¹cych tekst s¹ z³o¿one z operatora i ruchu. | |
239 | + Format dla polecenia usuwaj¹cego z operatorem d jest taki: | |
190 | 240 | |
191 | - [liczba] d obiekt LUB d [liczba] obiekt | |
241 | + d ruch | |
192 | 242 | |
193 | 243 | Gdzie: |
194 | - liczba - ile razy polecenie ma byæ wykonane (opcjonalne, domylna=1). | |
195 | - d - polecenie usuwaj¹ce. | |
196 | - obiekt - na czym polecenie bêdzie wykonywane (lista poni¿ej). | |
244 | + d - operator usuwania. | |
245 | + ruch - na czym polecenie bêdzie wykonywane (lista poni¿ej). | |
197 | 246 | |
198 | - Krótka lista obiektów: | |
199 | - w - od kursora do koñca wyrazu w³¹czaj¹c spacjê. | |
200 | - e - od kursora do koñca wyrazu NIE w³¹czaj¹c spacji. | |
201 | - $ - od kursora do koñca linii. | |
247 | + Krótka lista ruchów: | |
248 | + w - do pocz¹tku nastêpnego wyrazu WY£¥CZAJ¥C pierwszy znak. | |
249 | + e - do koñca bie¿¹cego wyrazu, W£¥CZAJ¥C ostatni znak. | |
250 | + $ - do koñca linii, W£¥CZAJ¥C ostatni znak. | |
202 | 251 | |
203 | -UWAGA: Dla ciekawskich, wybieranie obiektu w trybie Normal bez polecania | |
204 | - polecenia przeniesie kursor tak jak opisano w licie obiektów. | |
252 | +W ten sposób wpisanie de usunie znaki od kursora do koñca wyrazu. | |
253 | + | |
254 | +UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor | |
255 | + tak jak to okrelono. | |
256 | + | |
257 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
258 | + Lekcja 2.4.: U¯YCIE MNO¯NIKA DLA RUCHU | |
259 | + | |
260 | + | |
261 | + ** Wpisanie liczby przed ruchem powtarza ruch odpowiedni¹ iloæ razy. ** | |
262 | + | |
263 | + 1. Przenie kursor na pocz¹tek linii poni¿ej zaznaczonej --->. | |
264 | + | |
265 | + 2. Wpisz 2w aby przenieæ kursor o dwa wyrazy do przodu. | |
266 | + | |
267 | + 3. Wpisz 3e aby przenieæ kursor do koñca trzeciego wyrazu w przód. | |
268 | + | |
269 | + 4. Wpisz 0 (zero) aby przenieæ kursor do pocz¹tku linii. | |
270 | + | |
271 | + 5. Powtórz kroki 2. i 3. z innymi liczbami. | |
272 | + | |
273 | + | |
274 | + ---> To jest zwyk³y wiersz z wyrazami po których mo¿esz siê poruszaæ. | |
275 | + | |
276 | + 6. Przejd do lekcji 2.5. | |
205 | 277 | |
206 | 278 | |
207 | 279 | |
208 | 280 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
209 | - Lekcja 2.4.: WYJ¥TEK DO 'POLECENIE-OBIEKT' | |
281 | + Lekcja 2.5.: U¯YCIE MNO¯NIKA BY WIÊCEJ USUN¥Æ | |
210 | 282 | |
211 | 283 | |
212 | - ** Wpisz dd by usun¹c ca³¹ liniê. ** | |
213 | - | |
214 | - Z powodu czêstoci usuwania ca³ych linii, projektanci Vim-a zdecydowali, ¿e | |
215 | - bêdzie ³atwiej wpisaæ dwa razy pod rz¹d d aby usun¹æ liniê. | |
284 | + ** Wpisanie liczby z operatorem powtarza go odpowiedni¹ iloæ razy. ** | |
216 | 285 | |
217 | - 1. Przenie kursor do zdania poni¿ej. | |
218 | - 2. Wpisz dd aby usun¹c wiersz. | |
219 | - 3. Teraz przenie siê do czwartego wiersza. | |
220 | - 4. Wpisz 2dd (pamiêtaj liczba-polecenie-obiekt) aby usun¹c dwia wiersze. | |
286 | + W wy¿ej wspomnianej kombinacji operatora usuwania i ruchu podaj mno¿nik | |
287 | + przed ruchem by wiêcej usun¹æ: | |
288 | + d liczba ruch | |
221 | 289 | |
222 | - 1) Ró¿e s¹ czerwone, | |
223 | - 2) B³oto jest fajne, | |
224 | - 3) Fio³ki s¹ niebieskie, | |
225 | - 4) Mam samochód, | |
226 | - 5) Zegar podaje czas, | |
227 | - 6) Cukier jest s³odki, | |
228 | - 7) I ty te¿. | |
290 | + 1. Przenie kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. | |
291 | + | |
292 | + 2. Wpisz 2dw aby usun¹æ dwa wyrazy KAPITALIKAMI. | |
293 | + | |
294 | + 3. Powtarzaj kroki 1. i 2. z innymi mno¿nikami aby usun¹æ kolejne wyrazy | |
295 | + KAPITALIKAMI jednym poleceniem | |
296 | + | |
297 | +---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów zosta³a ERT FGH CF oczyszczona. | |
298 | + | |
299 | +UWAGA: Mno¿nik pomiêdzy operatorem d i ruchem dzia³a podobnie do ruchu bez | |
300 | + operatora. | |
229 | 301 | |
230 | 302 | |
231 | 303 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
232 | - Lekcja 2.5.: POLECENIE UNDO (cofnij) | |
304 | + Lekcja 2.6.: OPEROWANIE NA LINIACH | |
305 | + | |
306 | + | |
307 | + ** Wpisz dd aby usun¹æ ca³¹ liniê. ** | |
308 | + | |
309 | + Z powodu czêstoci usuwania ca³ych linii, projektanci VI zdecydowali, ¿e | |
310 | + bêdzie ³atwiej wpisaæ dwa razy d aby usun¹æ liniê. | |
311 | + | |
312 | + 1. Przenie kursor do zdania poni¿ej. | |
313 | + 2. Wpisz dd aby usun¹c wiersz. | |
314 | + 3. Teraz przenie siê do czwartego wiersza. | |
315 | + 4. Wpisz 2dd aby usun¹c dwia wiersze. | |
316 | + | |
317 | +---> 1) Ró¿e s¹ czerwone, | |
318 | +---> 2) B³oto jest fajne, | |
319 | +---> 3) Fio³ki s¹ niebieskie, | |
320 | +---> 4) Mam samochód, | |
321 | +---> 5) Zegar podaje czas, | |
322 | +---> 6) Cukier jest s³odki, | |
323 | +---> 7) I ty te¿. | |
324 | + | |
325 | + | |
326 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
327 | + Lekcja 2.7.: POLECENIE UNDO (cofnij) | |
233 | 328 | |
234 | 329 | |
235 | 330 | ** Wcinij u aby cofn¹æ skutki ostatniego polecenia. |
@@ -241,7 +336,7 @@ | ||
241 | 336 | 3. Teraz wcinij u aby cofn¹æ skutki ostatniego polecenia. |
242 | 337 | 4. Tym razem popraw wszystkie b³êdy w linii u¿ywaj¹c polecenia x . |
243 | 338 | 5. Teraz wcinij wielkie U aby przywróciæ liniê do oryginalnego stanu. |
244 | - 6. Teraz wcinij u kilka razy by cofn¹æ U i poprzednie polecenia. | |
339 | + 6. Teraz wcinij u kilka razy by cofn¹æ U i poprzednie polecenia. | |
245 | 340 | 7. Teraz wpsz CTRL-R (trzymaj równoczenie wciniête klawisze CTRL i R) |
246 | 341 | kilka razy, by cofn¹æ cofniêcia. |
247 | 342 |
@@ -254,62 +349,62 @@ | ||
254 | 349 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
255 | 350 | LEKCJA 2. PODSUMOWANIE |
256 | 351 | |
257 | - 1. By usun¹æ znaki od kursora do koñca wyrazu wpisz: dw | |
258 | - | |
259 | - 2. By usun¹æ znaki od kursora do koñca linii wpisz: d$ | |
260 | - | |
261 | - 3. By usun¹æ ca³¹ liniê: dd | |
262 | 352 | |
263 | - 4. Format polecenia w trybie Normal: | |
264 | - | |
265 | - [liczba] polecenie obiekt LUB polecenie [liczba] obiekt | |
266 | - | |
267 | - Gdzie: | |
268 | - liczba - ile razy polecenie ma byæ wykonane | |
269 | - polecenie - to co trzeba zrobiæ (np. d dla usuwania) | |
270 | - obiekt - na czym polecenie bêdzie wykonywane, takie jak w (wyraz), | |
353 | + 1. By usun¹æ znaki od kursora do nastêpnego wyrazu wpisz: dw | |
354 | + 2. By usun¹æ znaki od kursora do koñca linii wpisz: d$ | |
355 | + 3. By usun¹æ ca³¹ liniê: dd | |
356 | + 4. By powtórzyæ ruch poprzed go liczb¹: 2w | |
357 | + 5. Format polecenia zmiany to: | |
358 | + operator [liczba] ruch | |
359 | + gdzie: | |
360 | + operator - to co trzeba zrobiæ (np. d dla usuwania) | |
361 | + [liczba] - opcjonalne, ile razy powtórzyæ ruch | |
362 | + ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), | |
271 | 363 | $ (do koñca linii), etc. |
272 | 364 | |
273 | - 5. By cofn¹æ poprzednie polecenie, wpisz: u (ma³e u) | |
365 | + 6. By przejæ do pocz¹tku linii u¿yj zera: 0 | |
366 | + 7. By cofn¹æ poprzednie polecenie, wpisz: u (ma³e u) | |
274 | 367 | By cofn¹æ wszystkie zmiany w linii wpisz: U (wielkie U) |
275 | 368 | By cofn¹æ cofniêcia wpisz: CTRL-R |
276 | 369 | |
277 | -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
278 | - Lekcja 3.1.: POLECENIE PUT (wstaw) | |
279 | 370 | |
280 | 371 | |
281 | - ** Wpisz p by wstawiæ ostatnie usuniêcia po kursorze. ** | |
372 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
373 | + Lekcja 3.1.: POLECENIE PUT (wstaw) | |
282 | 374 | |
283 | - 1. Przenie kursor do pierwszej linii w zestawie poni¿ej. | |
284 | 375 | |
285 | - 2. Wpisz dd aby usun¹æ liniê i przechowaæ j¹ w buforze Vim-a. | |
376 | + ** Wpisz p by wstawiæ ostatnie usuniêcia za kursorem. ** | |
286 | 377 | |
287 | - 3. Przenie kursor do linii POWY¯EJ tej gdzie usuniêta linia powinna | |
378 | + 1. Przenie kursor do pierwszej linii ---> poni¿ej. | |
379 | + | |
380 | + 2. Wpisz dd aby usun¹æ liniê i przechowaæ j¹ w rejestrze Vim-a. | |
381 | + | |
382 | + 3. Przenie kursor do linii c), POWY¯EJ tej gdzie usuniêta linia powinna | |
288 | 383 | siê znajdowaæ. |
289 | 384 | |
290 | - 4. W trybie Normal, wcinij p by wstawiæ liniê. | |
385 | + 4. Wcinij p by wstawiæ liniê poni¿ej kursora. | |
291 | 386 | |
292 | 387 | 5. Powtaj kroki 2. do 4. a¿ znajd¹ siê w odpowiednim porz¹dku. |
293 | 388 | |
294 | - d) Jak dwa anio³ki. | |
295 | - b) Na dole fio³ki, | |
296 | - c) A my siê kochamy, | |
297 | - a) Na górze ró¿e, | |
389 | +---> d) Jak dwa anio³ki. | |
390 | +---> b) Na dole fio³ki, | |
391 | +---> c) A my siê kochamy, | |
392 | +---> a) Na górze ró¿e, | |
298 | 393 | |
299 | 394 | |
300 | 395 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
301 | 396 | Lekcja 3.2.: POLECENIE REPLACE (zast¹p) |
302 | 397 | |
303 | 398 | |
304 | - ** Wpisz r a nastêpnie znak by zast¹piæ znak pod kursorem. ** | |
399 | + ** Wpisz rx aby zast¹piæ znak pod kursorem na x . ** | |
305 | 400 | |
306 | 401 | 1. Przenie kursor do pierwszej linii poni¿ej oznaczonej ---> |
307 | 402 | |
308 | 403 | 2. Ustaw kursor na pierwszym b³êdzie. |
309 | 404 | |
310 | - 3. Wpisz r a potem znak jaki powinien zast¹piæ b³êdny. | |
405 | + 3. Wpisz r a potem znak jaki powinien go zast¹piæ. | |
311 | 406 | |
312 | - 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bêdzie poprawna. | |
407 | + 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bêdzie taka jak druga. | |
313 | 408 | |
314 | 409 | ---> Kjedy ten wiersz bi³ wstókiwany kto wcizn¹³ perê z³ych klawirzy! |
315 | 410 | ---> Kiedy ten wiersz by³ wstukiwany kto wcisn¹³ parê z³ych klawiszy! |
@@ -321,18 +416,17 @@ | ||
321 | 416 | |
322 | 417 | |
323 | 418 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
324 | - Lekcja 3.3.: POLECENIE CHANGE (zmieñ) | |
419 | + Lekcja 3.3.: OPERATOR CHANGE (zmieñ) | |
325 | 420 | |
326 | - ** By zmieniæ ca³e s³owo lub jego czêæ wpisz cw (change word). ** | |
421 | + ** By zmieniæ do koñca wyrazu wpisz ce . ** | |
327 | 422 | |
328 | 423 | 1. Przenie kursor do pierwszej linii poni¿ej oznaczonej --->. |
329 | 424 | |
330 | 425 | 2. Umieæ kursor na u w lunos. |
331 | 426 | |
332 | - 3. Wpisz cw i popraw wyraz (w tym wypadku wstaw 'inia'). | |
427 | + 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). | |
333 | 428 | |
334 | - 4. Wcinij <ESC> i przejd do nastêpnego b³êdu (pierwszy znak, który ma | |
335 | - ulec zmianie). | |
429 | + 4. Wcinij <ESC> i przejd do nastêpnej planowanej zmiany. | |
336 | 430 | |
337 | 431 | 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie bêdzie takie same |
338 | 432 | jak drugie. |
@@ -340,20 +434,21 @@ | ||
340 | 434 | ---> Ta lunos ma pire s³ów, które t¿ina zbnic u¿ifajonc pcmazu zmieñ. |
341 | 435 | ---> Ta linia ma parê s³ów, które trzeba zmieniæ u¿ywaj¹c polecenia zmieñ. |
342 | 436 | |
343 | - Zauwa¿, ¿e cw nie tylko zamienia wyraz, ale tak¿e zmienia tryb na | |
437 | + Zauwa¿, ¿e ce nie tylko zamienia wyraz, ale tak¿e zmienia tryb na | |
344 | 438 | Insert (wprowadzanie). |
345 | 439 | |
440 | + | |
346 | 441 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
347 | 442 | Lekcja 3.4.: WIÊCEJ ZMIAN U¯YWAJ¥C c |
348 | 443 | |
349 | 444 | |
350 | - ** Polecenie change u¿ywa takich samych obiektów jak delete. ** | |
445 | + ** Polecenie change u¿ywa takich samych ruchów jak delete. ** | |
351 | 446 | |
352 | - 1. Polecenie change dzia³a tak samo jak delete. Format wygl¹da tak: | |
447 | + 1. Operator change dzia³a tak samo jak delete. Format wygl¹da tak: | |
353 | 448 | |
354 | - [liczba] c obiekt LUB c [liczba] obiekt | |
449 | + c [liczba] ruch | |
355 | 450 | |
356 | - 2. Obiekty s¹ tak¿e takie same, np.: w (wyraz), $ (koniec linii), etc. | |
451 | + 2. Ruchy s¹ tak¿e takie same, np.: w (wyraz), $ (koniec linii), etc. | |
357 | 452 | |
358 | 453 | 3. Przenie siê do pierwszej linii poni¿ej oznaczonej ---> |
359 | 454 |
@@ -364,7 +459,7 @@ | ||
364 | 459 | ---> Koniec tego wiersza musi byæ poprawiony aby wygl¹dal tak jak drugi. |
365 | 460 | ---> Koniec tego wiersza musi byæ poprawiony u¿ywaj¹c polecenia c$ . |
366 | 461 | |
367 | - | |
462 | +UWAGA: Mo¿esz u¿ywaæ <BS> aby poprawiaæ b³êdy w czasie pisania. | |
368 | 463 | |
369 | 464 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
370 | 465 | LEKCJA 3. PODSUMOWANIE |
@@ -377,69 +472,69 @@ | ||
377 | 472 | 2. By zamieniæ znak pod kursorem wcinij r a potem znak, który ma zast¹piæ |
378 | 473 | oryginalny. |
379 | 474 | |
380 | - 3. Polecenie change pozwala Ci na zast¹pienie wyszczególnionego obiektu | |
381 | - od kursora do koñca obiektu. Np. wpisz cw aby zamieniæ tekst od | |
382 | - kursora do koñca wyrazu, c$ aby zmieniæ tekst do koñca linii. | |
475 | + 3. Operator change pozwala Ci na zast¹pienie od kursora do miejsca gdzie | |
476 | + zabra³by ciê ruch. Np. wpisz ce aby zamieniæ tekst od kursora do koñca | |
477 | + wyrazu, c$ aby zmieniæ tekst do koñca linii. | |
383 | 478 | |
384 | 479 | 4. Format do polecenia change (zmieñ): |
385 | 480 | |
386 | - [liczba] c obiekt LUB c [liczba] obiekt | |
481 | + c [liczba] obiekt | |
387 | 482 | |
388 | 483 | Teraz przejd do nastêpnej lekcji. |
389 | 484 | |
390 | 485 | |
391 | 486 | |
392 | 487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
393 | - Lekcja 4.1.: LOKALIZACJA ORAZ STATUS PLIKU | |
488 | + Lekcja 4.1.: PO£O¯ENIE KURSORA ORAZ STATUS PLIKU | |
394 | 489 | |
395 | 490 | ** Nacinij CTRL-G aby zobaczyæ swoje po³o¿enie w pliku i status |
396 | - pliku. Nacinij SHIFT-G aby przejæ do linii w pliku. ** | |
491 | + pliku. Nacinij G aby przejæ do linii w pliku. ** | |
397 | 492 | |
398 | 493 | UWAGA: Przeczytaj ca³¹ lekcjê zanim wykonasz jakie polecenia!!! |
399 | 494 | |
400 | - 1. Przytrzymaj klawisz CTRL i wcinij g . Na dole strony pojawi siê pasek | |
401 | - statusu z nazw¹ pliku i numerem linii, w której jeste. Zapamiêtaj numer | |
402 | - linii dla potrzeb kroku 3. | |
495 | + 1. Przytrzymaj klawisz CTRL i wcinij g . U¿ywamy notacji CTRL-G. | |
496 | + Na dole strony pojawi siê pasek statusu z nazw¹ pliku i pozycj¹ w pliku. | |
497 | + Zapamiêtaj numer linii dla potrzeb kroku 3. | |
403 | 498 | |
404 | - 2. Wcinij SHIFT-G aby przejæ na koniec pliku. | |
499 | +UWAGA: Mo¿esz te¿ zobaczyæ pozycjê kursora w prawym, dolnym rogu ekranu. | |
500 | + Dzieje siê tak kiedy ustawiona jest opcja 'ruler' (wyjanione w lekcji 6.). | |
405 | 501 | |
406 | - 3. Wpisz numer linii, w której by³e a potem SHIFT-G. To przeniesie Ciê | |
407 | - z powrotem do linii, w której by³e kiedy wcisn¹³e CTRL-G (kiedy | |
408 | - wpisujesz numery NIE pojawiaj¹ siê one na ekranie). | |
502 | + 2. Wcinij G aby przejæ na koniec pliku. | |
503 | + Wcinij gg aby przejæ do pocz¹tku pliku. | |
504 | + | |
505 | + 3. Wpisz numer linii, w której by³e a potem G . To przeniesie ciê | |
506 | + z powrotem do linii, w której by³e kiedy wcisn¹³e CTRL-G. | |
409 | 507 | |
410 | 508 | 4. Jeli czujesz siê wystarczaj¹co pewnie, wykonaj kroki 1-3. |
411 | 509 | |
412 | - | |
413 | - | |
414 | - | |
415 | 510 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
416 | 511 | Lekcja 4.2.: POLECENIE SZUKAJ |
417 | 512 | |
418 | 513 | |
419 | - ** Wpisz / a nastêpnie wyra¿enie aby je znaleæ. ** | |
514 | + ** Wpisz / a nastêpnie wyra¿enie aby je znaleæ. ** | |
420 | 515 | |
421 | 516 | 1. W trybie Normal wpisz / . Zauwa¿, ¿e znak ten, oraz kursor pojawi¹ |
422 | - siê na dole ekranu tak samo jak polecenie : . | |
517 | + siê na dole ekranu tak samo jak polecenie : . | |
423 | 518 | |
424 | 519 | 2. Teraz wpisz b³ond<ENTER> . To jest s³owo, którego chcesz szukaæ. |
425 | 520 | |
426 | 521 | 3. By szukaæ tej samej frazy ponownie, po prostu wcinij n . |
427 | - Aby szukaæ tej frazy w przeciwnym, kierunku wcinij SHIFT-N. | |
522 | + Aby szukaæ tej frazy w przeciwnym, kierunku wcinij N . | |
428 | 523 | |
429 | 524 | 4. Jeli chcesz szukaæ frazy do ty³u, u¿yj polecenia ? zamiast / . |
430 | 525 | |
431 | ----> Kiedy polecenie 'szukaj' osi¹gnie koniec pliku, przeszukiwanie | |
432 | - zacznie siê od pocz¹tku pliku. | |
526 | + 5. Aby wróciæ gdzie by³e wcinij CTRL-O. Powtarzaj by wróciæ dalej. CTRL-I | |
527 | + idzie do przodu. | |
433 | 528 | |
434 | - 'b³ond' to nie jest metoda by przeliterowaæ b³¹d; 'b³ond' to b³¹d. | |
435 | - | |
436 | - | |
529 | +UWAGA: 'b³ond' to nie jest metoda by przeliterowaæ b³¹d; 'b³ond' to b³¹d. | |
530 | +UWAGA: Kiedy szukanie osi¹gnie koniec pliku bêdzie kontynuowa³o od pocz¹tku | |
531 | +o ile opcja 'wrapscan' nie zosta³a przestawiona. | |
437 | 532 | |
438 | 533 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
439 | 534 | Lekcja 4.3.: W POSZUKIWANIU PARUJ¥CYCH NAWIASÓW |
440 | 535 | |
441 | 536 | |
442 | - ** Wpisz % by znaleæ pasuj¹cy ),], lub } . ** | |
537 | + ** Wpisz % by znaleæ pasuj¹cy ),], lub } . ** | |
443 | 538 | |
444 | 539 | 1. Umieæ kursor na którym z (, [, lub { w linii poni¿ej oznaczonej --->. |
445 | 540 |
@@ -449,6 +544,8 @@ | ||
449 | 544 | |
450 | 545 | 4. Wcinij % aby przenieæ kursor z powrotem do paruj¹cego nawiasu. |
451 | 546 | |
547 | + 5. Przenie kursor do innego (,),[,],{ lub } i zobacz co robi % . | |
548 | + | |
452 | 549 | ---> To ( jest linia testowa z (, [, ] i {, } . )) |
453 | 550 | |
454 | 551 | UWAGA: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu |
@@ -456,10 +553,8 @@ | ||
456 | 553 | |
457 | 554 | |
458 | 555 | |
459 | - | |
460 | - | |
461 | 556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
462 | - Lekcja 4.4.: INNA METODA POPRAWIANIA B£ÊDÓW | |
557 | + Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) | |
463 | 558 | |
464 | 559 | |
465 | 560 | ** Wpisz :s/stary/nowy/g aby zamieniæ 'stary' na 'nowy'. ** |
@@ -469,41 +564,41 @@ | ||
469 | 564 | 2. Wpisz :s/czaas/czas<ENTER> . Zauwa¿, ¿e to polecenie zmienia |
470 | 565 | tylko pierwsze wyst¹pienie 'czaas' w linii. |
471 | 566 | |
472 | - 3. Teraz wpisz :s/czaas/czas/g oznacza zamianê (substytucjê) | |
473 | - globalnie w ca³ej linii. Zmienia wszystkie wyst¹pienia w linii. | |
567 | + 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianê (substytucjê) | |
568 | + globalnie w ca³ej linii. Zmienia wszystkie wyst¹pienia 'czaas' w linii. | |
474 | 569 | |
475 | 570 | ---> Najlepszy czaas na zobaczenie naj³adniejszych kwiatów to czaas wiosny. |
476 | 571 | |
477 | 572 | 4. Aby zmieniæ wszystkie wyst¹pienia ³añcucha znaków pomiêdzy dwoma liniami, |
478 | - wpisz: :#,#s/stare/nowe/g gdzie #,# s¹ numerami dwóch linii. | |
479 | - Wpisz :%s/stare/nowe/g by zmieniæ wszystkie wyst¹pienia w ca³ym pliku. | |
480 | - | |
481 | - | |
482 | - | |
573 | + wpisz: :#,#s/stare/nowe/g gdzie #,# s¹ numerami linii ograniczaj¹cych | |
574 | + region gdzie ma nast¹piæ zamiana. | |
575 | + wpisz :%s/stare/nowe/g by zmieniæ wszystkie wyst¹pienia w ca³ym pliku. | |
576 | + wpisz :%s/stare/nowe/gc by zmieniæ wszystkie wyst¹pienia w ca³ym | |
577 | + pliku, prosz¹c o potwierdzenie za ka¿dym razem | |
483 | 578 | |
484 | 579 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
485 | 580 | LEKCJA 4. PODSUMOWANIE |
486 | 581 | |
487 | - | |
488 | - 1. CTRL-G poka¿e Twoj¹ pozycjê w pliku i status pliku. SHIFT-G przenosi | |
489 | - Ciê do koñca pliku. SHIFT-G poprzedzony liczb¹ przenosi Ciê do linii | |
490 | - o tym numerze. | |
582 | + 1. CTRL-G poka¿e Twoj¹ pozycjê w pliku i status pliku. SHIFT-G przenosi | |
583 | + ciê do koñca pliku. | |
584 | + G przenosi do koñca pliku. | |
585 | + liczba G przenosi do linii [liczba]. | |
586 | + gg przenosi do pierwszej linii. | |
491 | 587 | |
492 | 588 | 2. Wpisanie / a nastêpnie ³añcucha znaków szuka ³añcucha DO PRZODU. |
493 | 589 | Wpisanie ? a nastêpnie ³añcucha znaków szuka ³añcucha DO TY£U. |
494 | 590 | Po wyszukiwaniu wcinij n by znaleæ nastêpne wyst¹pienie szukanej |
495 | - frazy tym samym kierunku lub Shift-N by szukaæ w kierunku przeciwnym. | |
591 | + frazy tym samym kierunku lub N by szukaæ w kierunku przeciwnym. | |
592 | + CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. | |
496 | 593 | |
497 | 594 | 3. Wpisanie % gdy kursor znajduje siê na (,),[,],{, lub } lokalizuje |
498 | 595 | paruj¹cy znak. |
499 | 596 | |
500 | - 4. By zamieniæ pierwszy stary na nowy w linii wpisz :s/stary/nowy | |
501 | - By zamieniæ wszystkie stary na nowy w linii wpisz :s/stary/nowy/g | |
502 | - By zamieniæ frazy pomiêdzy dwoma liniami # wpisz :#,#s/stary/nowy/g | |
503 | - By zamieniæ wszystkie wyst¹pienia w pliku wpisz :%s/stary/nowy/g | |
597 | + 4. By zamieniæ pierwszy stary na nowy w linii wpisz :s/stary/nowy | |
598 | + By zamieniæ wszystkie stary na nowy w linii wpisz :s/stary/nowy/g | |
599 | + By zamieniæ frazy pomiêdzy dwoma liniami # wpisz :#,#s/stary/nowy/g | |
600 | + By zamieniæ wszystkie wyst¹pienia w pliku wpisz :%s/stary/nowy/g | |
504 | 601 | By Vim prosi³ Ciê o potwierdzienie dodaj 'c' :%s/stary/nowy/gc |
505 | - | |
506 | - | |
507 | 602 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
508 | 603 | Lekcja 5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE |
509 | 604 |
@@ -518,11 +613,11 @@ | ||
518 | 613 | |
519 | 614 | 3. Jako przyk³ad wpisz ls za ! a nastêpnie wcinij <ENTER>. To polecenie |
520 | 615 | poka¿e spis plików w Twoim katalogu, tak jakby by³ przy znaku zachêty |
521 | - pow³oki. Mo¿esz te¿ u¿yæ :!dir jeli ls nie dzia³a. | |
616 | + pow³oki. Mo¿esz te¿ u¿yæ :!dir jeli ls nie dzia³a. | |
522 | 617 | |
523 | ----> Uwaga: W ten sposób mo¿na wykonaæ wszystkie polecenia pow³oki. | |
524 | ----> Uwaga: Wszystkie polecenia : musz¹ byæ zakoñczone <ENTER>. | |
525 | - | |
618 | +Uwaga: W ten sposób mo¿na wykonaæ wszystkie polecenia pow³oki. | |
619 | +Uwaga: Wszystkie polecenia : musz¹ byæ zakoñczone <ENTER>. | |
620 | + Od tego momentu nie zawsze bêdziemy o tym wspominaæ. | |
526 | 621 | |
527 | 622 | |
528 | 623 |
@@ -531,9 +626,9 @@ | ||
531 | 626 | Lekcja 5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW |
532 | 627 | |
533 | 628 | |
534 | - ** By zachowaæ zmiany w pliku wpisz :w NAZWA_PLIKU . ** | |
629 | + ** By zachowaæ zmiany w tekci wpisz :w NAZWA_PLIKU . ** | |
535 | 630 | |
536 | - 1. Wpisz :!dir lub :!ls by zobaczyæ spis plików w katalogu. | |
631 | + 1. Wpisz :!dir lub :!ls by zobaczyæ spis plików w katalogu. | |
537 | 632 | Ju¿ wiesz, ¿e musisz wcisn¹æ <ENTER> po tym. |
538 | 633 | |
539 | 634 | 2. Wybierz nazwê pliku jaka jeszcze nie istnieje, np. TEST. |
@@ -541,63 +636,63 @@ | ||
541 | 636 | 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw¹ pliku jak¹ wybra³e.) |
542 | 637 | |
543 | 638 | 4. To polecenie zapamiêta ca³y plik (Vim Tutor) pod nazw¹ TEST. |
544 | - By to sprawdziæ wpisz :!dir , ¿eby znowu zobaczyæ listê plików. | |
639 | + By to sprawdziæ wpisz :!dir lub :!ls , ¿eby znowu zobaczyæ listê plików. | |
545 | 640 | |
546 | ----> Zauwa¿, ¿e gdyby teraz wyszed³ z Vim-a, a nastêpnie wszed³ ponownie | |
547 | - komend¹ vim TEST , plik by³by dok³adn¹ kopi¹ tutoriala kiedy go | |
548 | - zapisywa³e. | |
641 | +Uwaga: Zauwa¿, ¿e gdyby teraz wyszed³ z Vim-a, a nastêpnie wszed³ ponownie | |
642 | + komend¹ vim TEST , plik by³by dok³adn¹ kopi¹ tutoriala kiedy go | |
643 | + zapisywa³e. | |
549 | 644 | |
550 | 645 | 5. Teraz usuñ plik wpisuj¹c: :!rm TEST |
551 | 646 | |
552 | 647 | |
553 | 648 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
554 | - Lekcja 5.3.: SELEKTYWNE POLECENIE WRITE (zapisz) | |
649 | + Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU | |
555 | 650 | |
556 | 651 | |
557 | - ** By zachowaæ czêæ pliku wpisz :#,# w NAZWA_PLIKU ** | |
558 | - | |
559 | - 1. Jeszcze raz wpisz :!dir lub :!ls by uzyskaæ listê plików | |
560 | - w katalogu i wybierz odpowiedni¹ nazwê tak¹ jak TEST. | |
561 | - | |
562 | - 2. Przenie kursor na góre tej strony i wcinij CTRL-G by uzyskaæ | |
563 | - numer linii. ZAPAMIÊTAJ TÊ LICZBÊ! | |
652 | + ** By zachowaæ czêæ pliku wpisz v ruch :w NAZWA_PLIKU ** | |
564 | 653 | |
565 | - 3. Teraz przenie siê na dó³ strony i wpisz CTRL-G znowu. ZAPAMIÊTAJ | |
566 | - NUMER TAK¯E TEJ LINII! | |
654 | + 1. Przenie kursor do tego wiersza. | |
567 | 655 | |
568 | - 4. By zachowaæ JEDYNIE czêæ pliku wpisz :#,# w TEST gdzie #,# to | |
569 | - dwie liczby jakie zapamiêta³e (góra, dó³ ekranu), a TEST to nazwa | |
570 | - Twojego pliku. | |
656 | + 2. Wcinij v i przenie kursor do punktu 5. Zauwa¿, ¿e tekst zosta³ | |
657 | + podwietlony. | |
571 | 658 | |
572 | - 5. Ponownie sprawd czy ten plik tam jest ( :!dir ), ale NIE usuwaj go. | |
659 | + 3. Wcinij znak : . Na dole ekranu pojawi siê :'<,'> . | |
573 | 660 | |
661 | + 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. | |
662 | + Upewnij siê, ¿e widzisz :'<,'>w TEST zanim wciniesz Enter. | |
574 | 663 | |
664 | + 5. Vim zapisze wybrane linie do pliku TEST. U¿yj :!dir lub :!ls , ¿eby to | |
665 | + zobaczyæ. Jeszcze go nie usuwaj! U¿yjemy go w nastêpnej lekcji. | |
666 | + | |
667 | +UWAGA: Wciniêcie v zaczyna tryb Wizualny. Mo¿esz poruszaæ kursorem by | |
668 | + zmieniæ rozmiary zaznaczenia. Mo¿esz te¿ u¿yæ operatora by zrobiæ co | |
669 | + z tekstem. Na przyk³ad d usuwa tekst. | |
575 | 670 | |
576 | 671 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
577 | 672 | Lekcja 5.4.: WSTAWIANIE I £¥CZENIE PLIKÓW |
578 | 673 | |
579 | 674 | |
580 | - ** By wstawiæ zawartoæ pliku wpisz :r NAZWA_PLIKU ** | |
675 | + ** By wstawiæ zawartoæ pliku wpisz :r NAZWA_PLIKU ** | |
581 | 676 | |
582 | - 1. Wpisz :!dir by siê upewniæ, ze Twój plik TEST zosta³ poprawnie | |
583 | - zapamiêtany. | |
677 | + 1. Umieæ kursor tu¿ powy¿ej tej linii. | |
584 | 678 | |
585 | - 2. Umieæ kursor na górze strony. | |
586 | - | |
587 | -UWAGA: Po wykonaniu kroku 3. ponownie zobaczysz Lekcjê 5.3. Potem przejd | |
679 | +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd | |
588 | 680 | do DO£U by zobaczyæ ponownie tê lekcjê. |
589 | 681 | |
590 | - 3. Teraz wczytaj plik TEST u¿ywaj¹c polecenia :r TEST , gdzie TEST | |
682 | + 2. Teraz wczytaj plik TEST u¿ywaj¹c polecenia :r TEST , gdzie TEST | |
591 | 683 | jest nazw¹ pliku. |
684 | + Wczytany plik jest umieszczony poni¿ej linii z kursorem. | |
592 | 685 | |
593 | -UWAGA: Plik, który wczytujesz jest wstawiany tam gdzie by³ kursor. | |
686 | + 3. By sprawdziæ czy plik zosta³ wczytany cofnij kursor i zobacz, ¿e | |
687 | + teraz s¹ dwie kopie Lekcji 5.3., orygina³ i kopia z pliku. | |
594 | 688 | |
595 | - 4. By sprawdziæ czy plik zosta³ wczytany cofnij kursor i zobacz, ¿e | |
596 | - teraz s¹ dwie kopie Lekcji 5.3., orygina³ i kopia z pliku. | |
689 | +UWAGA: Mo¿esz te¿ wczytaæ wyjcie zewnêtrznego polecenia. Na przyk³ad | |
690 | + :r !ls wczytuje wyjcie polecenia ls i umieszcza je pod kursorem. | |
691 | + | |
597 | 692 | |
598 | 693 | |
599 | 694 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
600 | - LEKCJA 5. PODSUMOWANIE | |
695 | + LEKCJA 5. PODSUMOWANIE | |
601 | 696 | |
602 | 697 | |
603 | 698 | 1. :!polecenie wykonuje polecenie zewnêtrzne. |
@@ -610,12 +705,12 @@ | ||
610 | 705 | |
611 | 706 | 2. :w NAZWA_PLIKU zapisuje obecny plik Vim-a na dysk z nazw¹ NAZWA_PLIKU. |
612 | 707 | |
613 | - 3. :#,#w NAZWA_PLIKU zapisuje linie od # do # w pliku NAZWA_PLIKU. | |
708 | + 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. | |
614 | 709 | |
615 | 710 | 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do |
616 | - bie¿¹cego pliku po kursorze. | |
711 | + bie¿¹cego pliku poni¿ej kursora. | |
617 | 712 | |
618 | - | |
713 | + 5. :r !dir wczytuje wyjcie polecenia dir i umieszcza je poni¿ej kursora. | |
619 | 714 | |
620 | 715 | |
621 | 716 |
@@ -623,7 +718,7 @@ | ||
623 | 718 | Lekcja 6.1.: POLECENIE OPEN (otwórz) |
624 | 719 | |
625 | 720 | |
626 | - ** Wpisz o by otworzyæ liniê poni¿ej kursora i przenieæ siê do | |
721 | + ** Wpisz o by otworzyæ liniê poni¿ej kursora i przenieæ siê do | |
627 | 722 | trybu Insert (wprowadzanie). ** |
628 | 723 | |
629 | 724 | 1. Przenie kursor do linii poni¿ej oznaczonej --->. |
@@ -631,16 +726,16 @@ | ||
631 | 726 | 2. Wpisz o (ma³e) by otworzyæ liniê PONI¯EJ kursora i przenieæ siê |
632 | 727 | do trybu Insert (wprowadzanie). |
633 | 728 | |
634 | - 3. Teraz przepisz liniê oznaczon¹ ---> i wcinij <ESC> by wyjæ | |
635 | - z trybu Insert (wprowadzanie). | |
729 | + 3. Wpisz trochê tekstu i wcinij <ESC> by wyjæ z trybu Insert (wprowadzanie). | |
636 | 730 | |
637 | ----> Po wciniêciu o kursor znajdzie siê w otwartej linii w trybie | |
638 | - Insert (wprowadzanie). | |
731 | +---> Po wciniêciu o kursor znajdzie siê w otwartej linii w trybie Insert. | |
639 | 732 | |
640 | 733 | 4. By otworzyæ liniê POWY¯EJ kursora wcinij wielkie O zamiast ma³ego |
641 | 734 | o . Wypróbuj to na linii poni¿ej. |
642 | 735 | |
643 | - Otwórz liniê powy¿ej wciskaj¹c SHIFT-O gdy kursor bêdzie na tej linii. | |
736 | +---> Otwórz liniê powy¿ej wciskaj¹c SHIFT-O gdy kursor bêdzie na tej linii. | |
737 | + | |
738 | + | |
644 | 739 | |
645 | 740 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
646 | 741 | Lekcja 6.2.: POLECENIE APPEND (dodaj) |
@@ -648,137 +743,203 @@ | ||
648 | 743 | |
649 | 744 | ** Wpisz a by dodaæ tekst ZA kursorem. ** |
650 | 745 | |
651 | - 1. Przenie kursor do koñca pierwszej linii poni¿ej oznaczonej ---> | |
652 | - Zrób to wciskaj¹c $ w trybie Normal. | |
653 | - | |
654 | - 2. Wpisz a (ma³e) aby dodaæ tekst ZA znakiem pod kursorem. | |
655 | - Wielkie A dodaje tekst na koñcu linii. | |
746 | + 1. Przenie kursor do pocz¹tku pierwszej linii poni¿ej oznaczonej ---> | |
656 | 747 | |
657 | -Uwaga: To oszczêdza wpisania: ostatni znak ( $ ), i , tekst do dodania, | |
658 | - <ESC>, strza³ka w prawo i ostatecznie x , tylko po to by dodaæ | |
659 | - tekst na koñcu linii. | |
748 | + 2. Wciskaj e dopóki kursor nie bêdzie na koñcu li . | |
660 | 749 | |
661 | - 3. Teraz dokoñcz pierwsz¹ liniê. Zauwa¿ tak¿e, ¿e append (dodaj) | |
662 | - dzia³a tak samo jak tryb Insert (wprowadzanie) z wyj¹tkiem tego gdzie | |
663 | - tekst jest wstawiany. | |
750 | + 3. Wpisz a (ma³e) aby dodaæ tekst ZA znakiem pod kursorem. | |
664 | 751 | |
665 | ----> Ta linia pozwoli Ci æwiczyæ | |
752 | + 4. Dokoñcz wyraz tak jak w linii poni¿ej. Wcinij <ESC> aby opuciæ tryb | |
753 | + Insert. | |
754 | + | |
755 | + 5. U¿yj e by przejæ do kolejnego niedokoñczonego wyraze i powtarzaj kroki | |
756 | + 3. i 4. | |
757 | + | |
758 | +---> Ta li poz Ci æwi dodaw teks do koñ lin | |
666 | 759 | ---> Ta linia pozwoli Ci æwiczyæ dodawanie tekstu do koñca linii. |
667 | 760 | |
761 | +Uwaga: a , i and A prowadz¹ do trybu Insert, jedyn¹ ró¿nic¹ jest miejsce | |
762 | + gdzie nowe znaki bêd¹ dodawane. | |
668 | 763 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
669 | 764 | Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) |
670 | 765 | |
671 | 766 | |
672 | - ** Wpisz wielkie R by zamieniæ wiêcej ni¿ jeden znak. ** | |
673 | - | |
674 | - 1. Przenie kursor do pierwszej linii poni¿ej oznaczonej --->. | |
675 | - | |
676 | - 2. Umieæ kursor na pocz¹tku pierwszego wyrazu, który rózni siê od | |
677 | - drugiej linii oznaczonej ---> (wyraz 'ostatni'). | |
767 | + ** Wpisz wielkie R by zamieniæ wiêcej ni¿ jeden znak. ** | |
678 | 768 | |
679 | - 3. Teraz wpisz R i zamieñ resztê tekstu w pierwszej linii przez | |
680 | - nadpisanie nad starym tekstem tak aby pierwsza linia brzmia³a tak samo | |
681 | - jak druga. | |
769 | + 1. Przenie kursor do pierwszej linii poni¿ej oznaczonej --->. Przenie | |
770 | + kursor do pierwszego xxx . | |
682 | 771 | |
683 | ----> To make the first line the same as the last on this page use the keys. | |
684 | ----> To make the first line the same as the second, type R and the new text. | |
772 | + 2. Wcinij R i wpisz numer poni¿ej w drugiej linii, tak, ¿e zast¹pi on | |
773 | + xxx. | |
685 | 774 | |
686 | - 4. Zauwa¿, ¿e kiedy wciniesz <ESC> aby wyjæ niezmieniony tekst | |
687 | - pozostaje. | |
775 | + 3. Wcinij <ESC> by opuciæ tryb Replace. Zauwa¿, ¿e reszta linii pozostaje | |
776 | + niezmieniona. | |
777 | + | |
778 | + 5. Powtarzaj kroki by wymieniæ wszystkie xxx. | |
779 | + | |
780 | +---> Dodanie 123 do xxx daje xxx. | |
781 | +---> Dodanie 123 do 456 daje 579. | |
782 | + | |
783 | +UWAGA: Tryb Replace jest jak tryb Insert, ale ka¿dy znak usuwa istniej¹cy | |
784 | + znak. | |
785 | + | |
786 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
787 | + Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU | |
688 | 788 | |
689 | 789 | |
790 | + ** u¿yj operatora y aby skopiowaæ tekst i p aby go wkleiæ ** | |
791 | + | |
792 | + 1. Przejd do linii oznaczonej ---> i umiec kursor za "a)". | |
793 | + | |
794 | + 2. Wejd w tryb Visual v i przenie kursor na pocz¹tek "pierwszy". | |
795 | + | |
796 | + 3. Wcinij y aby yankowaæ (kopiowaæ) podwietlony tekst. | |
797 | + | |
798 | + 4. Przenie kursor do koñca nastêpnej linii: j$ | |
799 | + | |
800 | + 5. Wcinij p aby wpakowaæ (paste) tekst. Dodaj: a drugi<ESC> . | |
801 | + | |
802 | + 6. U¿yj trybu Visual aby wybraæ " element.", yankuj go y , przejd do koñca | |
803 | + nastêpnej linii j$ i upakuj tam tekst z p . | |
804 | + | |
805 | +---> a) to jest pierwszy element. | |
806 | + b) | |
807 | +Uwaga: mo¿esz u¿yæ y jako operatora; yw kopiuje jeden wyraz. | |
690 | 808 | |
691 | 809 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
692 | - Lekcja 6.4.: USTAWIANIE OPCJI | |
810 | + Lekcja 6.5.: USTAWIANIE OPCJI | |
693 | 811 | |
694 | 812 | |
695 | 813 | ** Ustawianie opcji tak by szukaj lub substytucja ignorowa³y wielkoæ liter ** |
696 | 814 | |
697 | - 1. Szukaj 'ignore' wpisuj¹c (w trybie Normal): | |
698 | - /ignore | |
815 | + 1. Szukaj 'ignore' wpisuj¹c: /ignore<ENTER> | |
699 | 816 | Powtórz szukanie kilka razy naciskaj¹c klawisz n . |
700 | 817 | |
701 | 818 | 2. Ustaw opcjê 'ic' (Ignore case -- ignoruj wielkoæ liter) poprzez |
702 | 819 | wpisanie: :set ic |
703 | 820 | |
704 | - 3. Teraz szukaj 'ignore' ponownie wciskuj¹c: n | |
705 | - Powtórz szukanie kilka razy naciskaj¹c klawisz n . | |
821 | + 3. Teraz szukaj 'ignore' ponownie wciskuj¹c: n | |
822 | + Zauwa¿, ¿e Ignore i IGNORE tak¿e s¹ teraz znalezione. | |
706 | 823 | |
707 | - 4. Ustaw opcje 'hlsearch' i 'incsearch': | |
708 | - :set hls is | |
824 | + 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is | |
709 | 825 | |
710 | 826 | 5. Teraz wprowad polecenie szukaj ponownie i zobacz co siê zdarzy: |
711 | - /ignore | |
827 | + /ignore<ENTER> | |
712 | 828 | |
829 | + 6. Aby wy³¹czyæ ignorowanie wielkoci liter: :set noic | |
713 | 830 | |
831 | +Uwaga: Aby usun¹æ podwietlanie dopasowañ wpisz: :nohlsearch | |
832 | +Uwaga: Aby ignorowaæ wielkoæ liter dla jednego wyszukiwania: /ignore\c<ENTER> | |
714 | 833 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
715 | 834 | LEKCJA 6. PODSUMOWANIE |
716 | 835 | |
717 | 836 | |
718 | - 1. Wpisanie o otwiera liniê PONI¯EJ kursora i umieszcza kursor | |
719 | - w otwartej linii w trybie Insert (wprowadzanie). | |
720 | - Wpisanie wielkiego O otwiera liniê POWY¯EJ linii, w której | |
721 | - znajduje siê kursor. | |
722 | - | |
837 | + 1. Wpisanie o otwiera liniê PONI¯EJ kursora. | |
838 | + Wpisanie wielkiego O otwiera liniê POWY¯EJ kursora. | |
723 | 839 | 2. Wpisz a by wstawiæ tekst ZA znakiem na, którym jest kursor. |
724 | - Wpisanie wielkiego A automatycznie dodaje tekst na koñcu linii. | |
725 | - | |
726 | - 3. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki | |
840 | + Wpisanie wielkiego A dodaje tekst na koñcu linii. | |
841 | + 3. Polecenie e przenosi do koñca wyrazu. | |
842 | + 4. Operato y yankuje (kopiuje) tekst, p pakuje (wkleja, paste) go. | |
843 | + 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki | |
727 | 844 | nie zostanie wciniêty <ESC>. |
728 | - | |
729 | - 4. Wpisanie ":set xxx" ustawia opcjê "xxx". | |
730 | - | |
731 | - | |
845 | + 6. Wpisanie ":set xxx" ustawia opcjê "xxx". Nietkóre opcje: | |
846 | + 'ic' 'ignorecase' ignoruj wielkoæ znaków | |
847 | + 'is' 'incsearch' poka¿ czêciowe dopasowania | |
848 | + 'hls' 'hlsearch' podwietl wszystkie dopasowania | |
849 | + Mo¿esz u¿yæ zarówno d³ugiej jak i krótkiej formy. | |
850 | + 7. Dodaj "no" aby wy³¹czyæ opcjê: :set noic | |
732 | 851 | |
733 | 852 | |
734 | 853 | |
735 | 854 | |
736 | 855 | |
737 | 856 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
738 | - LEKCJA 7. POLECENIA POMOCY ON-LINE | |
739 | - | |
857 | + LEKCJA 7.1. JAK UZYSKAÆ POMOC | |
740 | 858 | |
741 | 859 | ** U¿ycie systemu pomocy on-line ** |
742 | 860 | |
743 | 861 | Vim posiada bardzo dobry system pomocy on-line. By zacz¹æ spróbuj jednej |
744 | 862 | z trzech mo¿liwoci: |
745 | - | |
746 | 863 | - wcinij klawisz <HELP> (jeli takowy posiadasz) |
747 | 864 | - wcinij klawisz <F1> (jeli takowy posiadasz) |
748 | 865 | - wpisz :help<ENTER> |
749 | 866 | |
750 | - Wpisz :q<ENTER> by zamkn¹c okno pomocy. | |
867 | + Przeczytaj tekst w oknie pomocy aby dowiedzieæ siê jak dzia³a pomoc. | |
868 | + wpisz CTRL-W CTRL-W aby przeskoczyæ z jednego okna do innego | |
869 | + wpisz :q<ENTER> aby zamkn¹æ okno pomocy. | |
751 | 870 | |
752 | 871 | Mo¿esz te¿ znaleæ pomoc na ka¿dy temat podaj¹c argument polecenia ":help". |
753 | 872 | Spróbuj tych (nie zapomnij wcisn¹æ <ENTER>): |
754 | 873 | |
755 | 874 | :help w |
756 | - :help c_<T | |
875 | + :help c_CTRL-D | |
757 | 876 | :help insert-index |
758 | 877 | :help user-manual |
759 | - | |
760 | 878 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
761 | - LEKCJA 8. TWORZENIE SKRYPTU STARTOWEGO | |
879 | + LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO | |
762 | 880 | |
763 | - ** W³¹czanie mo¿liwoci Vim-a ** | |
881 | + ** W³¹cz mo¿liwoci Vim-a ** | |
764 | 882 | |
765 | 883 | Vim ma o wiele wiêcej mo¿liwoci ni¿ Vi, ale wiêkszoæ z nich jest domylnie |
766 | 884 | wy³¹czona. Jeli chcesz w³¹czyæ te mo¿liwoci na starcie musisz utworzyæ |
767 | 885 | plik "vimrc". |
768 | 886 | |
769 | 887 | 1. Pocz¹tek edycji pliku "vimrc" zale¿y od Twojego systemu: |
770 | - :edit ~/.vimrc dla Unixa | |
771 | - :edit $VIM/_vimrc dla MS-Windows | |
772 | - | |
888 | + :edit ~/.vimrc dla Uniksa | |
889 | + :edit $VIM/_vimrc dla MS-Windows | |
773 | 890 | 2. Teraz wczytaj przyk³adowy plik "vimrc": |
774 | 891 | :read $VIMRUNTIME/vimrc_example.vim |
775 | - | |
776 | 892 | 3. Zapisz plik: |
777 | - :write | |
893 | + :w | |
778 | 894 | |
779 | 895 | Nastêpnym razem gdy zaczniesz pracê w Vimie bêdzie on u¿ywaæ podwietlania |
780 | 896 | sk³adni. Mo¿esz dodaæ wszystkie swoje ulubione ustawienia do tego pliku |
781 | 897 | "vimrc". |
898 | + Aby uzyskaæ wiêcej informacji wpisz :help vimrc-intro | |
899 | + | |
900 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
901 | + Lekcja 7.3.: UZUPE£NIANIE | |
902 | + | |
903 | + | |
904 | + ** Uzupe³nianie linii poleceñ z CTRL-D i <TAB> ** | |
905 | + | |
906 | + 1. Upewnij siê, ¿e Vim nie jest w trybie kompatybilnoci: :set nocp | |
907 | + | |
908 | + 2. Zerknij jakie pliki s¹ w bie¿¹cm katalogu: :!ls lub :!dir | |
909 | + | |
910 | + 3. Wpisz pocz¹tek polecenia: :e | |
911 | + | |
912 | + 4. Wcinij CTRL-D i Vim poka¿e listê poleceñ jakie zaczynaj¹ siê na "e". | |
913 | + | |
914 | + 5. Wcinij <TAB> i Vim uzupe³ni polecenie do ":edit". | |
915 | + | |
916 | + 6. Dodaj spacjê i zacznij wpisywaæ nazwê istniej¹cego pliku: :edit FIL | |
917 | + | |
918 | + 7. Wcinij <TAB>. Vim uzupe³ni nazwê (jeli jest niepowtarzalna). | |
919 | + | |
920 | +UWAGA: Uzupe³nianie dzia³a dla wielu poleceñ. Spróbuj wcisn¹æ CTRL-D i <TAB>. | |
921 | + U¿yteczne zw³aszcza przy :help . | |
922 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
923 | + Lekcja 7. PODSUMOWANIE | |
924 | + | |
925 | + | |
926 | + 1. Wpisz :help lub wcinij <F1> lub <Help> aby otworzyæ okno pomocy. | |
927 | + | |
928 | + 2. Wpisz :help cmd aby uzyskaæ pomoc o cmd . | |
929 | + | |
930 | + 3. Wpisz CTRL-W CTRL-W aby przeskoczyæ do innego okna. | |
931 | + | |
932 | + 4. Wpisz :q aby zamkn¹æ okno pomocy. | |
933 | + | |
934 | + 5. Utwórz plik startowy vimrc aby zachowaæ wybrane ustawienia. | |
935 | + | |
936 | + 6. Po poleceniu : , wcinij CTRL-D aby zobaczyæ mo¿liwe uzupe³nienia. | |
937 | + Wcinij <TAB> aby u¿yæ jednego z nich. | |
938 | + | |
939 | + | |
940 | + | |
941 | + | |
942 | + | |
782 | 943 | |
783 | 944 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
784 | 945 |
@@ -826,5 +987,5 @@ | ||
826 | 987 | Przet³umaczone przez Miko³aja Machowskiego, |
827 | 988 | Sierpieñ 2001, |
828 | 989 | rev. Marzec 2002 |
990 | + 2nd rev. Wrzesieñ 2004 | |
829 | 991 | Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl |
830 | - |
@@ -0,0 +1,991 @@ | ||
1 | +=============================================================================== | |
2 | += W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = | |
3 | +=============================================================================== | |
4 | + | |
5 | + Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo by | |
6 | + wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć | |
7 | + Cię posługiwać się wystarczająco wieloma komendami byś mógł łatwo | |
8 | + używać Vim-a jako edytora ogólnego przeznaczenia. | |
9 | + | |
10 | + Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy | |
11 | + od tego jak wiele czasu spędzisz na eksperymentowaniu. | |
12 | + | |
13 | + UWAGA: | |
14 | + Polecenia wykonywane w czasie lekcji zmodyfikują tekst. Zrób | |
15 | + wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą | |
16 | + "vimtutor" to już pracujesz na kopii). | |
17 | + | |
18 | + Ważne jest, byś pamiętał, że przewodnik ten został zaprojektowany do | |
19 | + nauki poprzez ćwiczenia. To oznacza, że musisz wykonywać polecenia | |
20 | + by nauczyć się ich prawidłowo. Jeśli będziesz jedynie czytał tekst | |
21 | + szybko zapomnisz wiele poleceń! | |
22 | + | |
23 | + Teraz upewnij się, że nie masz wciśniętego CapsLocka i wciskaj j | |
24 | + tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu. | |
25 | + | |
26 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
27 | + Lekcja 1.1.: PORUSZANIE SIĘ KURSOREM | |
28 | + | |
29 | + ** By wykonać ruch kursorem, wciśnij h, j, k, l jak pokazano. ** | |
30 | + | |
31 | + ^ | |
32 | + k Wskazówka: h jest po lewej | |
33 | + < h l > l jest po prawej | |
34 | + j j wygląda jak strzałka w dół | |
35 | + v | |
36 | + 1. Poruszaj kursorem dopóki nie będziesz pewien, że pamiętasz polecenia. | |
37 | + | |
38 | + 2. Trzymaj j tak długo aż będzie się powtarzał. | |
39 | + Teraz wiesz jak dojść do następnej lekcji. | |
40 | + | |
41 | + 3. Używając strzałki w dół przejdź do następnej lekcji. | |
42 | + | |
43 | +Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC> by wrócić do | |
44 | + trybu Normal. Wtedy powtórz polecenie. | |
45 | + | |
46 | +Uwaga: Klawisze kursora także powinny działać, ale używając hjkl będziesz | |
47 | + w stanie poruszać się o wiele szybciej jak się tylko przyzwyczaisz. | |
48 | + Naprawdę! | |
49 | + | |
50 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
51 | + Lekcja 1.2.: WYCHODZENIE Z VIM-a | |
52 | + | |
53 | + !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję.!! | |
54 | + | |
55 | + 1. Wciśnij <ESC> (aby upewnić się, że jesteś w trybie Normal). | |
56 | + 2. Wpisz: :q!<ENTER>. | |
57 | + To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany jakie | |
58 | + zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść | |
59 | + wpisz: :wq<ENTER> | |
60 | + | |
61 | + 3. Kiedy widzisz znak zachęty powłoki wpisz komendę, żeby wrócić | |
62 | + do tutoriala. Czyli: vimtutor<ENTER> | |
63 | + | |
64 | + 4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3. aby | |
65 | + wyjść i wrócić do edytora. | |
66 | + | |
67 | +UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych | |
68 | +lekcjach dowiesz się jak je zapamiętywać. | |
69 | + | |
70 | + 5. Przenieś kursor do lekcji 1.3. | |
71 | + | |
72 | + | |
73 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
74 | + Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE | |
75 | + | |
76 | + ** Wciśnij x aby usunąć znak pod kursorem. ** | |
77 | + | |
78 | + 1. Przenieś kursor do linii poniżej oznaczonej --->. | |
79 | + | |
80 | + 2. By poprawić błędy, naprowadź kursor na znak do usunięcia. | |
81 | + | |
82 | + 3. Wciśnij x aby usunąć niechciany znak. | |
83 | + | |
84 | + 4. Powtarzaj kroki 2. do 4. dopóki zdanie nie jest poprawne. | |
85 | + | |
86 | +---> Kkrowa prrzeskoczyła prrzez ksiiężycc. | |
87 | + | |
88 | + 5. Teraz kiedy zdanie jest poprawione przejdź do Lekcji 1.4. | |
89 | + | |
90 | +UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. | |
91 | + | |
92 | + | |
93 | + | |
94 | + | |
95 | + | |
96 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
97 | + Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) | |
98 | + | |
99 | + | |
100 | + ** Wciśnij i aby wstawić tekst. ** | |
101 | + | |
102 | + 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. | |
103 | + | |
104 | + 2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym | |
105 | + gdzie tekst ma być wstawiony. | |
106 | + | |
107 | + 3. Wciśnij i a następnie wpisz konieczne poprawki. | |
108 | + | |
109 | + 4. Po poprawieniu błędu wciśnij <ESC> by wrócić do trybu Normal. | |
110 | + Powtarzaj kroki 2. do 4. aby poprawić całe zdanie. | |
111 | + | |
112 | +---> W tej brkje trochę . | |
113 | +---> W tej linii brakuje trochę tekstu. | |
114 | + | |
115 | + 5. Kiedy czujesz się swobodnie wstawiając tekst przejdź do | |
116 | + podsumowania poniżej. | |
117 | + | |
118 | + | |
119 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
120 | + Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) | |
121 | + | |
122 | + | |
123 | + ** Wciśnij A by dodać tekst. ** | |
124 | + | |
125 | + 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. | |
126 | + Nie ma znaczenia, który to będzie znak. | |
127 | + | |
128 | + 2. Wciśnij A i wpisz odpowiednie dodatki. | |
129 | + | |
130 | + 3. Kiedy tekst został dodany, wciśnij <ESC> i wróć do trybu Normalnego. | |
131 | + | |
132 | + 4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3 | |
133 | + aby poprawić zdanie. | |
134 | + | |
135 | +---> Brakuje tu tro | |
136 | + Brakuje tu trochę tekstu. | |
137 | +---> Tu też trochę bra | |
138 | + Tu też trochę brakuje. | |
139 | + | |
140 | + 5. Kiedy już utrwaliłeś ćwiczenie przejdź do lekcji 1.6. | |
141 | + | |
142 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
143 | + Lekcja 1.6.: EDYCJA PLIKU | |
144 | + | |
145 | + | |
146 | + ** Użyj :wq aby zapisać plik i wyjść. ** | |
147 | + | |
148 | + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj całą lekcję !! | |
149 | + | |
150 | + 1. Zakończ tutorial tak jak w lekcji 1.2.: :q! | |
151 | + | |
152 | + 2. W powłoce wydaj polecenie: vim tutor<ENTER> | |
153 | + "vim" jest poleceniem uruchamiającym edytor Vimm. 'tutor' to nazwa pliku | |
154 | + jaki chcesz edytować. Użyj pliku jaki może zostać zmieniony. | |
155 | + | |
156 | + 3. Dodaj i usuń tekst tak jak się nauczyłeś w poprzednich lekcjach. | |
157 | + | |
158 | + 4. Zapisz plik ze zmianami w opuść Vima: :wq<ENTER> | |
159 | + | |
160 | + 5. Uruchom ponownie vimtutor i przejdź do podsumowania lekcji. | |
161 | + | |
162 | + 6. Po przeczytaniu wszystkich kroków i zrozumieniu ich: wykonaj je. | |
163 | + | |
164 | + | |
165 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
166 | + LEKCJA 1. PODSUMOWANIE | |
167 | + | |
168 | + 1. Poruszasz kursorem używając "strzałek" i klawiszy hjkl . | |
169 | + h (w lewo) j (w dół) k (do góry) l (w prawo) | |
170 | + | |
171 | + 2. By wejść do Vim-a (z powłoki) wpisz: | |
172 | + vim NAZWA_PLIKU<ENTER> | |
173 | + | |
174 | + 3. By wyjść z Vim-a wpisz: | |
175 | + <ESC> :q!<ENTER> by usunąc wszystkie zmiany. | |
176 | + LUB: <ESC> :wq<ENTER> by zmiany zachować. | |
177 | + | |
178 | + 4. By usunąć znak pod kursorem wciśnij: x | |
179 | + | |
180 | + 5. By wstawić tekst przed kursorem lub dodać: | |
181 | + i wpisz tekst <ESC> wstawi przed kursorem | |
182 | + A wpisz tekst <ESC> doda na końcu linii | |
183 | + | |
184 | +UWAGA: Wciśnięcie <ESC> przeniesie Cię z powrotem do trybu Normal | |
185 | +lub odwoła niechciane lub częściowo wprowadzone polecenia. | |
186 | + | |
187 | +Teraz możemy kontynuować i przejść do Lekcji 2. | |
188 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
189 | + Lekcja 2.1.: POLECENIE DELETE (usuwanie) | |
190 | + | |
191 | + | |
192 | + ** Wpisz dw by usunąc wyraz. ** | |
193 | + | |
194 | + 1. Wciśnij <ESC> by upewnić się, że jesteś w trybie Normal. | |
195 | + | |
196 | + 2. Przenieś kursor do linii poniżej oznaczonej --->. | |
197 | + | |
198 | + 3. Przesuń kursor na początek wyrazu, które chcesz usunąć. | |
199 | + | |
200 | + 4. Wpisz dw by usunąc wyraz. | |
201 | + | |
202 | + UWAGA: Litera d pojawi się na dole ekranu. Vim czeka na wpisanie w . | |
203 | + Jeśli zobaczysz inny znak wpisałeś coś źle, wciśnij <ESC> i zacznij | |
204 | + od początku. | |
205 | + | |
206 | +---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania. | |
207 | + | |
208 | + 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie będzie poprawne, potem | |
209 | + przejdź do Lekcji 2.2. | |
210 | + | |
211 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
212 | + Lekcja 2.2.: WIĘCEJ POLECEŃ USUWAJĄCYCH | |
213 | + | |
214 | + | |
215 | + ** Wpisz d$ aby usunąć tekst do końca linii. ** | |
216 | + | |
217 | + 1. Wciśnij <ESC> aby się upewnić, że jesteś w trybie Normal. | |
218 | + | |
219 | + 2. Przenieś kursor do linii poniżej oznaczonej --->. | |
220 | + | |
221 | + 3. Przenieś kursor do końca poprawnego zdania (PO pierwszej . ). | |
222 | + | |
223 | + 4. Wpisz d$ aby usunąć resztę linii. | |
224 | + | |
225 | +---> Ktoś wpisał koniec tego zdania dwukrotnie. zdania dwukrotnie. | |
226 | + | |
227 | + | |
228 | + 5. Przejdź do Lekcji 2.3. by zrozumieć co się stało. | |
229 | + | |
230 | + | |
231 | + | |
232 | + | |
233 | + | |
234 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
235 | + Lekcja 2.3.: O OPERATORACH I RUCHACH | |
236 | + | |
237 | + | |
238 | + Wiele poleceń zmieniających tekst są złożone z operatora i ruchu. | |
239 | + Format dla polecenia usuwającego z operatorem d jest taki: | |
240 | + | |
241 | + d ruch | |
242 | + | |
243 | + Gdzie: | |
244 | + d - operator usuwania. | |
245 | + ruch - na czym polecenie będzie wykonywane (lista poniżej). | |
246 | + | |
247 | + Krótka lista ruchów: | |
248 | + w - do początku następnego wyrazu WYŁĄCZAJĄC pierwszy znak. | |
249 | + e - do końca bieżącego wyrazu, WŁĄCZAJĄC ostatni znak. | |
250 | + $ - do końca linii, WŁĄCZAJĄC ostatni znak. | |
251 | + | |
252 | +W ten sposób wpisanie de usunie znaki od kursora do końca wyrazu. | |
253 | + | |
254 | +UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor | |
255 | + tak jak to określono. | |
256 | + | |
257 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
258 | + Lekcja 2.4.: UŻYCIE MNOŻNIKA DLA RUCHU | |
259 | + | |
260 | + | |
261 | + ** Wpisanie liczby przed ruchem powtarza ruch odpowiednią ilość razy. ** | |
262 | + | |
263 | + 1. Przenieś kursor na początek linii poniżej zaznaczonej --->. | |
264 | + | |
265 | + 2. Wpisz 2w aby przenieść kursor o dwa wyrazy do przodu. | |
266 | + | |
267 | + 3. Wpisz 3e aby przenieść kursor do końca trzeciego wyrazu w przód. | |
268 | + | |
269 | + 4. Wpisz 0 (zero) aby przenieść kursor do początku linii. | |
270 | + | |
271 | + 5. Powtórz kroki 2. i 3. z innymi liczbami. | |
272 | + | |
273 | + | |
274 | + ---> To jest zwykły wiersz z wyrazami po których możesz się poruszać. | |
275 | + | |
276 | + 6. Przejdź do lekcji 2.5. | |
277 | + | |
278 | + | |
279 | + | |
280 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
281 | + Lekcja 2.5.: UŻYCIE MNOŻNIKA BY WIĘCEJ USUNĄĆ | |
282 | + | |
283 | + | |
284 | + ** Wpisanie liczby z operatorem powtarza go odpowiednią ilość razy. ** | |
285 | + | |
286 | + W wyżej wspomnianej kombinacji operatora usuwania i ruchu podaj mnożnik | |
287 | + przed ruchem by więcej usunąć: | |
288 | + d liczba ruch | |
289 | + | |
290 | + 1. Przenieś kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. | |
291 | + | |
292 | + 2. Wpisz 2dw aby usunąć dwa wyrazy KAPITALIKAMI. | |
293 | + | |
294 | + 3. Powtarzaj kroki 1. i 2. z innymi mnożnikami aby usunąć kolejne wyrazy | |
295 | + KAPITALIKAMI jednym poleceniem | |
296 | + | |
297 | +---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów została ERT FGH CF oczyszczona. | |
298 | + | |
299 | +UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez | |
300 | + operatora. | |
301 | + | |
302 | + | |
303 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
304 | + Lekcja 2.6.: OPEROWANIE NA LINIACH | |
305 | + | |
306 | + | |
307 | + ** Wpisz dd aby usunąć całą linię. ** | |
308 | + | |
309 | + Z powodu częstości usuwania całych linii, projektanci VI zdecydowali, że | |
310 | + będzie łatwiej wpisać dwa razy d aby usunąć linię. | |
311 | + | |
312 | + 1. Przenieś kursor do zdania poniżej. | |
313 | + 2. Wpisz dd aby usunąc wiersz. | |
314 | + 3. Teraz przenieś się do czwartego wiersza. | |
315 | + 4. Wpisz 2dd aby usunąc dwia wiersze. | |
316 | + | |
317 | +---> 1) Róże są czerwone, | |
318 | +---> 2) Błoto jest fajne, | |
319 | +---> 3) Fiołki są niebieskie, | |
320 | +---> 4) Mam samochód, | |
321 | +---> 5) Zegar podaje czas, | |
322 | +---> 6) Cukier jest słodki, | |
323 | +---> 7) I ty też. | |
324 | + | |
325 | + | |
326 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
327 | + Lekcja 2.7.: POLECENIE UNDO (cofnij) | |
328 | + | |
329 | + | |
330 | + ** Wciśnij u aby cofnąć skutki ostatniego polecenia. | |
331 | + U zaś, by cofnąć skutki dla całej linii. ** | |
332 | + | |
333 | + 1. Przenieś kursor do zdania poniżej oznaczonego ---> i umieść go na | |
334 | + pierwszym błędzie. | |
335 | + 2. Wpisz x aby usunąć pierwszy niechciany znak. | |
336 | + 3. Teraz wciśnij u aby cofnąć skutki ostatniego polecenia. | |
337 | + 4. Tym razem popraw wszystkie błędy w linii używając polecenia x . | |
338 | + 5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu. | |
339 | + 6. Teraz wciśnij u kilka razy by cofnąć U i poprzednie polecenia. | |
340 | + 7. Teraz wpsz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R) | |
341 | + kilka razy, by cofnąć cofnięcia. | |
342 | + | |
343 | +---> Poopraw blędyyy w teej liniii i zaamiień je prrzez coofnij. | |
344 | + | |
345 | + 8. To są bardzo pożyteczne polecenia. | |
346 | + | |
347 | + Przejdź teraz do podsumowania Lekcji 2. | |
348 | + | |
349 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
350 | + LEKCJA 2. PODSUMOWANIE | |
351 | + | |
352 | + | |
353 | + 1. By usunąć znaki od kursora do następnego wyrazu wpisz: dw | |
354 | + 2. By usunąć znaki od kursora do końca linii wpisz: d$ | |
355 | + 3. By usunąć całą linię: dd | |
356 | + 4. By powtórzyć ruch poprzedź go liczbą: 2w | |
357 | + 5. Format polecenia zmiany to: | |
358 | + operator [liczba] ruch | |
359 | + gdzie: | |
360 | + operator - to co trzeba zrobić (np. d dla usuwania) | |
361 | + [liczba] - opcjonalne, ile razy powtórzyć ruch | |
362 | + ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), | |
363 | + $ (do końca linii), etc. | |
364 | + | |
365 | + 6. By przejść do początku linii użyj zera: 0 | |
366 | + 7. By cofnąć poprzednie polecenie, wpisz: u (małe u) | |
367 | + By cofnąć wszystkie zmiany w linii wpisz: U (wielkie U) | |
368 | + By cofnąć cofnięcia wpisz: CTRL-R | |
369 | + | |
370 | + | |
371 | + | |
372 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
373 | + Lekcja 3.1.: POLECENIE PUT (wstaw) | |
374 | + | |
375 | + | |
376 | + ** Wpisz p by wstawić ostatnie usunięcia za kursorem. ** | |
377 | + | |
378 | + 1. Przenieś kursor do pierwszej linii ---> poniżej. | |
379 | + | |
380 | + 2. Wpisz dd aby usunąć linię i przechować ją w rejestrze Vim-a. | |
381 | + | |
382 | + 3. Przenieś kursor do linii c), POWYŻEJ tej gdzie usunięta linia powinna | |
383 | + się znajdować. | |
384 | + | |
385 | + 4. Wciśnij p by wstawić linię poniżej kursora. | |
386 | + | |
387 | + 5. Powtaj kroki 2. do 4. aż znajdą się w odpowiednim porządku. | |
388 | + | |
389 | +---> d) Jak dwa aniołki. | |
390 | +---> b) Na dole fiołki, | |
391 | +---> c) A my się kochamy, | |
392 | +---> a) Na górze róże, | |
393 | + | |
394 | + | |
395 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
396 | + Lekcja 3.2.: POLECENIE REPLACE (zastąp) | |
397 | + | |
398 | + | |
399 | + ** Wpisz rx aby zastąpić znak pod kursorem na x . ** | |
400 | + | |
401 | + 1. Przenieś kursor do pierwszej linii poniżej oznaczonej ---> | |
402 | + | |
403 | + 2. Ustaw kursor na pierwszym błędzie. | |
404 | + | |
405 | + 3. Wpisz r a potem znak jaki powinien go zastąpić. | |
406 | + | |
407 | + 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka jak druga. | |
408 | + | |
409 | +---> Kjedy ten wiersz bił wstókiwany ktoś wciznął perę złych klawirzy! | |
410 | +---> Kiedy ten wiersz był wstukiwany ktoś wcisnął parę złych klawiszy! | |
411 | + | |
412 | + 5. Teraz czas na Lekcję 3.3. | |
413 | + | |
414 | + | |
415 | +UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo. | |
416 | + | |
417 | + | |
418 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
419 | + Lekcja 3.3.: OPERATOR CHANGE (zmień) | |
420 | + | |
421 | + ** By zmienić do końca wyrazu wpisz ce . ** | |
422 | + | |
423 | + 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. | |
424 | + | |
425 | + 2. Umieść kursor na u w lunos. | |
426 | + | |
427 | + 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). | |
428 | + | |
429 | + 4. Wciśnij <ESC> i przejdź do następnej planowanej zmiany. | |
430 | + | |
431 | + 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same | |
432 | + jak drugie. | |
433 | + | |
434 | +---> Ta lunos ma pire słów, które tżina zbnic użifajonc pcmazu zmień. | |
435 | +---> Ta linia ma parę słów, które trzeba zmienić używając polecenia zmień. | |
436 | + | |
437 | + Zauważ, że ce nie tylko zamienia wyraz, ale także zmienia tryb na | |
438 | + Insert (wprowadzanie). | |
439 | + | |
440 | + | |
441 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
442 | + Lekcja 3.4.: WIĘCEJ ZMIAN UŻYWAJĄC c | |
443 | + | |
444 | + | |
445 | + ** Polecenie change używa takich samych ruchów jak delete. ** | |
446 | + | |
447 | + 1. Operator change działa tak samo jak delete. Format wygląda tak: | |
448 | + | |
449 | + c [liczba] ruch | |
450 | + | |
451 | + 2. Ruchy są także takie same, np.: w (wyraz), $ (koniec linii), etc. | |
452 | + | |
453 | + 3. Przenieś się do pierwszej linii poniżej oznaczonej ---> | |
454 | + | |
455 | + 4. Ustaw kursor na pierwszym błędzie. | |
456 | + | |
457 | + 5. Wpisz c$ , popraw koniec wiersza i wciśnij <ESC>. | |
458 | + | |
459 | +---> Koniec tego wiersza musi być poprawiony aby wyglądal tak jak drugi. | |
460 | +---> Koniec tego wiersza musi być poprawiony używając polecenia c$ . | |
461 | + | |
462 | +UWAGA: Możesz używać <BS> aby poprawiać błędy w czasie pisania. | |
463 | + | |
464 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
465 | + LEKCJA 3. PODSUMOWANIE | |
466 | + | |
467 | + | |
468 | + 1. Aby wstawić tekst, który został wcześniej usunięty wciśnij p . To | |
469 | + polecenie wstawia skasowany tekst PO kursorze (jeśli cała linia | |
470 | + została usunięta, zostanie ona umieszczona w linii poniżej kursora). | |
471 | + | |
472 | + 2. By zamienić znak pod kursorem wciśnij r a potem znak, który ma zastąpić | |
473 | + oryginalny. | |
474 | + | |
475 | + 3. Operator change pozwala Ci na zastąpienie od kursora do miejsca gdzie | |
476 | + zabrałby cię ruch. Np. wpisz ce aby zamienić tekst od kursora do końca | |
477 | + wyrazu, c$ aby zmienić tekst do końca linii. | |
478 | + | |
479 | + 4. Format do polecenia change (zmień): | |
480 | + | |
481 | + c [liczba] obiekt | |
482 | + | |
483 | + Teraz przejdź do następnej lekcji. | |
484 | + | |
485 | + | |
486 | + | |
487 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
488 | + Lekcja 4.1.: POŁOŻENIE KURSORA ORAZ STATUS PLIKU | |
489 | + | |
490 | + ** Naciśnij CTRL-G aby zobaczyć swoje położenie w pliku i status | |
491 | + pliku. Naciśnij G aby przejść do linii w pliku. ** | |
492 | + | |
493 | + UWAGA: Przeczytaj całą lekcję zanim wykonasz jakieś polecenia!!! | |
494 | + | |
495 | + 1. Przytrzymaj klawisz CTRL i wciśnij g . Używamy notacji CTRL-G. | |
496 | + Na dole strony pojawi się pasek statusu z nazwą pliku i pozycją w pliku. | |
497 | + Zapamiętaj numer linii dla potrzeb kroku 3. | |
498 | + | |
499 | +UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu. | |
500 | + Dzieje się tak kiedy ustawiona jest opcja 'ruler' (wyjaśnione w lekcji 6.). | |
501 | + | |
502 | + 2. Wciśnij G aby przejść na koniec pliku. | |
503 | + Wciśnij gg aby przejść do początku pliku. | |
504 | + | |
505 | + 3. Wpisz numer linii, w której byłeś a potem G . To przeniesie cię | |
506 | + z powrotem do linii, w której byłeś kiedy wcisnąłeś CTRL-G. | |
507 | + | |
508 | + 4. Jeśli czujesz się wystarczająco pewnie, wykonaj kroki 1-3. | |
509 | + | |
510 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
511 | + Lekcja 4.2.: POLECENIE SZUKAJ | |
512 | + | |
513 | + | |
514 | + ** Wpisz / a następnie wyrażenie aby je znaleźć. ** | |
515 | + | |
516 | + 1. W trybie Normal wpisz / . Zauważ, że znak ten, oraz kursor pojawią | |
517 | + się na dole ekranu tak samo jak polecenie : . | |
518 | + | |
519 | + 2. Teraz wpisz błond<ENTER> . To jest słowo, którego chcesz szukać. | |
520 | + | |
521 | + 3. By szukać tej samej frazy ponownie, po prostu wciśnij n . | |
522 | + Aby szukać tej frazy w przeciwnym, kierunku wciśnij N . | |
523 | + | |
524 | + 4. Jeśli chcesz szukać frazy do tyłu, użyj polecenia ? zamiast / . | |
525 | + | |
526 | + 5. Aby wrócić gdzie byłeś wciśnij CTRL-O. Powtarzaj by wrócić dalej. CTRL-I | |
527 | + idzie do przodu. | |
528 | + | |
529 | +UWAGA: 'błond' to nie jest metoda by przeliterować błąd; 'błond' to błąd. | |
530 | +UWAGA: Kiedy szukanie osiągnie koniec pliku będzie kontynuowało od początku | |
531 | +o ile opcja 'wrapscan' nie została przestawiona. | |
532 | + | |
533 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
534 | + Lekcja 4.3.: W POSZUKIWANIU PARUJĄCYCH NAWIASÓW | |
535 | + | |
536 | + | |
537 | + ** Wpisz % by znaleźć pasujący ),], lub } . ** | |
538 | + | |
539 | + 1. Umieść kursor na którymś z (, [, lub { w linii poniżej oznaczonej --->. | |
540 | + | |
541 | + 2. Teraz wpisz znak % . | |
542 | + | |
543 | + 3. Kursor powinien się znaleźć na parującym nawiasie. | |
544 | + | |
545 | + 4. Wciśnij % aby przenieść kursor z powrotem do parującego nawiasu. | |
546 | + | |
547 | + 5. Przenieś kursor do innego (,),[,],{ lub } i zobacz co robi % . | |
548 | + | |
549 | +---> To ( jest linia testowa z (, [, ] i {, } . )) | |
550 | + | |
551 | +UWAGA: Ta funkcja jest bardzo użyteczna w debuggowaniu programu | |
552 | + z niesparowanymi nawiasami! | |
553 | + | |
554 | + | |
555 | + | |
556 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
557 | + Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) | |
558 | + | |
559 | + | |
560 | + ** Wpisz :s/stary/nowy/g aby zamienić 'stary' na 'nowy'. ** | |
561 | + | |
562 | + 1. Przenieś kursor do linii poniżej oznaczonej --->. | |
563 | + | |
564 | + 2. Wpisz :s/czaas/czas<ENTER> . Zauważ, że to polecenie zmienia | |
565 | + tylko pierwsze wystąpienie 'czaas' w linii. | |
566 | + | |
567 | + 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianę (substytucję) | |
568 | + globalnie w całej linii. Zmienia wszystkie wystąpienia 'czaas' w linii. | |
569 | + | |
570 | +---> Najlepszy czaas na zobaczenie najładniejszych kwiatów to czaas wiosny. | |
571 | + | |
572 | + 4. Aby zmienić wszystkie wystąpienia łańcucha znaków pomiędzy dwoma liniami, | |
573 | + wpisz: :#,#s/stare/nowe/g gdzie #,# są numerami linii ograniczających | |
574 | + region gdzie ma nastąpić zamiana. | |
575 | + wpisz :%s/stare/nowe/g by zmienić wszystkie wystąpienia w całym pliku. | |
576 | + wpisz :%s/stare/nowe/gc by zmienić wszystkie wystąpienia w całym | |
577 | + pliku, prosząc o potwierdzenie za każdym razem | |
578 | + | |
579 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
580 | + LEKCJA 4. PODSUMOWANIE | |
581 | + | |
582 | + 1. CTRL-G pokaże Twoją pozycję w pliku i status pliku. SHIFT-G przenosi | |
583 | + cię do końca pliku. | |
584 | + G przenosi do końca pliku. | |
585 | + liczba G przenosi do linii [liczba]. | |
586 | + gg przenosi do pierwszej linii. | |
587 | + | |
588 | + 2. Wpisanie / a następnie łańcucha znaków szuka łańcucha DO PRZODU. | |
589 | + Wpisanie ? a następnie łańcucha znaków szuka łańcucha DO TYŁU. | |
590 | + Po wyszukiwaniu wciśnij n by znaleźć następne wystąpienie szukanej | |
591 | + frazy tym samym kierunku lub N by szukać w kierunku przeciwnym. | |
592 | + CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. | |
593 | + | |
594 | + 3. Wpisanie % gdy kursor znajduje się na (,),[,],{, lub } lokalizuje | |
595 | + parujący znak. | |
596 | + | |
597 | + 4. By zamienić pierwszy stary na nowy w linii wpisz :s/stary/nowy | |
598 | + By zamienić wszystkie stary na nowy w linii wpisz :s/stary/nowy/g | |
599 | + By zamienić frazy pomiędzy dwoma liniami # wpisz :#,#s/stary/nowy/g | |
600 | + By zamienić wszystkie wystąpienia w pliku wpisz :%s/stary/nowy/g | |
601 | + By Vim prosił Cię o potwierdzienie dodaj 'c' :%s/stary/nowy/gc | |
602 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
603 | + Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE | |
604 | + | |
605 | + | |
606 | + ** Wpisz :! a następnie zewnętrzne polecenie by je wykonać. ** | |
607 | + | |
608 | + 1. Wpisz znajome polecenie : by ustawić kursor na dole ekranu. To pozwala | |
609 | + na wprowadzenie polecenia. | |
610 | + | |
611 | + 2. Teraz wstaw ! (wykrzyknik). To umożliwi Ci wykonanie dowolnego | |
612 | + zewnętrznego polecenia powłoki. | |
613 | + | |
614 | + 3. Jako przykład wpisz ls za ! a następnie wciśnij <ENTER>. To polecenie | |
615 | + pokaże spis plików w Twoim katalogu, tak jakbyś był przy znaku zachęty | |
616 | + powłoki. Możesz też użyć :!dir jeśli ls nie działa. | |
617 | + | |
618 | +Uwaga: W ten sposób można wykonać wszystkie polecenia powłoki. | |
619 | +Uwaga: Wszystkie polecenia : muszą być zakończone <ENTER>. | |
620 | + Od tego momentu nie zawsze będziemy o tym wspominać. | |
621 | + | |
622 | + | |
623 | + | |
624 | + | |
625 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
626 | + Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW | |
627 | + | |
628 | + | |
629 | + ** By zachować zmiany w tekści wpisz :w NAZWA_PLIKU . ** | |
630 | + | |
631 | + 1. Wpisz :!dir lub :!ls by zobaczyć spis plików w katalogu. | |
632 | + Już wiesz, że musisz wcisnąć <ENTER> po tym. | |
633 | + | |
634 | + 2. Wybierz nazwę pliku jaka jeszcze nie istnieje, np. TEST. | |
635 | + | |
636 | + 3. Teraz wpisz: :w TEST (gdzie TEST jest nazwą pliku jaką wybrałeś.) | |
637 | + | |
638 | + 4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST. | |
639 | + By to sprawdzić wpisz :!dir lub :!ls , żeby znowu zobaczyć listę plików. | |
640 | + | |
641 | +Uwaga: Zauważ, że gdybyś teraz wyszedł z Vim-a, a następnie wszedł ponownie | |
642 | + komendą vim TEST , plik byłby dokładną kopią tutoriala kiedy go | |
643 | + zapisywałeś. | |
644 | + | |
645 | + 5. Teraz usuń plik wpisując: :!rm TEST | |
646 | + | |
647 | + | |
648 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
649 | + Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU | |
650 | + | |
651 | + | |
652 | + ** By zachować część pliku wpisz v ruch :w NAZWA_PLIKU ** | |
653 | + | |
654 | + 1. Przenieś kursor do tego wiersza. | |
655 | + | |
656 | + 2. Wciśnij v i przenieś kursor do punktu 5. Zauważ, że tekst został | |
657 | + podświetlony. | |
658 | + | |
659 | + 3. Wciśnij znak : . Na dole ekranu pojawi się :'<,'> . | |
660 | + | |
661 | + 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. | |
662 | + Upewnij się, że widzisz :'<,'>w TEST zanim wciśniesz Enter. | |
663 | + | |
664 | + 5. Vim zapisze wybrane linie do pliku TEST. Użyj :!dir lub :!ls , żeby to | |
665 | + zobaczyć. Jeszcze go nie usuwaj! Użyjemy go w następnej lekcji. | |
666 | + | |
667 | +UWAGA: Wciśnięcie v zaczyna tryb Wizualny. Możesz poruszać kursorem by | |
668 | + zmienić rozmiary zaznaczenia. Możesz też użyć operatora by zrobić coś | |
669 | + z tekstem. Na przykład d usuwa tekst. | |
670 | + | |
671 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
672 | + Lekcja 5.4.: WSTAWIANIE I ŁĄCZENIE PLIKÓW | |
673 | + | |
674 | + | |
675 | + ** By wstawić zawartość pliku wpisz :r NAZWA_PLIKU ** | |
676 | + | |
677 | + 1. Umieść kursor tuż powyżej tej linii. | |
678 | + | |
679 | +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź | |
680 | + do DOŁU by zobaczyć ponownie tę lekcję. | |
681 | + | |
682 | + 2. Teraz wczytaj plik TEST używając polecenia :r TEST , gdzie TEST | |
683 | + jest nazwą pliku. | |
684 | + Wczytany plik jest umieszczony poniżej linii z kursorem. | |
685 | + | |
686 | + 3. By sprawdzić czy plik został wczytany cofnij kursor i zobacz, że | |
687 | + teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku. | |
688 | + | |
689 | +UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład | |
690 | + :r !ls wczytuje wyjście polecenia ls i umieszcza je pod kursorem. | |
691 | + | |
692 | + | |
693 | + | |
694 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
695 | + LEKCJA 5. PODSUMOWANIE | |
696 | + | |
697 | + | |
698 | + 1. :!polecenie wykonuje polecenie zewnętrzne. | |
699 | + | |
700 | + Użytecznymi przykładami są: | |
701 | + | |
702 | + :!dir - pokazuje spis plików w katalogu. | |
703 | + | |
704 | + :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. | |
705 | + | |
706 | + 2. :w NAZWA_PLIKU zapisuje obecny plik Vim-a na dysk z nazwą NAZWA_PLIKU. | |
707 | + | |
708 | + 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. | |
709 | + | |
710 | + 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do | |
711 | + bieżącego pliku poniżej kursora. | |
712 | + | |
713 | + 5. :r !dir wczytuje wyjście polecenia dir i umieszcza je poniżej kursora. | |
714 | + | |
715 | + | |
716 | + | |
717 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
718 | + Lekcja 6.1.: POLECENIE OPEN (otwórz) | |
719 | + | |
720 | + | |
721 | + ** Wpisz o by otworzyć linię poniżej kursora i przenieść się do | |
722 | + trybu Insert (wprowadzanie). ** | |
723 | + | |
724 | + 1. Przenieś kursor do linii poniżej oznaczonej --->. | |
725 | + | |
726 | + 2. Wpisz o (małe) by otworzyć linię PONIŻEJ kursora i przenieść się | |
727 | + do trybu Insert (wprowadzanie). | |
728 | + | |
729 | + 3. Wpisz trochę tekstu i wciśnij <ESC> by wyjść z trybu Insert (wprowadzanie). | |
730 | + | |
731 | +---> Po wciśnięciu o kursor znajdzie się w otwartej linii w trybie Insert. | |
732 | + | |
733 | + 4. By otworzyć linię POWYŻEJ kursora wciśnij wielkie O zamiast małego | |
734 | + o . Wypróbuj to na linii poniżej. | |
735 | + | |
736 | +---> Otwórz linię powyżej wciskając SHIFT-O gdy kursor będzie na tej linii. | |
737 | + | |
738 | + | |
739 | + | |
740 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
741 | + Lekcja 6.2.: POLECENIE APPEND (dodaj) | |
742 | + | |
743 | + | |
744 | + ** Wpisz a by dodać tekst ZA kursorem. ** | |
745 | + | |
746 | + 1. Przenieś kursor do początku pierwszej linii poniżej oznaczonej ---> | |
747 | + | |
748 | + 2. Wciskaj e dopóki kursor nie będzie na końcu li . | |
749 | + | |
750 | + 3. Wpisz a (małe) aby dodać tekst ZA znakiem pod kursorem. | |
751 | + | |
752 | + 4. Dokończ wyraz tak jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb | |
753 | + Insert. | |
754 | + | |
755 | + 5. Użyj e by przejść do kolejnego niedokończonego wyraze i powtarzaj kroki | |
756 | + 3. i 4. | |
757 | + | |
758 | +---> Ta li poz Ci ćwi dodaw teks do koń lin | |
759 | +---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii. | |
760 | + | |
761 | +Uwaga: a , i and A prowadzą do trybu Insert, jedyną różnicą jest miejsce | |
762 | + gdzie nowe znaki będą dodawane. | |
763 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
764 | + Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) | |
765 | + | |
766 | + | |
767 | + ** Wpisz wielkie R by zamienić więcej niż jeden znak. ** | |
768 | + | |
769 | + 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. Przenieś | |
770 | + kursor do pierwszego xxx . | |
771 | + | |
772 | + 2. Wciśnij R i wpisz numer poniżej w drugiej linii, tak, że zastąpi on | |
773 | + xxx. | |
774 | + | |
775 | + 3. Wciśnij <ESC> by opuścić tryb Replace. Zauważ, że reszta linii pozostaje | |
776 | + niezmieniona. | |
777 | + | |
778 | + 5. Powtarzaj kroki by wymienić wszystkie xxx. | |
779 | + | |
780 | +---> Dodanie 123 do xxx daje xxx. | |
781 | +---> Dodanie 123 do 456 daje 579. | |
782 | + | |
783 | +UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejący | |
784 | + znak. | |
785 | + | |
786 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
787 | + Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU | |
788 | + | |
789 | + | |
790 | + ** użyj operatora y aby skopiować tekst i p aby go wkleić ** | |
791 | + | |
792 | + 1. Przejdź do linii oznaczonej ---> i umieśc kursor za "a)". | |
793 | + | |
794 | + 2. Wejdź w tryb Visual v i przenieś kursor na początek "pierwszy". | |
795 | + | |
796 | + 3. Wciśnij y aby yankować (kopiować) podświetlony tekst. | |
797 | + | |
798 | + 4. Przenieś kursor do końca następnej linii: j$ | |
799 | + | |
800 | + 5. Wciśnij p aby wpakować (paste) tekst. Dodaj: a drugi<ESC> . | |
801 | + | |
802 | + 6. Użyj trybu Visual aby wybrać " element.", yankuj go y , przejdź do końca | |
803 | + następnej linii j$ i upakuj tam tekst z p . | |
804 | + | |
805 | +---> a) to jest pierwszy element. | |
806 | + b) | |
807 | +Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. | |
808 | + | |
809 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
810 | + Lekcja 6.5.: USTAWIANIE OPCJI | |
811 | + | |
812 | + | |
813 | +** Ustawianie opcji tak by szukaj lub substytucja ignorowały wielkość liter ** | |
814 | + | |
815 | + 1. Szukaj 'ignore' wpisując: /ignore<ENTER> | |
816 | + Powtórz szukanie kilka razy naciskając klawisz n . | |
817 | + | |
818 | + 2. Ustaw opcję 'ic' (Ignore case -- ignoruj wielkość liter) poprzez | |
819 | + wpisanie: :set ic | |
820 | + | |
821 | + 3. Teraz szukaj 'ignore' ponownie wciskując: n | |
822 | + Zauważ, że Ignore i IGNORE także są teraz znalezione. | |
823 | + | |
824 | + 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is | |
825 | + | |
826 | + 5. Teraz wprowadź polecenie szukaj ponownie i zobacz co się zdarzy: | |
827 | + /ignore<ENTER> | |
828 | + | |
829 | + 6. Aby wyłączyć ignorowanie wielkości liter: :set noic | |
830 | + | |
831 | +Uwaga: Aby usunąć podświetlanie dopasowań wpisz: :nohlsearch | |
832 | +Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER> | |
833 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
834 | + LEKCJA 6. PODSUMOWANIE | |
835 | + | |
836 | + | |
837 | + 1. Wpisanie o otwiera linię PONIŻEJ kursora. | |
838 | + Wpisanie wielkiego O otwiera linię POWYŻEJ kursora. | |
839 | + 2. Wpisz a by wstawić tekst ZA znakiem na, którym jest kursor. | |
840 | + Wpisanie wielkiego A dodaje tekst na końcu linii. | |
841 | + 3. Polecenie e przenosi do końca wyrazu. | |
842 | + 4. Operato y yankuje (kopiuje) tekst, p pakuje (wkleja, paste) go. | |
843 | + 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki | |
844 | + nie zostanie wciśnięty <ESC>. | |
845 | + 6. Wpisanie ":set xxx" ustawia opcję "xxx". Nietkóre opcje: | |
846 | + 'ic' 'ignorecase' ignoruj wielkość znaków | |
847 | + 'is' 'incsearch' pokaż częściowe dopasowania | |
848 | + 'hls' 'hlsearch' podświetl wszystkie dopasowania | |
849 | + Możesz użyć zarówno długiej jak i krótkiej formy. | |
850 | + 7. Dodaj "no" aby wyłączyć opcję: :set noic | |
851 | + | |
852 | + | |
853 | + | |
854 | + | |
855 | + | |
856 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
857 | + LEKCJA 7.1. JAK UZYSKAĆ POMOC | |
858 | + | |
859 | + ** Użycie systemu pomocy on-line ** | |
860 | + | |
861 | + Vim posiada bardzo dobry system pomocy on-line. By zacząć spróbuj jednej | |
862 | + z trzech możliwości: | |
863 | + - wciśnij klawisz <HELP> (jeśli takowy posiadasz) | |
864 | + - wciśnij klawisz <F1> (jeśli takowy posiadasz) | |
865 | + - wpisz :help<ENTER> | |
866 | + | |
867 | + Przeczytaj tekst w oknie pomocy aby dowiedzieć się jak działa pomoc. | |
868 | + wpisz CTRL-W CTRL-W aby przeskoczyć z jednego okna do innego | |
869 | + wpisz :q<ENTER> aby zamknąć okno pomocy. | |
870 | + | |
871 | + Możesz też znaleźć pomoc na każdy temat podając argument polecenia ":help". | |
872 | + Spróbuj tych (nie zapomnij wcisnąć <ENTER>): | |
873 | + | |
874 | + :help w | |
875 | + :help c_CTRL-D | |
876 | + :help insert-index | |
877 | + :help user-manual | |
878 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
879 | + LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO | |
880 | + | |
881 | + ** Włącz możliwości Vim-a ** | |
882 | + | |
883 | + Vim ma o wiele więcej możliwości niż Vi, ale większość z nich jest domyślnie | |
884 | + wyłączona. Jeśli chcesz włączyć te możliwości na starcie musisz utworzyć | |
885 | + plik "vimrc". | |
886 | + | |
887 | + 1. Początek edycji pliku "vimrc" zależy od Twojego systemu: | |
888 | + :edit ~/.vimrc dla Uniksa | |
889 | + :edit $VIM/_vimrc dla MS-Windows | |
890 | + 2. Teraz wczytaj przykładowy plik "vimrc": | |
891 | + :read $VIMRUNTIME/vimrc_example.vim | |
892 | + 3. Zapisz plik: | |
893 | + :w | |
894 | + | |
895 | + Następnym razem gdy zaczniesz pracę w Vimie będzie on używać podświetlania | |
896 | + składni. Możesz dodać wszystkie swoje ulubione ustawienia do tego pliku | |
897 | + "vimrc". | |
898 | + Aby uzyskać więcej informacji wpisz :help vimrc-intro | |
899 | + | |
900 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
901 | + Lekcja 7.3.: UZUPEŁNIANIE | |
902 | + | |
903 | + | |
904 | + ** Uzupełnianie linii poleceń z CTRL-D i <TAB> ** | |
905 | + | |
906 | + 1. Upewnij się, że Vim nie jest w trybie kompatybilności: :set nocp | |
907 | + | |
908 | + 2. Zerknij jakie pliki są w bieżącm katalogu: :!ls lub :!dir | |
909 | + | |
910 | + 3. Wpisz początek polecenia: :e | |
911 | + | |
912 | + 4. Wciśnij CTRL-D i Vim pokaże listę poleceń jakie zaczynają się na "e". | |
913 | + | |
914 | + 5. Wciśnij <TAB> i Vim uzupełni polecenie do ":edit". | |
915 | + | |
916 | + 6. Dodaj spację i zacznij wpisywać nazwę istniejącego pliku: :edit FIL | |
917 | + | |
918 | + 7. Wciśnij <TAB>. Vim uzupełni nazwę (jeśli jest niepowtarzalna). | |
919 | + | |
920 | +UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>. | |
921 | + Użyteczne zwłaszcza przy :help . | |
922 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
923 | + Lekcja 7. PODSUMOWANIE | |
924 | + | |
925 | + | |
926 | + 1. Wpisz :help lub wciśnij <F1> lub <Help> aby otworzyć okno pomocy. | |
927 | + | |
928 | + 2. Wpisz :help cmd aby uzyskać pomoc o cmd . | |
929 | + | |
930 | + 3. Wpisz CTRL-W CTRL-W aby przeskoczyć do innego okna. | |
931 | + | |
932 | + 4. Wpisz :q aby zamknąć okno pomocy. | |
933 | + | |
934 | + 5. Utwórz plik startowy vimrc aby zachować wybrane ustawienia. | |
935 | + | |
936 | + 6. Po poleceniu : , wciśnij CTRL-D aby zobaczyć możliwe uzupełnienia. | |
937 | + Wciśnij <TAB> aby użyć jednego z nich. | |
938 | + | |
939 | + | |
940 | + | |
941 | + | |
942 | + | |
943 | + | |
944 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
945 | + | |
946 | + Tutaj się kończy tutorial Vim-a. Został on pomyślany tak aby dać krótki | |
947 | + przegląd jego możliwości, wystarczający byś mógł go używać. Jest on | |
948 | + daleki od kompletności ponieważ Vim ma o wiele, wiele więcej poleceń. | |
949 | + | |
950 | + Dla dalszej nauki rekomendujemy książkę: | |
951 | + Vim - Vi Improved - autor Steve Oualline | |
952 | + Wydawca: New Riders | |
953 | + Pierwsza ksiązka całkowicie poświęcona Vim-owi. Użyteczna zwłaszcza dla | |
954 | + początkujących. Zawiera wiele przykładów i ilustracji. | |
955 | + Zobacz http://iccf-holland.org./click5.html | |
956 | + | |
957 | + Ta książka jest starsza i bardziej o Vi niż o Vim-ie, ale także warta | |
958 | + polecenia: | |
959 | + Learning the Vi Editor - autor Linda Lamb | |
960 | + Wydawca: O'Reilly & Associates Inc. | |
961 | + To dobra książka by dowiedzieć się niemal wszystkiego co chciałbyś zrobić | |
962 | + z Vi. Szósta edycja zawiera też informacje o Vim-ie. | |
963 | + | |
964 | + Po polsku wydano: | |
965 | + Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins | |
966 | + Wydawca: Helion 2001 (O'Reilly). | |
967 | + ISBN: 83-7197-472-8 | |
968 | + http://helion.pl/ksiazki/vilek.htm | |
969 | + Jest to książeczka zawierająca spis poleceń vi i jego najważniejszych | |
970 | + klonów (między innymi Vim-a). | |
971 | + | |
972 | + Edytor vi - autorzy Linda Lamb i Arnold Robbins | |
973 | + Wydawca: Helion 2001 (O'Reilly) - wg 6 ang. wydania | |
974 | + ISBN: 83-7197-539-2 | |
975 | + http://helion.pl/ksiazki/viedyt.htm | |
976 | + Rozszerzona wersja Learning the Vi Editor w polskim tłumaczeniu. | |
977 | + | |
978 | + Ten tutorial został napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, | |
979 | + Colorado School of Mines korzystając z pomocy Charlesa Smitha, | |
980 | + Colorado State University. | |
981 | + E-mail: bware@mines.colorado.edu. | |
982 | + | |
983 | + Zmodyfikowane dla Vim-a przez Brama Moolenaara. | |
984 | + | |
985 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
986 | + | |
987 | + Przetłumaczone przez Mikołaja Machowskiego, | |
988 | + Sierpień 2001, | |
989 | + rev. Marzec 2002 | |
990 | + 2nd rev. Wrzesień 2004 | |
991 | + Wszelkie uwagi proszę kierować na: mikmach@wp.pl |
@@ -1,6 +1,6 @@ | ||
1 | 1 | " Vim tutor support file |
2 | 2 | " Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es> |
3 | -" Last Change: 2004 Jun 03 | |
3 | +" Last Change: 2004 Sep 06 | |
4 | 4 | |
5 | 5 | " This small source file is used for detecting if a translation of the |
6 | 6 | " tutor file exist, i.e., a tutor.xx file, where xx is the language. |
@@ -70,8 +70,12 @@ | ||
70 | 70 | endif |
71 | 71 | |
72 | 72 | " The Polish tutor is available in two encodings, guess which one to use. |
73 | -if s:ext =~? '\.pl' && &enc =~ 1250 | |
74 | - let s:ext = ".pl.cp1250" | |
73 | +if s:ext =~? '\.pl' | |
74 | + if &enc =~ 1250 | |
75 | + let s:ext = ".pl.cp1250" | |
76 | + elseif &enc =~ "utf-8$" | |
77 | + let s:ext = ".pl.utf-8" | |
78 | + endif | |
75 | 79 | endif |
76 | 80 | |
77 | 81 | " The Greek tutor is available in two encodings, guess which one to use |
@@ -117,7 +117,7 @@ | ||
117 | 117 | # c:/windows/system32 isn't a good idea, use some other dir; |
118 | 118 | # to build you can put them in temp dir) |
119 | 119 | ifndef MZSCHEME_LIBDIR |
120 | -MZSCHEME_LIBDIR=$(MZSCHEME) | |
120 | +MZSCHEME_LIBDIR=-L$(MZSCHEME) | |
121 | 121 | endif |
122 | 122 | endif |
123 | 123 |
@@ -510,7 +510,7 @@ | ||
510 | 510 | $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) |
511 | 511 | |
512 | 512 | $(TARGET): $(OUTDIR) $(OBJ) |
513 | - $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid -L $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(RUBYLIB) | |
513 | + $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(RUBYLIB) | |
514 | 514 | |
515 | 515 | upx: exes |
516 | 516 | upx gvim.exe |
@@ -565,6 +565,7 @@ | ||
565 | 565 | #ifdef FEAT_SYN_HL |
566 | 566 | syntax_clear(buf); /* reset syntax info */ |
567 | 567 | #endif |
568 | + buf->b_flags &= ~BF_READERR; /* a read error is no longer relevant */ | |
568 | 569 | } |
569 | 570 | |
570 | 571 | /* |
@@ -670,17 +671,23 @@ | ||
670 | 671 | && (defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)) |
671 | 672 | if (swap_exists_action == SEA_QUIT && *eap->cmd == 's') |
672 | 673 | { |
673 | - int old_got_int = got_int; | |
674 | - | |
675 | - /* Quitting means closing the split window, nothing else. | |
676 | - * Reset got_int here, because it causes aborting() to return TRUE | |
677 | - * which breaks closing a window. */ | |
678 | - got_int = FALSE; | |
679 | - | |
674 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
675 | + cleanup_T cs; | |
676 | + | |
677 | + /* Reset the error/interrupt/exception state here so that | |
678 | + * aborting() returns FALSE when closing a window. */ | |
679 | + enter_cleanup(&cs); | |
680 | +# endif | |
681 | + | |
682 | + /* Quitting means closing the split window, nothing else. */ | |
680 | 683 | win_close(curwin, TRUE); |
681 | - | |
682 | - got_int |= old_got_int; | |
683 | 684 | swap_exists_action = SEA_NONE; |
685 | + | |
686 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
687 | + /* Restore the error/interrupt/exception state if not discarded by a | |
688 | + * new aborting error, interrupt, or uncaught exception. */ | |
689 | + leave_cleanup(&cs); | |
690 | +# endif | |
684 | 691 | } |
685 | 692 | else |
686 | 693 | handle_swap_exists(old_curbuf); |
@@ -697,37 +704,58 @@ | ||
697 | 704 | handle_swap_exists(old_curbuf) |
698 | 705 | buf_T *old_curbuf; |
699 | 706 | { |
700 | - int old_got_int = got_int; | |
701 | - | |
702 | - /* Reset got_int here, because it causes aborting() to return TRUE which | |
703 | - * breaks closing a buffer. */ | |
704 | - got_int = FALSE; | |
707 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
708 | + cleanup_T cs; | |
709 | +# endif | |
705 | 710 | |
706 | 711 | if (swap_exists_action == SEA_QUIT) |
707 | 712 | { |
713 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
714 | + /* Reset the error/interrupt/exception state here so that | |
715 | + * aborting() returns FALSE when closing a buffer. */ | |
716 | + enter_cleanup(&cs); | |
717 | +# endif | |
718 | + | |
708 | 719 | /* User selected Quit at ATTENTION prompt. Go back to previous |
709 | 720 | * buffer. If that buffer is gone or the same as the current one, |
710 | 721 | * open a new, empty buffer. */ |
711 | 722 | swap_exists_action = SEA_NONE; /* don't want it again */ |
712 | 723 | close_buffer(curwin, curbuf, DOBUF_UNLOAD); |
713 | 724 | if (!buf_valid(old_curbuf) || old_curbuf == curbuf) |
714 | - old_curbuf = buflist_new(NULL, NULL, 1L, | |
715 | - BLN_CURBUF | BLN_LISTED | BLN_FORCE); | |
725 | + old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); | |
716 | 726 | if (old_curbuf != NULL) |
717 | 727 | enter_buffer(old_curbuf); |
718 | 728 | /* If "old_curbuf" is NULL we are in big trouble here... */ |
729 | + | |
730 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
731 | + /* Restore the error/interrupt/exception state if not discarded by a | |
732 | + * new aborting error, interrupt, or uncaught exception. */ | |
733 | + leave_cleanup(&cs); | |
734 | +# endif | |
719 | 735 | } |
720 | 736 | else if (swap_exists_action == SEA_RECOVER) |
721 | 737 | { |
738 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
739 | + /* Reset the error/interrupt/exception state here so that | |
740 | + * aborting() returns FALSE when closing a buffer. */ | |
741 | + enter_cleanup(&cs); | |
742 | +# endif | |
743 | + | |
722 | 744 | /* User selected Recover at ATTENTION prompt. */ |
723 | 745 | msg_scroll = TRUE; |
724 | 746 | ml_recover(); |
725 | 747 | MSG_PUTS("\n"); /* don't overwrite the last message */ |
726 | 748 | cmdline_row = msg_row; |
727 | 749 | do_modelines(FALSE); |
750 | + | |
751 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
752 | + /* Restore the error/interrupt/exception state if not discarded by a | |
753 | + * new aborting error, interrupt, or uncaught exception. */ | |
754 | + leave_cleanup(&cs); | |
755 | +# endif | |
728 | 756 | } |
729 | 757 | swap_exists_action = SEA_NONE; |
730 | - got_int |= old_got_int; | |
758 | + | |
731 | 759 | } |
732 | 760 | #endif |
733 | 761 |
@@ -1347,11 +1375,13 @@ | ||
1347 | 1375 | /* Make sure the buffer is loaded. */ |
1348 | 1376 | if (curbuf->b_ml.ml_mfp == NULL) /* need to load the file */ |
1349 | 1377 | { |
1378 | +#ifdef FEAT_AUTOCMD | |
1350 | 1379 | /* If there is no filetype, allow for detecting one. Esp. useful for |
1351 | 1380 | * ":ball" used in a autocommand. If there already is a filetype we |
1352 | 1381 | * might prefer to keep it. */ |
1353 | 1382 | if (*curbuf->b_p_ft == NUL) |
1354 | 1383 | did_filetype = FALSE; |
1384 | +#endif | |
1355 | 1385 | |
1356 | 1386 | open_buffer(FALSE, NULL); |
1357 | 1387 | } |
@@ -1408,7 +1438,6 @@ | ||
1408 | 1438 | * If (flags & BLN_CURBUF) is TRUE, may use current buffer. |
1409 | 1439 | * If (flags & BLN_LISTED) is TRUE, add new buffer to buffer list. |
1410 | 1440 | * If (flags & BLN_DUMMY) is TRUE, don't count it as a real buffer. |
1411 | - * If (flags & BLN_FORCE) is TRUE, don't abort on an error. | |
1412 | 1441 | * This is the ONLY way to create a new buffer. |
1413 | 1442 | */ |
1414 | 1443 | static int top_file_num = 1; /* highest file number */ |
@@ -1484,7 +1513,7 @@ | ||
1484 | 1513 | apply_autocmds(EVENT_BUFWIPEOUT, NULL, NULL, FALSE, curbuf); |
1485 | 1514 | # ifdef FEAT_EVAL |
1486 | 1515 | /* autocmds may abort script processing */ |
1487 | - if (!(flags & BLN_FORCE) && aborting()) | |
1516 | + if (aborting()) | |
1488 | 1517 | return NULL; |
1489 | 1518 | # endif |
1490 | 1519 | #endif |
@@ -1538,7 +1567,7 @@ | ||
1538 | 1567 | return NULL; |
1539 | 1568 | #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) |
1540 | 1569 | /* autocmds may abort script processing */ |
1541 | - if (!(flags & BLN_FORCE) && aborting()) | |
1570 | + if (aborting()) | |
1542 | 1571 | return NULL; |
1543 | 1572 | #endif |
1544 | 1573 | /* buf->b_nwindows = 0; why was this here? */ |
@@ -1615,7 +1644,7 @@ | ||
1615 | 1644 | apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, buf); |
1616 | 1645 | # ifdef FEAT_EVAL |
1617 | 1646 | /* autocmds may abort script processing */ |
1618 | - if (!(flags & BLN_FORCE) && aborting()) | |
1647 | + if (aborting()) | |
1619 | 1648 | return NULL; |
1620 | 1649 | # endif |
1621 | 1650 | } |
@@ -4262,18 +4291,25 @@ | ||
4262 | 4291 | #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) |
4263 | 4292 | if (swap_exists_action == SEA_QUIT) |
4264 | 4293 | { |
4265 | - int old_got_int = got_int; | |
4266 | - | |
4267 | - /* User selected Quit at ATTENTION prompt; close this window. | |
4268 | - * Reset got_int here, because it causes aborting() to return | |
4269 | - * TRUE which breaks closing a window. */ | |
4270 | - got_int = FALSE; | |
4271 | - | |
4294 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
4295 | + cleanup_T cs; | |
4296 | + | |
4297 | + /* Reset the error/interrupt/exception state here so that | |
4298 | + * aborting() returns FALSE when closing a window. */ | |
4299 | + enter_cleanup(&cs); | |
4300 | +# endif | |
4301 | + | |
4302 | + /* User selected Quit at ATTENTION prompt; close this window. */ | |
4272 | 4303 | win_close(curwin, TRUE); |
4273 | 4304 | --open_wins; |
4274 | - | |
4275 | - got_int |= old_got_int; | |
4276 | 4305 | swap_exists_action = SEA_NONE; |
4306 | + | |
4307 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
4308 | + /* Restore the error/interrupt/exception state if not | |
4309 | + * discarded by a new aborting error, interrupt, or uncaught | |
4310 | + * exception. */ | |
4311 | + leave_cleanup(&cs); | |
4312 | +# endif | |
4277 | 4313 | } |
4278 | 4314 | else |
4279 | 4315 | handle_swap_exists(NULL); |
@@ -2933,7 +2933,7 @@ | ||
2933 | 2933 | {"synID", 3, 3, f_synID}, |
2934 | 2934 | {"synIDattr", 2, 3, f_synIDattr}, |
2935 | 2935 | {"synIDtrans", 1, 1, f_synIDtrans}, |
2936 | - {"system", 1, 1, f_system}, | |
2936 | + {"system", 1, 2, f_system}, | |
2937 | 2937 | {"tempname", 0, 0, f_tempname}, |
2938 | 2938 | {"tolower", 1, 1, f_tolower}, |
2939 | 2939 | {"toupper", 1, 1, f_toupper}, |
@@ -7570,16 +7570,52 @@ | ||
7570 | 7570 | VAR argvars; |
7571 | 7571 | VAR retvar; |
7572 | 7572 | { |
7573 | + char_u *res = NULL; | |
7573 | 7574 | char_u *p; |
7574 | - | |
7575 | - p = get_cmd_output(get_var_string(&argvars[0]), SHELL_SILENT); | |
7575 | + char_u *infile = NULL; | |
7576 | + char_u buf[NUMBUFLEN]; | |
7577 | + int err = FALSE; | |
7578 | + FILE *fd; | |
7579 | + | |
7580 | + if (argvars[1].var_type != VAR_UNKNOWN) | |
7581 | + { | |
7582 | + /* | |
7583 | + * Write the string to a temp file, to be used for input of the shell | |
7584 | + * command. | |
7585 | + */ | |
7586 | + if ((infile = vim_tempname('i')) == NULL) | |
7587 | + { | |
7588 | + EMSG(_(e_notmp)); | |
7589 | + return; | |
7590 | + } | |
7591 | + | |
7592 | + fd = mch_fopen((char *)infile, WRITEBIN); | |
7593 | + if (fd == NULL) | |
7594 | + { | |
7595 | + EMSG2(_(e_notopen), infile); | |
7596 | + goto done; | |
7597 | + } | |
7598 | + p = get_var_string_buf(&argvars[1], buf); | |
7599 | + if (fwrite(p, STRLEN(p), 1, fd) != 1) | |
7600 | + err = TRUE; | |
7601 | + if (fclose(fd) != 0) | |
7602 | + err = TRUE; | |
7603 | + if (err) | |
7604 | + { | |
7605 | + EMSG(_("E677: Error writing temp file")); | |
7606 | + goto done; | |
7607 | + } | |
7608 | + } | |
7609 | + | |
7610 | + res = get_cmd_output(get_var_string(&argvars[0]), infile, SHELL_SILENT); | |
7611 | + | |
7576 | 7612 | #ifdef USE_CR |
7577 | 7613 | /* translate <CR> into <NL> */ |
7578 | - if (p != NULL) | |
7614 | + if (res != NULL) | |
7579 | 7615 | { |
7580 | 7616 | char_u *s; |
7581 | 7617 | |
7582 | - for (s = p; *s; ++s) | |
7618 | + for (s = res; *s; ++s) | |
7583 | 7619 | { |
7584 | 7620 | if (*s == CAR) |
7585 | 7621 | *s = NL; |
@@ -7588,12 +7624,12 @@ | ||
7588 | 7624 | #else |
7589 | 7625 | # ifdef USE_CRNL |
7590 | 7626 | /* translate <CR><NL> into <NL> */ |
7591 | - if (p != NULL) | |
7627 | + if (res != NULL) | |
7592 | 7628 | { |
7593 | 7629 | char_u *s, *d; |
7594 | 7630 | |
7595 | - d = p; | |
7596 | - for (s = p; *s; ++s) | |
7631 | + d = res; | |
7632 | + for (s = res; *s; ++s) | |
7597 | 7633 | { |
7598 | 7634 | if (s[0] == CAR && s[1] == NL) |
7599 | 7635 | ++s; |
@@ -7603,8 +7639,15 @@ | ||
7603 | 7639 | } |
7604 | 7640 | # endif |
7605 | 7641 | #endif |
7642 | + | |
7643 | +done: | |
7644 | + if (infile != NULL) | |
7645 | + { | |
7646 | + mch_remove(infile); | |
7647 | + vim_free(infile); | |
7648 | + } | |
7606 | 7649 | retvar->var_type = VAR_STRING; |
7607 | - retvar->var_val.var_string = p; | |
7650 | + retvar->var_val.var_string = res; | |
7608 | 7651 | } |
7609 | 7652 | |
7610 | 7653 | /* |
@@ -276,6 +276,8 @@ | ||
276 | 276 | RANGE|NOTADR|COUNT|TRLBAR), |
277 | 277 | EX(CMD_delete, "delete", ex_operators, |
278 | 278 | RANGE|WHOLEFOLD|REGSTR|COUNT|TRLBAR|CMDWIN|MODIFY), |
279 | +EX(CMD_delmarks, "delmarks", ex_delmarks, | |
280 | + BANG|EXTRA|TRLBAR|CMDWIN), | |
279 | 281 | EX(CMD_debug, "debug", ex_debug, |
280 | 282 | NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), |
281 | 283 | EX(CMD_debuggreedy, "debuggreedy", ex_debuggreedy, |
@@ -6679,10 +6679,24 @@ | ||
6679 | 6679 | need_hide = (curbufIsChanged() && curbuf->b_nwindows <= 1); |
6680 | 6680 | if (!need_hide || P_HID(curbuf)) |
6681 | 6681 | { |
6682 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
6683 | + cleanup_T cs; | |
6684 | + | |
6685 | + /* Reset the error/interrupt/exception state here so that | |
6686 | + * aborting() returns FALSE when closing a window. */ | |
6687 | + enter_cleanup(&cs); | |
6688 | +# endif | |
6682 | 6689 | # ifdef FEAT_GUI |
6683 | 6690 | need_mouse_correct = TRUE; |
6684 | 6691 | # endif |
6685 | 6692 | win_close(curwin, !need_hide && !P_HID(curbuf)); |
6693 | + | |
6694 | +# if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) | |
6695 | + /* Restore the error/interrupt/exception state if not | |
6696 | + * discarded by a new aborting error, interrupt, or | |
6697 | + * uncaught exception. */ | |
6698 | + leave_cleanup(&cs); | |
6699 | +# endif | |
6686 | 6700 | } |
6687 | 6701 | } |
6688 | 6702 | #endif |
@@ -1820,6 +1820,151 @@ | ||
1820 | 1820 | } |
1821 | 1821 | |
1822 | 1822 | /* |
1823 | + * Function to be called before a failed command invokes a sequence of | |
1824 | + * autocommands for cleanup. (Failure means here that a call to emsg() has | |
1825 | + * been made, an interrupt occurred, or there is an uncaught exception from a | |
1826 | + * previous autocommand execution of the same command.) This function works a | |
1827 | + * bit like ex_finally() except that there was not actually an extra try block | |
1828 | + * around the part that failed and an error or interrupt has not (yet) been | |
1829 | + * converted to an exception. This function saves the | |
1830 | + * error/interrupt/exception state and prepares for the call to do_cmdline() | |
1831 | + * that is going to be made for the cleanup autocommand execution. | |
1832 | + * | |
1833 | + * Stores the pending error/interrupt/exception state in the cleanup_T | |
1834 | + * structure pointed to by "csp", which has to be passed as an argument to | |
1835 | + * leave_cleanup() after the autocommand execution has finished. | |
1836 | + */ | |
1837 | + void | |
1838 | +enter_cleanup(csp) | |
1839 | + cleanup_T *csp; | |
1840 | +{ | |
1841 | + int pending = CSTP_NONE; | |
1842 | + | |
1843 | + /* | |
1844 | + * Postpone did_emsg, got_int, did_throw. The pending values will be | |
1845 | + * restored by leave_cleanup() except if there was an aborting error, | |
1846 | + * interrupt, or uncaught exception after this function ends. | |
1847 | + */ | |
1848 | + if (did_emsg || got_int || did_throw || need_rethrow) | |
1849 | + { | |
1850 | + csp->pending = (did_emsg ? CSTP_ERROR : 0) | |
1851 | + | (got_int ? CSTP_INTERRUPT : 0) | |
1852 | + | (did_throw ? CSTP_THROW : 0) | |
1853 | + | (need_rethrow ? CSTP_THROW : 0); | |
1854 | + | |
1855 | + /* If we are currently throwing an exception (did_throw), save it as | |
1856 | + * well. On an error not yet converted to an exception, update | |
1857 | + * "force_abort" and reset "cause_abort" (as do_errthrow() would do). | |
1858 | + * This is needed for the do_cmdline() call that is going to be made | |
1859 | + * for autocommand execution. We need not save *msg_list because | |
1860 | + * there is an extra instance for every call of do_cmdline(), anyway. | |
1861 | + */ | |
1862 | + if (did_throw || need_rethrow) | |
1863 | + csp->exception = current_exception; | |
1864 | + else | |
1865 | + { | |
1866 | + csp->exception = NULL; | |
1867 | + if (did_emsg) | |
1868 | + { | |
1869 | + force_abort |= cause_abort; | |
1870 | + cause_abort = FALSE; | |
1871 | + } | |
1872 | + } | |
1873 | + did_emsg = got_int = did_throw = need_rethrow = FALSE; | |
1874 | + | |
1875 | + /* Report if required by the 'verbose' option or when debugging. */ | |
1876 | + report_make_pending(pending, csp->exception); | |
1877 | + } | |
1878 | + else | |
1879 | + { | |
1880 | + csp->pending = CSTP_NONE; | |
1881 | + csp->exception = NULL; | |
1882 | + } | |
1883 | +} | |
1884 | + | |
1885 | +/* | |
1886 | + * Function to be called after a failed command invoked a sequence of | |
1887 | + * autocommands for cleanup. It is a bit like ex_endtry() except that there | |
1888 | + * was not actually an extra try block around the part that failed and an | |
1889 | + * error or interrupt had not (yet) been converted to an exception when the | |
1890 | + * cleanup autocommand sequence was invoked. This function has to be called | |
1891 | + * with the address of the cleanup_T structure filled by enter_cleanup() as an | |
1892 | + * argument; it restores the error/interrupt/exception state saved by that | |
1893 | + * function - except there was an aborting error, an interrupt or an uncaught | |
1894 | + * exception during execution of the cleanup autocommands. In the latter | |
1895 | + * case, the saved error/interrupt/ exception state is discarded. | |
1896 | + */ | |
1897 | + void | |
1898 | +leave_cleanup(csp) | |
1899 | + cleanup_T *csp; | |
1900 | +{ | |
1901 | + int pending = csp->pending; | |
1902 | + | |
1903 | + if (pending == CSTP_NONE) /* nothing to do */ | |
1904 | + return; | |
1905 | + | |
1906 | + /* If there was an aborting error, an interrupt, or an uncaught exception | |
1907 | + * after the corresponding call to enter_cleanup(), discard what has been | |
1908 | + * made pending by it. Report this to the user if required by the | |
1909 | + * 'verbose' option or when debugging. */ | |
1910 | + if (aborting() || need_rethrow) | |
1911 | + { | |
1912 | + if (pending & CSTP_THROW) | |
1913 | + /* Cancel the pending exception (includes report). */ | |
1914 | + discard_exception((except_T *)csp->exception, FALSE); | |
1915 | + else | |
1916 | + report_discard_pending(pending, NULL); | |
1917 | + | |
1918 | + /* If an error was about to be converted to an exception when | |
1919 | + * enter_cleanup() was called, free the message list. */ | |
1920 | + free_msglist(*msg_list); | |
1921 | + *msg_list = NULL; | |
1922 | + } | |
1923 | + | |
1924 | + /* | |
1925 | + * If there was no new error, interrupt, or throw between the calls | |
1926 | + * to enter_cleanup() and leave_cleanup(), restore the pending | |
1927 | + * error/interrupt/exception state. | |
1928 | + */ | |
1929 | + else | |
1930 | + { | |
1931 | + /* | |
1932 | + * If there was an exception being thrown when enter_cleanup() was | |
1933 | + * called, we need to rethrow it. Make it the exception currently | |
1934 | + * being thrown. | |
1935 | + */ | |
1936 | + if (pending & CSTP_THROW) | |
1937 | + current_exception = csp->exception; | |
1938 | + | |
1939 | + /* | |
1940 | + * If an error was about to be converted to an exception when | |
1941 | + * enter_cleanup() was called, let "cause_abort" take the part of | |
1942 | + * "force_abort" (as done by cause_errthrow()). | |
1943 | + */ | |
1944 | + else if (pending & CSTP_ERROR) | |
1945 | + { | |
1946 | + cause_abort = force_abort; | |
1947 | + force_abort = FALSE; | |
1948 | + } | |
1949 | + | |
1950 | + /* | |
1951 | + * Restore the pending values of did_emsg, got_int, and did_throw. | |
1952 | + */ | |
1953 | + if (pending & CSTP_ERROR) | |
1954 | + did_emsg = TRUE; | |
1955 | + if (pending & CSTP_INTERRUPT) | |
1956 | + got_int = TRUE; | |
1957 | + if (pending & CSTP_THROW) | |
1958 | + need_rethrow = TRUE; /* did_throw will be set by do_one_cmd() */ | |
1959 | + | |
1960 | + /* Report if required by the 'verbose' option or when debugging. */ | |
1961 | + report_resume_pending(pending, | |
1962 | + (pending & CSTP_THROW) ? (void *)current_exception : NULL); | |
1963 | + } | |
1964 | +} | |
1965 | + | |
1966 | + | |
1967 | +/* | |
1823 | 1968 | * Make conditionals inactive and discard what's pending in finally clauses |
1824 | 1969 | * until the conditional type searched for or a try conditional not in its |
1825 | 1970 | * finally clause is reached. If this is in an active catch clause, finish the |
@@ -3832,8 +3832,10 @@ | ||
3832 | 3832 | #ifdef FEAT_MBYTE |
3833 | 3833 | /* |
3834 | 3834 | * The BOM is written just after the encryption magic number. |
3835 | + * Skip it when appending and the file already existed, the BOM only makes | |
3836 | + * sense at the start of the file. | |
3835 | 3837 | */ |
3836 | - if (buf->b_p_bomb && !write_bin) | |
3838 | + if (buf->b_p_bomb && !write_bin && (!append || perm < 0)) | |
3837 | 3839 | { |
3838 | 3840 | write_info.bw_len = make_bom(buffer, fenc); |
3839 | 3841 | if (write_info.bw_len > 0) |
@@ -154,9 +154,9 @@ | ||
154 | 154 | int |
155 | 155 | gui_mch_haskey(char_u * name)//{{{ |
156 | 156 | { |
157 | - for (int i=0; special_keys[i].qtkey != 0; i++) | |
158 | - if (name[0] == special_keys[i].code0 && | |
159 | - name[1] == special_keys[i].code1) | |
157 | + for (int i = 0; special_keys[i].qtkey != 0; i++) | |
158 | + if (name[0] == special_keys[i].code0 | |
159 | + && name[1] == special_keys[i].code1) | |
160 | 160 | return OK; |
161 | 161 | return FAIL; |
162 | 162 | }//}}} |
@@ -164,20 +164,20 @@ | ||
164 | 164 | /* |
165 | 165 | * custom Frame for drawing ... |
166 | 166 | */ |
167 | -void VimWidget::paintEvent( QPaintEvent *e)//{{{ | |
167 | +void VimWidget::paintEvent(QPaintEvent *e)//{{{ | |
168 | 168 | { |
169 | 169 | QRect r = e->rect(); |
170 | - gui_redraw(r.x(), r.y(), r.width(), r.height() ); | |
170 | + gui_redraw(r.x(), r.y(), r.width(), r.height()); | |
171 | 171 | }//}}} |
172 | 172 | |
173 | 173 | void VimWidget::draw_string(int x, int y, QString s, int len, int flags)//{{{ |
174 | 174 | { |
175 | - gui.current_font->setBold( flags & DRAW_BOLD ); | |
176 | - gui.current_font->setUnderline( flags & DRAW_UNDERL ); | |
175 | + gui.current_font->setBold(flags & DRAW_BOLD); | |
176 | + gui.current_font->setUnderline(flags & DRAW_UNDERL); | |
177 | 177 | gui.current_font->setItalic(flags & DRAW_ITALIC); |
178 | - painter->setBackgroundMode( flags & DRAW_TRANSP ? Qt::TransparentMode : Qt::OpaqueMode); | |
179 | - painter->setFont( *(gui.current_font) ); | |
180 | - painter->drawText( x, y, s, len); | |
178 | + painter->setBackgroundMode(flags & DRAW_TRANSP ? Qt::TransparentMode : Qt::OpaqueMode); | |
179 | + painter->setFont(*(gui.current_font)); | |
180 | + painter->drawText(x, y, s, len); | |
181 | 181 | }//}}} |
182 | 182 | |
183 | 183 | void VimWidget::mousePressEvent(QMouseEvent *event)//{{{ |
@@ -1165,36 +1165,9 @@ | ||
1165 | 1165 | I18N_NOOP("NetBSD configure/compilation fixes") |
1166 | 1166 | ); |
1167 | 1167 | aboutData->setLicenseText( |
1168 | -"KVim as an extension of Vim follows Vim license : \n\ | |
1169 | -Vim is Charityware. You can use and copy it as much as you like, but you are\n\ | |
1170 | -encouraged to make a donation to orphans in Uganda. Please read the file\n\ | |
1171 | -runtime/doc/uganda.txt for details.\n\ | |
1172 | -\n\ | |
1173 | -There are no restrictions on distributing an unmodified copy of Vim. Parts of\n\ | |
1174 | -Vim may also be distributed, but this text must always be included. You are\n\ | |
1175 | -allowed to include executables that you made from the unmodified Vim sources,\n\ | |
1176 | -your own usage examples and Vim scripts.\n\ | |
1177 | -\n\ | |
1178 | -If you distribute a modified version of Vim, you are encouraged to send the\n\ | |
1179 | -maintainer a copy, including the source code. Or make it available to the\n\ | |
1180 | -maintainer through ftp; let him know where it can be found. If the number of\n\ | |
1181 | -changes is small (e.g., a modified Makefile) e-mailing the diffs will do.\n\ | |
1182 | -When the maintainer asks for it (in any way) you must make your changes,\n\ | |
1183 | -including source code, available to him.\n\ | |
1184 | -\n\ | |
1185 | -The maintainer reserves the right to include any changes in the official\n\ | |
1186 | -version of Vim. This is negotiable. You are not allowed to distribute a\n\ | |
1187 | -modified version of Vim when you are not willing to make the source code\n\ | |
1188 | -available to the maintainer.\n\ | |
1189 | -\n\ | |
1190 | -The current maintainer is Bram Moolenaar <Bram@vim.org>. If this changes, it\n\ | |
1191 | -will be announced in appropriate places (most likely www.vim.org and\n\ | |
1192 | -comp.editors). When it is completely impossible to contact the maintainer,\n\ | |
1193 | -the obligation to send him modified source code ceases.\n\ | |
1194 | -\n\ | |
1195 | -It is not allowed to remove these restrictions from the distribution of the\n\ | |
1196 | -Vim sources or parts of it. These restrictions may also be used for previous\n\ | |
1197 | -Vim releases instead of the text that was included with it."); | |
1168 | +"KVim as an extension of Vim follows Vim license.\n\ | |
1169 | +You can read it with \":help license\"\n\ | |
1170 | +Or read the file $VIMRUNTIME/doc/uganda.txt."); | |
1198 | 1171 | |
1199 | 1172 | KAboutApplication *about = new KAboutApplication(aboutData); |
1200 | 1173 | about->show(); |
@@ -743,6 +743,91 @@ | ||
743 | 743 | } |
744 | 744 | } |
745 | 745 | |
746 | +/* | |
747 | + * ":delmarks[!] [marks]" | |
748 | + */ | |
749 | + void | |
750 | +ex_delmarks(eap) | |
751 | + exarg_T *eap; | |
752 | +{ | |
753 | + char_u *p; | |
754 | + int from, to; | |
755 | + int i; | |
756 | + int lower; | |
757 | + int digit; | |
758 | + int n; | |
759 | + | |
760 | + if (*eap->arg == NUL && eap->forceit) | |
761 | + /* clear all marks */ | |
762 | + clrallmarks(curbuf); | |
763 | + else if (eap->forceit) | |
764 | + EMSG(_(e_invarg)); | |
765 | + else if (*eap->arg == NUL) | |
766 | + EMSG(_(e_argreq)); | |
767 | + else | |
768 | + { | |
769 | + /* clear specified marks only */ | |
770 | + for (p = eap->arg; *p != NUL; ++p) | |
771 | + { | |
772 | + lower = ASCII_ISLOWER(*p); | |
773 | + digit = VIM_ISDIGIT(*p); | |
774 | + if (lower || digit || ASCII_ISUPPER(*p)) | |
775 | + { | |
776 | + if (p[1] == '-') | |
777 | + { | |
778 | + /* clear range of marks */ | |
779 | + from = *p; | |
780 | + to = p[2]; | |
781 | + if (!(lower ? ASCII_ISLOWER(p[2]) | |
782 | + : (digit ? VIM_ISDIGIT(p[2]) | |
783 | + : ASCII_ISUPPER(p[2]))) | |
784 | + || to < from) | |
785 | + { | |
786 | + EMSG2(_(e_invarg2), p); | |
787 | + return; | |
788 | + } | |
789 | + p += 2; | |
790 | + } | |
791 | + else | |
792 | + /* clear one lower case mark */ | |
793 | + from = to = *p; | |
794 | + | |
795 | + for (i = from; i <= to; ++i) | |
796 | + { | |
797 | + if (lower) | |
798 | + curbuf->b_namedm[i - 'a'].lnum = 0; | |
799 | + else | |
800 | + { | |
801 | + if (digit) | |
802 | + n = i - '0' + NMARKS; | |
803 | + else | |
804 | + n = i - 'A'; | |
805 | + namedfm[n].fmark.mark.lnum = 0; | |
806 | + vim_free(namedfm[n].fname); | |
807 | + namedfm[n].fname = NULL; | |
808 | + } | |
809 | + } | |
810 | + } | |
811 | + else | |
812 | + switch (*p) | |
813 | + { | |
814 | + case '"': curbuf->b_last_cursor.lnum = 0; break; | |
815 | + case '^': curbuf->b_last_insert.lnum = 0; break; | |
816 | + case '.': curbuf->b_last_change.lnum = 0; break; | |
817 | + case '[': curbuf->b_op_start.lnum = 0; break; | |
818 | + case ']': curbuf->b_op_end.lnum = 0; break; | |
819 | +#ifdef FEAT_VISUAL | |
820 | + case '<': curbuf->b_visual_start.lnum = 0; break; | |
821 | + case '>': curbuf->b_visual_end.lnum = 0; break; | |
822 | +#endif | |
823 | + case ' ': break; | |
824 | + default: EMSG2(_(e_invarg2), p); | |
825 | + return; | |
826 | + } | |
827 | + } | |
828 | + } | |
829 | +} | |
830 | + | |
746 | 831 | #if defined(FEAT_JUMPLIST) || defined(PROTO) |
747 | 832 | /* |
748 | 833 | * print the jumplist |
@@ -8352,7 +8352,8 @@ | ||
8352 | 8352 | buffer = eval_to_string(cmd + 1, &p); |
8353 | 8353 | else |
8354 | 8354 | #endif |
8355 | - buffer = get_cmd_output(cmd, (flags & EW_SILENT) ? SHELL_SILENT : 0); | |
8355 | + buffer = get_cmd_output(cmd, NULL, | |
8356 | + (flags & EW_SILENT) ? SHELL_SILENT : 0); | |
8356 | 8357 | vim_free(cmd); |
8357 | 8358 | if (buffer == NULL) |
8358 | 8359 | return 0; |
@@ -8451,8 +8452,9 @@ | ||
8451 | 8452 | * Returns an allocated string, or NULL for error. |
8452 | 8453 | */ |
8453 | 8454 | char_u * |
8454 | -get_cmd_output(cmd, flags) | |
8455 | +get_cmd_output(cmd, infile, flags) | |
8455 | 8456 | char_u *cmd; |
8457 | + char_u *infile; /* optional input file name */ | |
8456 | 8458 | int flags; /* can be SHELL_SILENT */ |
8457 | 8459 | { |
8458 | 8460 | char_u *tempname; |
@@ -8473,7 +8475,7 @@ | ||
8473 | 8475 | } |
8474 | 8476 | |
8475 | 8477 | /* Add the redirection stuff */ |
8476 | - command = make_filter_cmd(cmd, NULL, tempname); | |
8478 | + command = make_filter_cmd(cmd, infile, tempname); | |
8477 | 8479 | if (command == NULL) |
8478 | 8480 | goto done; |
8479 | 8481 |
@@ -1078,8 +1078,11 @@ | ||
1078 | 1078 | goto normal_end; |
1079 | 1079 | } |
1080 | 1080 | |
1081 | - msg_didout = FALSE; /* don't scroll screen up for normal command */ | |
1082 | - msg_col = 0; | |
1081 | + if (ca.cmdchar != K_IGNORE) | |
1082 | + { | |
1083 | + msg_didout = FALSE; /* don't scroll screen up for normal command */ | |
1084 | + msg_col = 0; | |
1085 | + } | |
1083 | 1086 | |
1084 | 1087 | #ifdef FEAT_VISUAL |
1085 | 1088 | old_pos = curwin->w_cursor; /* remember where cursor was */ |
@@ -2868,6 +2868,21 @@ | ||
2868 | 2868 | options[opt_idx].def_val[VI_DEFAULT] = p_enc; |
2869 | 2869 | options[opt_idx].flags |= P_DEF_ALLOCED; |
2870 | 2870 | |
2871 | +#if defined(MSDOS) || defined(MSWIN) || defined(OS2) || defined(MACOS) \ | |
2872 | + || defined(VMS) | |
2873 | + if (STRCMP(p_enc, "latin1") == 0 | |
2874 | +# ifdef FEAT_MBYTE | |
2875 | + || enc_utf8 | |
2876 | +# endif | |
2877 | + ) | |
2878 | + { | |
2879 | + /* Adjust the default for 'isprint' to match latin1. */ | |
2880 | + set_string_option_direct((char_u *)"isp", -1, | |
2881 | + (char_u *)"@,161-255", OPT_FREE); | |
2882 | + (void)init_chartab(); | |
2883 | + } | |
2884 | +#endif | |
2885 | + | |
2871 | 2886 | # if defined(WIN3264) && !defined(FEAT_GUI) |
2872 | 2887 | /* Win32 console: When GetACP() returns a different value from |
2873 | 2888 | * GetConsoleCP() set 'termencoding'. */ |
@@ -4673,6 +4688,7 @@ | ||
4673 | 4688 | char_u *s, *p; |
4674 | 4689 | int did_chartab = FALSE; |
4675 | 4690 | char_u **gvarp; |
4691 | + int free_oldval = (options[opt_idx].flags & P_ALLOCED); | |
4676 | 4692 | |
4677 | 4693 | /* Get the global option to compare with, otherwise we would have to check |
4678 | 4694 | * two values for all local options. */ |
@@ -5818,8 +5834,10 @@ | ||
5818 | 5834 | #endif |
5819 | 5835 | /* |
5820 | 5836 | * Free string options that are in allocated memory. |
5837 | + * Use "free_oldval", because recursiveness may change the flags under | |
5838 | + * our fingers (esp. init_highlight()). | |
5821 | 5839 | */ |
5822 | - if (options[opt_idx].flags & P_ALLOCED) | |
5840 | + if (free_oldval) | |
5823 | 5841 | free_string_option(oldval); |
5824 | 5842 | if (new_value_alloced) |
5825 | 5843 | options[opt_idx].flags |= P_ALLOCED; |
@@ -654,7 +654,7 @@ | ||
654 | 654 | if (buf == NULL) |
655 | 655 | return -1; |
656 | 656 | sprintf((char *)buf, "which %s", name); |
657 | - p = get_cmd_output(buf, SHELL_SILENT); | |
657 | + p = get_cmd_output(buf, NULL, SHELL_SILENT); | |
658 | 658 | vim_free(buf); |
659 | 659 | if (p == NULL) |
660 | 660 | return -1; |
@@ -3926,10 +3926,10 @@ | ||
3926 | 3926 | else if (s[0] == ESC && len >= 3-1 && s[1] == '|') |
3927 | 3927 | { |
3928 | 3928 | #ifdef MCH_WRITE_DUMP |
3929 | - char_u* old_s = s; | |
3929 | + char_u *old_s = s; | |
3930 | 3930 | #endif |
3931 | - char_u* p; | |
3932 | - int arg1 = 0, arg2 = 0; | |
3931 | + char_u *p; | |
3932 | + int arg1 = 0, arg2 = 0; | |
3933 | 3933 | |
3934 | 3934 | switch (s[2]) |
3935 | 3935 | { |
@@ -5,7 +5,7 @@ | ||
5 | 5 | msgstr "" |
6 | 6 | "Project-Id-Version: Vim 6.2\n" |
7 | 7 | "POT-Creation-Date: 2004-01-30 11:57+0100\n" |
8 | -"PO-Revision-Date: 2004-04-24 21:54+0200\n" | |
8 | +"PO-Revision-Date: 2004-09-07 17:10%z\n" | |
9 | 9 | "Last-Translator: Johan Svedberg <johan@svedberg.pp.se>\n" |
10 | 10 | "Language-Team: Swedish <sv@li.org>\n" |
11 | 11 | "MIME-Version: 1.0\n" |
@@ -1357,7 +1357,7 @@ | ||
1357 | 1357 | |
1358 | 1358 | #: ex_docmd.c:8033 |
1359 | 1359 | msgid "E194: No alternate file name to substitute for '#'" |
1360 | -msgstr "E194: Inget alternativt filnamn att byta ut '#' med" | |
1360 | +msgstr "E194: Inget alternativt filnamn att ersätta '#' med" | |
1361 | 1361 | |
1362 | 1362 | #: ex_docmd.c:8064 |
1363 | 1363 | msgid "E495: no autocommand file name to substitute for \"<afile>\"" |
@@ -1369,11 +1369,11 @@ | ||
1369 | 1369 | |
1370 | 1370 | #: ex_docmd.c:8083 |
1371 | 1371 | msgid "E497: no autocommand match name to substitute for \"<amatch>\"" |
1372 | -msgstr "E497: inget autokommando-träffnamn att byta ut \"<amatch>\" med" | |
1372 | +msgstr "E497: inget autokommando-träffnamn att ersätta \"<amatch>\" med" | |
1373 | 1373 | |
1374 | 1374 | #: ex_docmd.c:8093 |
1375 | 1375 | msgid "E498: no :source file name to substitute for \"<sfile>\"" |
1376 | -msgstr "E498: inget :source-filnamn att byta ut \"<sfile>\" med" | |
1376 | +msgstr "E498: inget :source-filnamn att ersätta \"<sfile>\" med" | |
1377 | 1377 | |
1378 | 1378 | #: ex_docmd.c:8134 |
1379 | 1379 | #, no-c-format |
@@ -3263,7 +3263,7 @@ | ||
3263 | 3263 | |
3264 | 3264 | #: main.c:2533 main.c:2553 |
3265 | 3265 | msgid "-font <font>\t\tUse <font> for normal text (also: -fn)" |
3266 | -msgstr "-font <typsnitt>\t\tAnvänd <typsnitt> för vanlig text (även: -fn)" | |
3266 | +msgstr "-font <typsnitt>\tAnvänd <typsnitt> för vanlig text (även: -fn)" | |
3267 | 3267 | |
3268 | 3268 | #: main.c:2534 |
3269 | 3269 | msgid "-boldfont <font>\tUse <font> for bold text" |
@@ -6314,7 +6314,7 @@ | ||
6314 | 6314 | |
6315 | 6315 | #: globals.h:1240 |
6316 | 6316 | msgid "E33: No previous substitute regular expression" |
6317 | -msgstr "E33: Inget tidigare utbytningsreguljäruttryck" | |
6317 | +msgstr "E33: Inget tidigare reguljärt uttryck för ersättning" | |
6318 | 6318 | |
6319 | 6319 | #: globals.h:1241 |
6320 | 6320 | msgid "E34: No previous command" |
@@ -23,6 +23,8 @@ | ||
23 | 23 | void ex_catch __ARGS((exarg_T *eap)); |
24 | 24 | void ex_finally __ARGS((exarg_T *eap)); |
25 | 25 | void ex_endtry __ARGS((exarg_T *eap)); |
26 | +void enter_cleanup __ARGS((cleanup_T *csp)); | |
27 | +void leave_cleanup __ARGS((cleanup_T *csp)); | |
26 | 28 | int cleanup_conditionals __ARGS((struct condstack *cstack, int searched_cond, int inclusive)); |
27 | 29 | void ex_endfunction __ARGS((exarg_T *eap)); |
28 | 30 | int has_while_cmd __ARGS((char_u *p)); |
@@ -11,6 +11,7 @@ | ||
11 | 11 | void clrallmarks __ARGS((buf_T *buf)); |
12 | 12 | char_u *fm_getname __ARGS((fmark_T *fmark, int lead_len)); |
13 | 13 | void do_marks __ARGS((exarg_T *eap)); |
14 | +void ex_delmarks __ARGS((exarg_T *eap)); | |
14 | 15 | void ex_jumps __ARGS((exarg_T *eap)); |
15 | 16 | void ex_changes __ARGS((exarg_T *eap)); |
16 | 17 | void mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after)); |
@@ -81,7 +81,7 @@ | ||
81 | 81 | int match_suffix __ARGS((char_u *fname)); |
82 | 82 | int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags)); |
83 | 83 | void addfile __ARGS((garray_T *gap, char_u *f, int flags)); |
84 | -char_u *get_cmd_output __ARGS((char_u *cmd, int flags)); | |
84 | +char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags)); | |
85 | 85 | void FreeWild __ARGS((int count, char_u **files)); |
86 | 86 | int goto_im __ARGS((void)); |
87 | 87 | /* vim: set ft=c : */ |
@@ -33,8 +33,8 @@ | ||
33 | 33 | * precedence is structured in regular expressions. Serious changes in |
34 | 34 | * regular-expression syntax might require a total rethink. |
35 | 35 | * |
36 | - * Changes have been made by Tony Andrews, Olaf 'Rhialto' Seibert, Robert Webb | |
37 | - * and Bram Moolenaar. | |
36 | + * Changes have been made by Tony Andrews, Olaf 'Rhialto' Seibert, Robert | |
37 | + * Webb, Ciaran McCreesh and Bram Moolenaar. | |
38 | 38 | * Named character class support added by Walter Briscoe (1998 Jul 01) |
39 | 39 | */ |
40 | 40 |
@@ -376,9 +376,14 @@ | ||
376 | 376 | * \t - Tab (TAB). |
377 | 377 | * \e - Escape (ESC). |
378 | 378 | * \b - Backspace (Ctrl_H). |
379 | + * \d - Character code in decimal, eg \d123 | |
380 | + * \o - Character code in octal, eg \o80 | |
381 | + * \x - Character code in hex, eg \x4a | |
382 | + * \u - Multibyte character code, eg \u20ac | |
383 | + * \U - Long multibyte character code, eg \U12345678 | |
379 | 384 | */ |
380 | 385 | static char_u REGEXP_INRANGE[] = "]^-n\\"; |
381 | -static char_u REGEXP_ABBR[] = "nrteb"; | |
386 | +static char_u REGEXP_ABBR[] = "nrtebdoxuU"; | |
382 | 387 | |
383 | 388 | static int backslash_trans __ARGS((int c)); |
384 | 389 | static int skip_class_name __ARGS((char_u **pp)); |
@@ -681,6 +686,10 @@ | ||
681 | 686 | static int peekchr __ARGS((void)); |
682 | 687 | static void skipchr __ARGS((void)); |
683 | 688 | static void ungetchr __ARGS((void)); |
689 | +static int gethexchrs __ARGS((int maxinputlen)); | |
690 | +static int getoctchrs __ARGS((void)); | |
691 | +static int getdecchrs __ARGS((void)); | |
692 | +static int coll_get_char __ARGS((void)); | |
684 | 693 | static void regcomp_start __ARGS((char_u *expr, int flags)); |
685 | 694 | static char_u *reg __ARGS((int, int *)); |
686 | 695 | static char_u *regbranch __ARGS((int *flagp)); |
@@ -1722,6 +1731,42 @@ | ||
1722 | 1731 | break; |
1723 | 1732 | } |
1724 | 1733 | |
1734 | + case 'd': /* %d123 decimal */ | |
1735 | + case 'o': /* %o123 octal */ | |
1736 | + case 'x': /* %xab hex 2 */ | |
1737 | + case 'u': /* %uabcd hex 4 */ | |
1738 | + case 'U': /* %U1234abcd hex 8 */ | |
1739 | + { | |
1740 | + int i; | |
1741 | + | |
1742 | + switch (c) | |
1743 | + { | |
1744 | + case 'd': i = getdecchrs(); break; | |
1745 | + case 'o': i = getoctchrs(); break; | |
1746 | + case 'x': i = gethexchrs(2); break; | |
1747 | + case 'u': i = gethexchrs(4); break; | |
1748 | + case 'U': i = gethexchrs(8); break; | |
1749 | + default: i = -1; break; | |
1750 | + } | |
1751 | + | |
1752 | + if (i < 0) | |
1753 | + EMSG_M_RET_NULL( | |
1754 | + _("E678: Invalid character after %s%%[dxouU]"), | |
1755 | + reg_magic == MAGIC_ALL); | |
1756 | + ret = regnode(EXACTLY); | |
1757 | + if (i == 0) | |
1758 | + regc(0x0a); | |
1759 | + else | |
1760 | +#ifdef FEAT_MBYTE | |
1761 | + regmbc(i); | |
1762 | +#else | |
1763 | + regc(i); | |
1764 | +#endif | |
1765 | + regc(NUL); | |
1766 | + *flagp |= HASWIDTH; | |
1767 | + break; | |
1768 | + } | |
1769 | + | |
1725 | 1770 | default: |
1726 | 1771 | if (VIM_ISDIGIT(c) || c == '<' || c == '>') |
1727 | 1772 | { |
@@ -1816,6 +1861,11 @@ | ||
1816 | 1861 | else |
1817 | 1862 | #endif |
1818 | 1863 | endc = *regparse++; |
1864 | + | |
1865 | + /* Handle \o40, \x20 and \u20AC style sequences */ | |
1866 | + if (endc == '\\' && !cpo_lit) | |
1867 | + endc = coll_get_char(); | |
1868 | + | |
1819 | 1869 | if (startc > endc) |
1820 | 1870 | EMSG_RET_NULL(_(e_invrange)); |
1821 | 1871 | #ifdef FEAT_MBYTE |
@@ -1875,6 +1925,22 @@ | ||
1875 | 1925 | regparse++; |
1876 | 1926 | startc = -1; |
1877 | 1927 | } |
1928 | + else if (*regparse == 'd' | |
1929 | + || *regparse == 'o' | |
1930 | + || *regparse == 'x' | |
1931 | + || *regparse == 'u' | |
1932 | + || *regparse == 'U') | |
1933 | + { | |
1934 | + startc = coll_get_char(); | |
1935 | + if (startc == 0) | |
1936 | + regc(0x0a); | |
1937 | + else | |
1938 | +#ifdef FEAT_MBYTE | |
1939 | + regmbc(startc); | |
1940 | +#else | |
1941 | + regc(startc); | |
1942 | +#endif | |
1943 | + } | |
1878 | 1944 | else |
1879 | 1945 | { |
1880 | 1946 | startc = backslash_trans(*regparse++); |
@@ -2517,6 +2583,120 @@ | ||
2517 | 2583 | } |
2518 | 2584 | |
2519 | 2585 | /* |
2586 | + * get and return the value of the hex string immediately after the current | |
2587 | + * position. Return -1 for invalid, or 0-255 for valid. Position is updated: | |
2588 | + * blahblah\%x20asdf | |
2589 | + * before-^ ^-after | |
2590 | + * The parameter controls the maximum number of input characters. This will be | |
2591 | + * 2 when reading a \%x20 sequence and 4 when reading a \%u20AC sequence. | |
2592 | + */ | |
2593 | + static int | |
2594 | +gethexchrs(maxinputlen) | |
2595 | + int maxinputlen; | |
2596 | +{ | |
2597 | + int nr = 0; | |
2598 | + int c; | |
2599 | + int i; | |
2600 | + | |
2601 | + for (i = 0; i < maxinputlen; ++i) | |
2602 | + { | |
2603 | + c = regparse[0]; | |
2604 | + if (!vim_isxdigit(c)) | |
2605 | + break; | |
2606 | + nr <<= 4; | |
2607 | + nr |= hex2nr(c); | |
2608 | + ++regparse; | |
2609 | + } | |
2610 | + | |
2611 | + if (i == 0) | |
2612 | + return -1; | |
2613 | + return nr; | |
2614 | +} | |
2615 | + | |
2616 | +/* | |
2617 | + * get and return the value of the decimal string immediately after the | |
2618 | + * current position. Return -1 for invalid. Consumes all digits. | |
2619 | + */ | |
2620 | + static int | |
2621 | +getdecchrs() | |
2622 | +{ | |
2623 | + int nr = 0; | |
2624 | + int c; | |
2625 | + int i; | |
2626 | + | |
2627 | + for (i = 0; ; ++i) | |
2628 | + { | |
2629 | + c = regparse[0]; | |
2630 | + if (c < '0' || c > '9') | |
2631 | + break; | |
2632 | + nr *= 10; | |
2633 | + nr += c - '0'; | |
2634 | + ++regparse; | |
2635 | + } | |
2636 | + | |
2637 | + if (i == 0) | |
2638 | + return -1; | |
2639 | + return nr; | |
2640 | +} | |
2641 | + | |
2642 | +/* | |
2643 | + * get and return the value of the octal string immediately after the current | |
2644 | + * position. Return -1 for invalid, or 0-255 for valid. Smart enough to handle | |
2645 | + * numbers > 377 correctly (for example, 400 is treated as 40) and doesn't | |
2646 | + * treat 8 or 9 as recognised characters. Position is updated: | |
2647 | + * blahblah\%o210asdf | |
2648 | + * before-^ ^-after | |
2649 | + */ | |
2650 | + static int | |
2651 | +getoctchrs() | |
2652 | +{ | |
2653 | + int nr = 0; | |
2654 | + int c; | |
2655 | + int i; | |
2656 | + | |
2657 | + for (i = 0; i < 3 && nr < 040; ++i) | |
2658 | + { | |
2659 | + c = regparse[0]; | |
2660 | + if (c < '0' || c > '7') | |
2661 | + break; | |
2662 | + nr <<= 3; | |
2663 | + nr |= hex2nr(c); | |
2664 | + ++regparse; | |
2665 | + } | |
2666 | + | |
2667 | + if (i == 0) | |
2668 | + return -1; | |
2669 | + return nr; | |
2670 | +} | |
2671 | + | |
2672 | +/* | |
2673 | + * Get a number after a backslash that is inside []. | |
2674 | + * When nothing is recognized return a backslash. | |
2675 | + */ | |
2676 | + static int | |
2677 | +coll_get_char() | |
2678 | +{ | |
2679 | + int nr = -1; | |
2680 | + | |
2681 | + switch (*regparse++) | |
2682 | + { | |
2683 | + case 'd': nr = getdecchrs(); break; | |
2684 | + case 'o': nr = getoctchrs(); break; | |
2685 | + case 'x': nr = gethexchrs(2); break; | |
2686 | + case 'u': nr = gethexchrs(4); break; | |
2687 | + case 'U': nr = gethexchrs(8); break; | |
2688 | + } | |
2689 | + if (nr < 0) | |
2690 | + { | |
2691 | + /* If getting the number fails be backwards compatible: the character | |
2692 | + * is a backslash. */ | |
2693 | + --regparse; | |
2694 | + nr = '\\'; | |
2695 | + } | |
2696 | + return nr; | |
2697 | +} | |
2698 | + | |
2699 | +/* | |
2520 | 2700 | * read_limits - Read two integers to be taken as a minimum and maximum. |
2521 | 2701 | * If the first character is '-', then the range is reversed. |
2522 | 2702 | * Should end with 'end'. If minval is missing, zero is default, if maxval is |
@@ -670,6 +670,17 @@ | ||
670 | 670 | #define ET_ERROR 1 /* error exception */ |
671 | 671 | #define ET_INTERRUPT 2 /* interrupt exception triggered by Ctrl-C */ |
672 | 672 | |
673 | +/* | |
674 | + * Structure to save the error/interrupt/exception state between calls to | |
675 | + * enter_cleanup() and leave_cleanup(). Must be allocated as an automatic | |
676 | + * variable by the (common) caller of these functions. | |
677 | + */ | |
678 | +typedef struct cleanup_stuff cleanup_T; | |
679 | +struct cleanup_stuff | |
680 | +{ | |
681 | + int pending; /* error/interrupt/exception state */ | |
682 | + except_T *exception; /* exception value */ | |
683 | +}; | |
673 | 684 | |
674 | 685 | #ifdef FEAT_SYN_HL |
675 | 686 | /* struct passed to in_id_list() */ |
@@ -6016,7 +6016,18 @@ | ||
6016 | 6016 | * If syntax highlighting is enabled load the highlighting for it. |
6017 | 6017 | */ |
6018 | 6018 | if (get_var_value((char_u *)"g:syntax_on") != NULL) |
6019 | - (void)cmd_runtime((char_u *)"syntax/syncolor.vim", TRUE); | |
6019 | + { | |
6020 | + static int recursive = 0; | |
6021 | + | |
6022 | + if (recursive >= 5) | |
6023 | + EMSG(_("E679: recursive loop loading syncolor.vim")); | |
6024 | + else | |
6025 | + { | |
6026 | + ++recursive; | |
6027 | + (void)cmd_runtime((char_u *)"syntax/syncolor.vim", TRUE); | |
6028 | + --recursive; | |
6029 | + } | |
6030 | + } | |
6020 | 6031 | #endif |
6021 | 6032 | } |
6022 | 6033 |
@@ -0,0 +1,92 @@ | ||
1 | +Results of test49.vim: | |
2 | +*** Test 1: OK (34695) | |
3 | +*** Test 2: OK (34695) | |
4 | +*** Test 3: OK (1384648195) | |
5 | +*** Test 4: OK (32883) | |
6 | +*** Test 5: OK (32883) | |
7 | +*** Test 6: OK (603978947) | |
8 | +*** Test 7: OK (90563) | |
9 | +*** Test 8: OK (562493431) | |
10 | +*** Test 9: OK (363) | |
11 | +*** Test 10: OK (559615) | |
12 | +*** Test 11: OK (2049) | |
13 | +*** Test 12: OK (352256) | |
14 | +*** Test 13: OK (145) | |
15 | +*** Test 14: OK (42413) | |
16 | +*** Test 15: OK (42413) | |
17 | +*** Test 16: OK (8722) | |
18 | +*** Test 17: OK (285127993) | |
19 | +*** Test 18: OK (67224583) | |
20 | +*** Test 19: OK (69275973) | |
21 | +*** Test 20: OK (1874575085) | |
22 | +*** Test 21: OK (147932225) | |
23 | +*** Test 22: OK (4161) | |
24 | +*** Test 23: OK (49) | |
25 | +*** Test 24: OK (41) | |
26 | +*** Test 25: OK (260177811) | |
27 | +*** Test 26: OK (1681500476) | |
28 | +*** Test 27: OK (1996459) | |
29 | +*** Test 28: OK (1996459) | |
30 | +*** Test 29: OK (170428555) | |
31 | +*** Test 30: OK (190905173) | |
32 | +*** Test 31: OK (190905173) | |
33 | +*** Test 32: OK (354833067) | |
34 | +--- Test 33: sum = 178275600 (ok) | |
35 | +*** Test 33: OK (1216907538) | |
36 | +*** Test 34: OK (2146584868) | |
37 | +*** Test 35: OK (2146584868) | |
38 | +*** Test 36: OK (1071644672) | |
39 | +*** Test 37: OK (1071644672) | |
40 | +*** Test 38: OK (357908480) | |
41 | +*** Test 39: OK (357908480) | |
42 | +*** Test 40: OK (357908480) | |
43 | +*** Test 41: OK (3076095) | |
44 | +*** Test 42: OK (1505155949) | |
45 | +*** Test 43: OK (1157763329) | |
46 | +*** Test 44: OK (1031761407) | |
47 | +*** Test 45: OK (1157763329) | |
48 | +*** Test 46: OK (739407) | |
49 | +*** Test 47: OK (371213935) | |
50 | +*** Test 48: OK (756255461) | |
51 | +*** Test 49: OK (179000669) | |
52 | +*** Test 50: OK (363550045) | |
53 | +*** Test 51: OK (40744667) | |
54 | +*** Test 52: OK (1247112011) | |
55 | +*** Test 53: OK (131071) | |
56 | +*** Test 54: OK (2047) | |
57 | +*** Test 55: OK (1023) | |
58 | +*** Test 56: OK (511) | |
59 | +*** Test 57: OK (2147450880) | |
60 | +*** Test 58: OK (624945) | |
61 | +*** Test 59: OK (2038431743) | |
62 | +*** Test 60: OK (311511339) | |
63 | +*** Test 61: OK (374889517) | |
64 | +*** Test 62: OK (286331153) | |
65 | +*** Test 63: OK (236978127) | |
66 | +*** Test 64: OK (1499645335) | |
67 | +*** Test 65: OK (70187) | |
68 | +*** Test 66: OK (5464) | |
69 | +*** Test 67: OK (212514423) | |
70 | +*** Test 68: OK (212514423) | |
71 | +*** Test 69: OK (8995471) | |
72 | +*** Test 70: OK (69544277) | |
73 | +*** Test 71: OK (34886997) | |
74 | +*** Test 72: OK (1789569365) | |
75 | +*** Test 73: OK (9032615) | |
76 | +*** Test 74: OK (224907669) | |
77 | +*** Test 75: OK (2000403408) | |
78 | +*** Test 76: OK (1610087935) | |
79 | +*** Test 77: OK (1388671) | |
80 | +*** Test 78: OK (134217728) | |
81 | +*** Test 79: OK (70288929) | |
82 | +*** Test 80: OK (17895765) | |
83 | +*** Test 81: OK (387) | |
84 | +*** Test 82: OK (8454401) | |
85 | +*** Test 83: OK (2835) | |
86 | +*** Test 84: OK (934782101) | |
87 | +*** Test 85: OK (198689) | |
88 | +--- Test 86: All tests were run with throwing exceptions on error. | |
89 | + The $VIMNOERRTHROW control is not configured. | |
90 | +--- Test 86: All tests were run with throwing exceptions on interrupt. | |
91 | + The $VIMNOINTTHROW control is not configured. | |
92 | +*** Test 86: OK (50443995) |
@@ -5,3 +5,15 @@ | ||
5 | 5 | test text test text |
6 | 6 | test text test text |
7 | 7 | test text test text |
8 | +test text test text x61 | |
9 | +test text test text x60-x64 | |
10 | +test text test text x78 5 | |
11 | +test text test text o143 | |
12 | +test text test text o140-o144 | |
13 | +test text test text o41 7 | |
14 | +test text test text \%x42 | |
15 | +test text test text \%o103 | |
16 | +test text test text [\x00] | |
17 | +test text test text [\x00-\x10] | |
18 | +test text test text [\x-z] | |
19 | +test text test text [\u-z] |
@@ -21,6 +21,12 @@ | ||
21 | 21 | /ม๠|
22 | 22 | x:" find word by change of word class |
23 | 23 | /ã¡\<ã«ã¨\>㯠|
24 | +x:" Test \%u, [\u] and friends | |
25 | +/\%u20ac | |
26 | +x/[\u4f7f\u5929]\+ | |
27 | +x/\%U12345678 | |
28 | +x/[\U1234abcd\u1234\uabcd] | |
29 | +x/\%d21879b | |
24 | 30 | x:?^1?,$w! test.out |
25 | 31 | :e! test.out |
26 | 32 | G:put =matchstr(\"××××\", \".\", 0, 2) " × |
@@ -42,3 +48,8 @@ | ||
42 | 48 | 9 หมà¹x à¸à¸¡x |
43 | 49 | a à¸à¸¡x หมà¹x |
44 | 50 | b ã¡ã«ã¨ã¯ |
51 | +c x ¬â¬x | |
52 | +d 天使x | |
53 | +e ü ¸y | |
54 | +f ü¯z | |
55 | +g aå·bb |
@@ -9,6 +9,11 @@ | ||
9 | 9 | 9 หม่x อx |
10 | 10 | a อมx หx |
11 | 11 | b カヨは |
12 | +c x ¬x | |
13 | +d 使x | |
14 | +e y | |
15 | +f z | |
16 | +g abb | |
12 | 17 | ב |
13 | 18 | בג |
14 | 19 | א |
@@ -753,7 +753,6 @@ | ||
753 | 753 | #define BLN_CURBUF 1 /* May re-use curbuf for new buffer */ |
754 | 754 | #define BLN_LISTED 2 /* Put new buffer in buffer list */ |
755 | 755 | #define BLN_DUMMY 4 /* Allocating dummy buffer */ |
756 | -#define BLN_FORCE 8 /* Don't abort on error */ | |
757 | 756 | |
758 | 757 | /* Values for in_cinkeys() */ |
759 | 758 | #define KEY_OPEN_FORW 0x101 |