From 9a65a8c270f3f101b59b63f5252c7e96549bed2d Mon Sep 17 00:00:00 2001 From: rhysd Date: Tue, 19 Nov 2024 13:46:17 +0100 Subject: [PATCH 001/244] CI: join codecov array flags, instead of accessing it directly closes: #16082 Signed-off-by: rhysd Signed-off-by: Christian Brabandt --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f285ff2da..f67f97cc90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -297,7 +297,7 @@ jobs: if: matrix.coverage uses: codecov/codecov-action@v5 with: - flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ matrix.extra }} + flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ join(matrix.extra, '-') }} token: ${{ secrets.CODECOV_TOKEN }} - name: ASan logs From fdac54d7bbf6d68a8bf741e734b86d0f1998ac86 Mon Sep 17 00:00:00 2001 From: Kirill Morozov Date: Tue, 19 Nov 2024 20:36:22 +0100 Subject: [PATCH 002/244] patch 9.1.0874: filetype: karel files are not detected Problem: filetype: karel files are not detected Solution: detect '*.kl' files as karel filetype, include syntax and filetype plugin (Kirill Morozov) closes: #16075 Co-authored-by: KnoP-01 Signed-off-by: Kirill Morozov Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 1 + runtime/filetype.vim | 8 ++- runtime/ftplugin/karel.vim | 16 +++++ runtime/syntax/karel.vim | 112 ++++++++++++++++++++++++++++++++++ src/testdir/test_filetype.vim | 1 + src/version.c | 2 + 6 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 runtime/ftplugin/karel.vim create mode 100644 runtime/syntax/karel.vim diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 68ef76e442..bae6c600c0 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -492,6 +492,7 @@ runtime/syntax/json.vim @vito-c runtime/syntax/jsonc.vim @izhakjakov runtime/syntax/julia.vim @carlobaldassi runtime/syntax/jq.vim @vito-c +runtime/syntax/karel.vim @kirillmorozov runtime/syntax/kconfig.vim @chrisbra runtime/syntax/kivy.vim @prophittcorey runtime/syntax/kotlin.vim @udalov diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 02313fea7f..8ab97ebd8d 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: The Vim Project -" Last Change: 2024 May 31 +" Last Change: 2024 Nov 19 " Former Maintainer: Bram Moolenaar " Listen very carefully, I will say this only once @@ -1262,6 +1262,12 @@ au BufNewFile,BufRead *.jl setf julia " Just au BufNewFile,BufRead [jJ]ustfile,.justfile,*.just setf just +" KAREL +au BufNewFile,BufRead *.kl setf karel +if has("fname_case") + au BufNewFile,BufRead *.KL setf karel +endif + " KDL au BufNewFile,BufRead *.kdl setf kdl diff --git a/runtime/ftplugin/karel.vim b/runtime/ftplugin/karel.vim new file mode 100644 index 0000000000..8ccc2b32ce --- /dev/null +++ b/runtime/ftplugin/karel.vim @@ -0,0 +1,16 @@ +" Vim filetype plugin file +" Language: KAREL +" Last Change: 2024-11-18 +" Maintainer: Kirill Morozov +" Credits: Patrick Meiser-Knosowski for the initial implementation. + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=:-- +setlocal commentstring=--\ %s +setlocal suffixesadd+=.kl,.KL + +let b:undo_ftplugin = "setlocal com< cms< sua<" diff --git a/runtime/syntax/karel.vim b/runtime/syntax/karel.vim new file mode 100644 index 0000000000..85c78529e6 --- /dev/null +++ b/runtime/syntax/karel.vim @@ -0,0 +1,112 @@ +" Vim syntax file +" Language: KAREL +" Last Change: 2024-11-17 +" Maintainer: Kirill Morozov +" Credits: Jay Strybis for the initial implementation and Patrick Knosowski +" for a couple of fixes. + +if exists("b:current_syntax") + finish +endif + +" KAREL is case-insensitive +syntax case ignore + +" Identifiers +syn match karelIdentifier /[a-zA-Z0-9_]\+/ +hi def link karelIdentifier Identifier + +" Constants +syn keyword karelConstant CR +syn region karelString start="'" end="'" +syn match karelReal /\d\+\.\d\+/ +syn match karelInteger /\d\+/ +syn keyword karelBoolean true false +hi def link karelConstant Constant +hi def link karelString String +hi def link karelInteger Number +hi def link karelReal Float +hi def link karelBoolean Boolean + +" Directives +syn match karelDirective /%[a-zA-Z]\+/ +hi def link karelDirective PreProc + +" Operators +syn keyword karelOperator AND OR NOT DIV MOD +syn match karelOperator /[\+\-\*\/\<\=\>\:\#\@]/ +syn match karelOperator /<=/ +syn match karelOperator />=/ +syn match karelOperator /<>/ +syn match karelOperator />=> jsp: ['file.jsp'], julia: ['file.jl'], just: ['justfile', 'Justfile', '.justfile', 'config.just'], + karel: ['file.kl', 'file.KL'], kconfig: ['Kconfig', 'Kconfig.debug', 'Kconfig.file', 'Config.in', 'Config.in.host'], kdl: ['file.kdl'], kivy: ['file.kv'], diff --git a/src/version.c b/src/version.c index 51276a9fb1..99a145a94d 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 874, /**/ 873, /**/ From a13bd294ab2d9ab38634c9ec51fa76205af6eb62 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Tue, 19 Nov 2024 20:43:52 +0100 Subject: [PATCH 003/244] patch 9.1.0875: filetype: hyprlang detection can be improved Problem: filetype: hyprlang detection can be improved Solution: detect '/hypr/*.conf' files as hyprlang filetype, include basic syntax highlighting (Luca Saccarola) fixes: #15875 closes: #16064 Signed-off-by: Luca Saccarola Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 4 +-- runtime/syntax/hyprlang.vim | 58 +++++++++++++++++++++++++++++++++++ src/testdir/test_filetype.vim | 2 +- src/version.c | 2 ++ 4 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 runtime/syntax/hyprlang.vim diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 8ab97ebd8d..f53e449964 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1099,8 +1099,8 @@ au BufRead,BufNewFile *.hurl setf hurl " Hyper Builder au BufNewFile,BufRead *.hb setf hb -" Hyprlang -au BufNewFile,BufRead hypr\(land\|paper\|idle\|lock\).conf setf hyprlang +" Hyprland Configuration language +au BufNewFile,BufRead */hypr/*.conf,hypr\(land\|paper\|idle\|lock\).conf setf hyprlang " Httest au BufNewFile,BufRead *.htt,*.htb setf httest diff --git a/runtime/syntax/hyprlang.vim b/runtime/syntax/hyprlang.vim new file mode 100644 index 0000000000..f36c58c646 --- /dev/null +++ b/runtime/syntax/hyprlang.vim @@ -0,0 +1,58 @@ +" Vim syntax file +" Language: hyprlang +" Maintainer: Luca Saccarola +" Last Change: 2024 nov 15 + +if exists("b:current_syntax") + finish +endif +let b:current_syntax = "hyprlang" + +syn case ignore + +syn match hyprCommand '^\s*\zs\S\+\ze\s*=' contains=hyprVariable +syn match hyprValue '=\s*\zs.\+\ze$' contains=hyprNumber,hyprFloat,hyprBoolean,hyprString,hyprColor,hyprModifier,hyprVariable,hyprComment + +syn match hyprVariable '\$\w\+' contained + +" Category +syn region hyprCategory matchgroup=hyprCategoryD start='^\s*\k\+\s*{' end='^\s*}' contains=hyprCommand,hyprValue,hyprComment,hyprCategory,hyprCategoryD + +" Variables Types +syn match hyprNumber '\%[-+]\<\d\+\>\%[%]' contained +syn match hyprFloat '\%[-+]\<\d\+\.\d\+\>\%[%]' contained +syn match hyprString '["\'].*["\']' contained +syn match hyprColor 'rgb(\(\w\|\d\)\{6})' contained +syn match hyprColor 'rgba(\(\w\|\d\)\{8})' contained +syn match hyprColor '0x\(\w\|\d\)\{8}' contained +syn keyword hyprBoolean true false yes no on off contained + +" Super Shift Alt Ctrl Control +syn keyword hyprModifier contained + \ super supershift superalt superctrl supercontrol + \ super_shift super_alt super_ctrl super_control + \ shift shiftsuper shiftalt shiftctrl shiftcontrol + \ shift_super shift_alt shift_ctrl shift_control + \ alt altsuper altshift altctrl altcontrol + \ alt_super alt_shift alt_ctrl alt_control + \ ctrl ctrlsuper ctrlshift ctrlalt ctrlcontrol + \ ctrl_super ctrl_shift ctrl_alt ctrl_control + \ control controlsuper controlshift controlalt controlctrl + \ control_super control_shift control_alt control_ctrl + +" Comments +syn match hyprComment '#.*$' + +" Link to default groups +hi def link hyprVariable Identifier +hi def link hyprCategoryD Special +hi def link hyprComment Comment +hi def link hyprNumber Constant +hi def link hyprModifier Constant +hi def link hyprFloat hyprNumber +hi def link hyprBoolean Boolean +hi def link hyprString String +hi def link hyprColor Structure +hi def link hyprCommand Keyword + +" vim: ts=8 sts=2 sw=2 et diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 1cd71764f8..eab9d1e28d 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -354,7 +354,7 @@ def s:GetFilenameChecks(): dict> htmlm4: ['file.html.m4'], httest: ['file.htt', 'file.htb'], hurl: ['file.hurl'], - hyprlang: ['hyprlock.conf', 'hyprland.conf', 'hypridle.conf', 'hyprpaper.conf'], + hyprlang: ['hyprlock.conf', 'hyprland.conf', 'hypridle.conf', 'hyprpaper.conf', '/hypr/foo.conf'], i3config: ['/home/user/.i3/config', '/home/user/.config/i3/config', '/etc/i3/config', '/etc/xdg/i3/config'], ibasic: ['file.iba', 'file.ibi'], icemenu: ['/.icewm/menu', 'any/.icewm/menu'], diff --git a/src/version.c b/src/version.c index 99a145a94d..ed841229f8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 875, /**/ 874, /**/ From e2c27ca8eff7cc8ec852b531d5a7f328a343a761 Mon Sep 17 00:00:00 2001 From: "Wu, Zhenyu" Date: Tue, 19 Nov 2024 20:55:25 +0100 Subject: [PATCH 004/244] patch 9.1.0876: filetype: openCL files are not recognized Problem: filetype: openCL files are not recognized Solution: detect '*.cl' files as opencl or lisp filetype, include a opencl syntax and filetype plugin (Wu, Zhenyu) closes: #15825 Signed-off-by: Wu, Zhenyu Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 2 ++ runtime/autoload/dist/ft.vim | 8 ++++++++ runtime/filetype.vim | 9 ++++++--- runtime/ftplugin/opencl.vim | 12 ++++++++++++ runtime/syntax/opencl.vim | 13 +++++++++++++ src/testdir/test_filetype.vim | 18 +++++++++++++++++- src/version.c | 2 ++ 7 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 runtime/ftplugin/opencl.vim create mode 100644 runtime/syntax/opencl.vim diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index bae6c600c0..b899db3bd3 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -225,6 +225,7 @@ runtime/ftplugin/nsis.vim @k-takata runtime/ftplugin/nu.vim @mrcjkb runtime/ftplugin/octave.vim @dkearns runtime/ftplugin/ondir.vim @jparise +runtime/ftplugin/opencl.vim @Freed-Wu runtime/ftplugin/openvpn.vim @ObserverOfTime runtime/ftplugin/pascal.vim @dkearns runtime/ftplugin/pbtxt.vim @lakshayg @@ -526,6 +527,7 @@ runtime/syntax/nix.vim @equill runtime/syntax/nroff.vim @jmarshall runtime/syntax/nsis.vim @k-takata runtime/syntax/ondir.vim @jparise +runtime/syntax/opencl.vim @Freed-Wu runtime/syntax/openvpn.vim @ObserverOfTime runtime/syntax/pacmanlog.vim @rpigott runtime/syntax/pascal.vim @dkearns diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 214cf6e3ec..0936a85ede 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -144,6 +144,14 @@ export def FTcfg() endif enddef +export def FTcl() + if join(getline(1, 4), '') =~ '/\*' + setf opencl + else + setf lisp + endif +enddef + export def FTcls() if exists("g:filetype_cls") exe "setf " .. g:filetype_cls diff --git a/runtime/filetype.vim b/runtime/filetype.vim index f53e449964..3f93bebb75 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1365,14 +1365,17 @@ au BufNewFile,BufRead lilo.conf setf lilo " Lilypond au BufNewFile,BufRead *.ly,*.ily setf lilypond -" Lisp (*.el = ELisp, *.cl = Common Lisp) +" Lisp (*.el = ELisp) " *.jl was removed, it's also used for Julia, better skip than guess wrong. if has("fname_case") - au BufNewFile,BufRead *.lsp,*.lisp,*.asd,*.el,*.cl,*.L,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf lisp + au BufNewFile,BufRead *.lsp,*.lisp,*.asd,*.el,*.L,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf lisp else - au BufNewFile,BufRead *.lsp,*.lisp,*.asd,*.el,*.cl,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf lisp + au BufNewFile,BufRead *.lsp,*.lisp,*.asd,*.el,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf lisp endif +" *.cl = Common Lisp or OpenCL +au BufNewFile,BufRead *.cl call dist#ft#FTcl() + " SBCL implementation of Common Lisp au BufNewFile,BufRead sbclrc,.sbclrc setf lisp diff --git a/runtime/ftplugin/opencl.vim b/runtime/ftplugin/opencl.vim new file mode 100644 index 0000000000..e8570fbe95 --- /dev/null +++ b/runtime/ftplugin/opencl.vim @@ -0,0 +1,12 @@ +" Vim filetype plugin file +" Language: OpenCL +" Maintainer: Wu, Zhenyu +" Last Change: 2024 Nov 19 + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// +setlocal commentstring=/*\ %s\ */ define& include& + +let b:undo_ftplugin = "setl commentstring< comments<" diff --git a/runtime/syntax/opencl.vim b/runtime/syntax/opencl.vim new file mode 100644 index 0000000000..c237aa30f9 --- /dev/null +++ b/runtime/syntax/opencl.vim @@ -0,0 +1,13 @@ +" Vim syntax file +" Language: OpenCL +" Last Change: 2024 Nov 19 +" Maintainer: Wu, Zhenyu + +if exists("b:current_syntax") + finish +endif + +" TODO: support openCL specific keywords +runtime! syntax/c.vim + +let current_syntax = "opencl" diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index eab9d1e28d..17d6a44d7c 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -425,7 +425,7 @@ def s:GetFilenameChecks(): dict> limits: ['/etc/limits', '/etc/anylimits.conf', '/etc/anylimits.d/file.conf', '/etc/limits.conf', '/etc/limits.d/file.conf', '/etc/some-limits.conf', '/etc/some-limits.d/file.conf', 'any/etc/limits', 'any/etc/limits.conf', 'any/etc/limits.d/file.conf', 'any/etc/some-limits.conf', 'any/etc/some-limits.d/file.conf'], liquidsoap: ['file.liq'], liquid: ['file.liquid'], - lisp: ['file.lsp', 'file.lisp', 'file.asd', 'file.el', 'file.cl', '.emacs', '.sawfishrc', 'sbclrc', '.sbclrc', 'file.stsg', 'any/local/share/supertux2/config'], + lisp: ['file.lsp', 'file.lisp', 'file.asd', 'file.el', '.emacs', '.sawfishrc', 'sbclrc', '.sbclrc', 'file.stsg', 'any/local/share/supertux2/config'], lite: ['file.lite', 'file.lt'], litestep: ['/LiteStep/any/file.rc', 'any/LiteStep/any/file.rc'], logcheck: ['/etc/logcheck/file.d-some/file', '/etc/logcheck/file.d/file', 'any/etc/logcheck/file.d-some/file', 'any/etc/logcheck/file.d/file'], @@ -1198,6 +1198,22 @@ func Test_cfg_file() filetype off endfunc +func Test_cl_file() + filetype on + + call writefile(['/*', ' * Xfile.cl', ' */', 'int f() {}'], 'Xfile.cl') + split Xfile.cl + call assert_equal('opencl', &filetype) + bwipe! + + call writefile(['()'], 'Xfile.cl') + split Xfile.cl + call assert_equal('lisp', &filetype) + bwipe! + + filetype off +endfunc + func Test_d_file() filetype on diff --git a/src/version.c b/src/version.c index ed841229f8..99fbbe8345 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 876, /**/ 875, /**/ From b5c1557323e4e3377c034f1a04fad9027a5bf59e Mon Sep 17 00:00:00 2001 From: Ubaldo Tiberi Date: Tue, 19 Nov 2024 21:10:24 +0100 Subject: [PATCH 005/244] patch 9.1.0877: tests: missing test for termdebug + decimal signs Problem: tests: missing test for termdebug + decimal signs Solution: Add a termdebug test (Ubaldo Tiberi) closes: #16081 Signed-off-by: Ubaldo Tiberi Signed-off-by: Christian Brabandt --- src/testdir/test_termdebug.vim | 56 ++++++++++++++++++++++++++++++++++ src/version.c | 2 ++ 2 files changed, 58 insertions(+) diff --git a/src/testdir/test_termdebug.vim b/src/testdir/test_termdebug.vim index 30176cb75b..17e1d897a3 100644 --- a/src/testdir/test_termdebug.vim +++ b/src/testdir/test_termdebug.vim @@ -179,6 +179,62 @@ func Test_termdebug_basic() %bw! endfunc +func Test_termdebug_decimal_breakpoints() + let bin_name = 'XTD_decimal' + let src_name = bin_name .. '.c' + call s:generate_files(bin_name) + + exe "edit " .. src_name + + let g:termdebug_config = {} + let g:termdebug_config['sign_decimal'] = 1 + + exe "Termdebug " .. bin_name + call WaitForAssert({-> assert_true(get(g:, "termdebug_is_running", v:false))}) + call WaitForAssert({-> assert_equal(3, winnr('$'))}) + let gdb_buf = winbufnr(1) + wincmd b + Break 9 + call term_wait(gdb_buf) + redraw! + + let i = 2 + while i <= 258 + Break + call term_wait(gdb_buf) + if i == 2 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint2.0')[0].text, '02')}) + endif + if i == 10 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint10.0')[0].text, '10')}) + endif + if i == 168 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint168.0')[0].text, '9+')}) + endif + if i == 255 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint255.0')[0].text, '9+')}) + endif + if i == 256 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint256.0')[0].text, '9+')}) + endif + if i == 258 + call WaitForAssert({-> assert_equal(sign_getdefined('debugBreakpoint258.0')[0].text, '9+')}) + endif + let i += 1 + endwhile + + wincmd t + quit! + redraw! + call WaitForAssert({-> assert_equal(1, winnr('$'))}) + call assert_equal([], sign_getplaced('', #{group: 'TermDebug'})[0].signs) + + call s:cleanup_files(bin_name) + %bw! + + unlet g:termdebug_config +endfunc + func Test_termdebug_tbreak() let g:test_is_flaky = 1 let bin_name = 'XTD_tbreak' diff --git a/src/version.c b/src/version.c index 99fbbe8345..422633aa6c 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 877, /**/ 876, /**/ From ae1c8b790b645c4808463eedcd5a2bebb9ad79bf Mon Sep 17 00:00:00 2001 From: Ubaldo Tiberi Date: Tue, 19 Nov 2024 22:32:30 +0100 Subject: [PATCH 006/244] patch 9.1.0878: termdebug: cannot enable DEBUG mode Problem: termdebug: cannot enable DEBUG mode Solution: Allow to specify DEBUG mode (Ubaldo Tiberi) closes: #16080 Signed-off-by: Ubaldo Tiberi Signed-off-by: Christian Brabandt --- runtime/doc/tags | 1 + runtime/doc/terminal.txt | 21 ++++++++++++++++++- .../dist/opt/termdebug/plugin/termdebug.vim | 11 ++++++++-- src/testdir/test_termdebug.vim | 20 ++++++++++++++++++ src/version.c | 2 ++ 5 files changed, 52 insertions(+), 3 deletions(-) diff --git a/runtime/doc/tags b/runtime/doc/tags index 706970f17a..39f279d361 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -10688,6 +10688,7 @@ termdebug-starting terminal.txt /*termdebug-starting* termdebug-stepping terminal.txt /*termdebug-stepping* termdebug-timeout terminal.txt /*termdebug-timeout* termdebug-variables terminal.txt /*termdebug-variables* +termdebug_contributing terminal.txt /*termdebug_contributing* termdebug_disasm_window terminal.txt /*termdebug_disasm_window* termdebug_evaluate_in_popup terminal.txt /*termdebug_evaluate_in_popup* termdebug_map_K terminal.txt /*termdebug_map_K* diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 637277ab59..593dec77c7 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 9.1. Last change: 2024 Nov 10 +*terminal.txt* For Vim version 9.1. Last change: 2024 Nov 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1737,4 +1737,23 @@ This can also be used in a "one-shot" manner: > let g:termdebug_config['evaluate_in_popup'] = v:false endfunc < + +Contributing ~ + *termdebug_contributing* +Contributions for termdebug improvements are welcome. +However, it is fairly common that during the development process you need some +mechanisms like `echo` statements (or similar) to help you in your job. +For this reason, you can set: > + let g:termdebug_config['debug'] = true +< +This sets the `DEBUG` variable to `true` in the source code that you can use +within the source code. An example of its usage follows: > + if exists('g:termdebug_loaded') + if DEBUG + Echoerr('Termdebug already loaded.') + endif + finish + endif +< + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim index 6f1f4b5227..9fbf3b7f69 100644 --- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -4,7 +4,7 @@ vim9script # Author: Bram Moolenaar # Copyright: Vim license applies, see ":help license" -# Last Change: 2024 Jul 04 +# Last Change: 2024 Nov 19 # Converted to Vim9: Ubaldo Tiberi # WORK IN PROGRESS - The basics works stable, more to come @@ -38,6 +38,11 @@ vim9script # The communication with gdb uses GDB/MI. See: # https://sourceware.org/gdb/current/onlinedocs/gdb/GDB_002fMI.html +var DEBUG = false +if exists('g:termdebug_config') + DEBUG = get(g:termdebug_config, 'debug', false) +endif + def Echoerr(msg: string) echohl ErrorMsg | echom $'[termdebug] {msg}' | echohl None enddef @@ -49,7 +54,9 @@ enddef # Variables to keep their status among multiple instances of Termdebug # Avoid to source the script twice. if exists('g:termdebug_loaded') - Echoerr('Termdebug already loaded.') + if DEBUG + Echoerr('Termdebug already loaded.') + endif finish endif g:termdebug_loaded = true diff --git a/src/testdir/test_termdebug.vim b/src/testdir/test_termdebug.vim index 17e1d897a3..0acdab1a50 100644 --- a/src/testdir/test_termdebug.vim +++ b/src/testdir/test_termdebug.vim @@ -57,6 +57,8 @@ endfunction packadd termdebug +" should be the first test to run, since it validates the window layout with +" win ids func Test_termdebug_basic() let bin_name = 'XTD_basic' let src_name = bin_name .. '.c' @@ -620,4 +622,22 @@ function Test_termdebug_config_types() unlet g:termdebug_config endfunction +function Test_termdebug_config_debug() + let s:error_message = '\[termdebug\] Termdebug already loaded' + + " USER mode: No error message shall be displayed + packadd termdebug + call assert_true(execute('messages') !~ s:error_message) + + " DEBUG mode: Error message shall now be displayed + let g:termdebug_config = {} + let g:termdebug_config['debug'] = 1 + packadd termdebug + call assert_true(execute('messages') =~ s:error_message) + + unlet g:termdebug_config + unlet g:termdebug_loaded + " Revert DEBUG mode, by reloading the plugin + source $VIMRUNTIME/pack/dist/opt/termdebug/plugin/termdebug.vim +endfunction " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 422633aa6c..6b263ea04e 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 878, /**/ 877, /**/ From 4927daef608d4bbcdce8a1098cdeeaed3112c849 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Tue, 19 Nov 2024 22:41:14 +0100 Subject: [PATCH 007/244] runtime(compiler): fix escaping of arguments passed to :CompilerSet See newly added help entry referring to option-backslash closes: #16084 Signed-off-by: Konfekt Signed-off-by: Christian Brabandt --- runtime/compiler/cppcheck.vim | 4 ++-- runtime/compiler/groff.vim | 4 ++-- runtime/compiler/mypy.vim | 4 ++-- runtime/compiler/pandoc.vim | 4 ++-- runtime/compiler/powershell.vim | 7 ++++--- runtime/compiler/pylint.vim | 3 ++- runtime/compiler/ruff.vim | 3 ++- runtime/compiler/tex.vim | 7 ++++--- 8 files changed, 20 insertions(+), 16 deletions(-) diff --git a/runtime/compiler/cppcheck.vim b/runtime/compiler/cppcheck.vim index 4df12d1714..033613c091 100644 --- a/runtime/compiler/cppcheck.vim +++ b/runtime/compiler/cppcheck.vim @@ -1,7 +1,7 @@ " vim compiler file " Compiler: cppcheck (C++ static checker) " Maintainer: Vincent B. (twinside@free.fr) -" Last Change: 2024 Nov 08 by @Konfekt +" Last Change: 2024 Nov 19 by @Konfekt if exists("current_compiler") | finish | endif let current_compiler = "cppcheck" @@ -25,7 +25,7 @@ let &l:makeprg = 'cppcheck --quiet' \ (filereadable('compile_commands.json') ? '--project=compile_commands.json' : \ (!empty(glob('*'..s:slash..'compile_commands.json', 1, 1)) ? '--project='..glob('*'..s:slash..'compile_commands.json', 1, 1)[0] : \ (empty(&path) ? '' : '-I')..join(map(filter(split(&path, ','), 'isdirectory(v:val)'),'shellescape(v:val)'), ' -I'))))) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' "') +exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') CompilerSet errorformat= \%f:%l:%c:\ %tarning:\ %m, diff --git a/runtime/compiler/groff.vim b/runtime/compiler/groff.vim index 640146d6a1..3e9ae0488f 100644 --- a/runtime/compiler/groff.vim +++ b/runtime/compiler/groff.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Groff " Maintainer: Konfekt -" Last Change: 2024 Sep 8 +" Last Change: 2024 Nov 19 " " Expects output file extension, say `:make html` or `:make pdf`. " Supported devices as of Sept 2024 are: (x)html, pdf, ps, dvi, lj4, lbp ... @@ -30,7 +30,7 @@ execute 'CompilerSet makeprg=groff'..escape( \ ' '..s:groff_compiler_lang().. \ ' -K'..get(b:, 'groff_compiler_encoding', get(g:, 'groff_compiler_encoding', 'utf8')).. \ ' '..get(b:, 'groff_compiler_args', get(g:, 'groff_compiler_args', '')).. - \ ' -mom -T$* -- %:S > %:r:S.$*', ' ') + \ ' -mom -T$* -- %:S > %:r:S.$*', ' \|"') " From Gavin Freeborn's https://github.com/Gavinok/vim-troff under Vim License " https://github.com/Gavinok/vim-troff/blob/91017b1423caa80aba541c997909a4f810edd275/compiler/troff.vim#L39 CompilerSet errorformat=%o:\ (%f):%l:%m, diff --git a/runtime/compiler/mypy.vim b/runtime/compiler/mypy.vim index 891488626a..907b98b777 100644 --- a/runtime/compiler/mypy.vim +++ b/runtime/compiler/mypy.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Mypy (Python static checker) " Maintainer: @Konfekt -" Last Change: 2024 Nov 07 +" Last Change: 2024 Nov 19 if exists("current_compiler") | finish | endif let current_compiler = "mypy" @@ -12,7 +12,7 @@ set cpo&vim " CompilerSet makeprg=mypy let &l:makeprg = 'mypy --show-column-numbers ' \ ..get(b:, 'mypy_makeprg_params', get(g:, 'mypy_makeprg_params', '--strict --ignore-missing-imports')) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' "') +exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') CompilerSet errorformat=%f:%l:%c:\ %t%*[^:]:\ %m let &cpo = s:cpo_save diff --git a/runtime/compiler/pandoc.vim b/runtime/compiler/pandoc.vim index 6c15e104c3..5d90a518c9 100644 --- a/runtime/compiler/pandoc.vim +++ b/runtime/compiler/pandoc.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Pandoc " Maintainer: Konfekt -" Last Change: 2024 Sep 8 +" Last Change: 2024 Nov 19 " " Expects output file extension, say `:make html` or `:make pdf`. " Passes additional arguments to pandoc, say `:make html --self-contained`. @@ -56,7 +56,7 @@ execute 'CompilerSet makeprg=pandoc'..escape( \ ' '..s:PandocLang().. \ ' --from='..s:PandocFiletype(&filetype).. \ ' '..get(b:, 'pandoc_compiler_args', get(g:, 'pandoc_compiler_args', '')).. - \ ' --output %:r:S.$* -- %:S', ' ') + \ ' --output %:r:S.$* -- %:S', ' \|"') CompilerSet errorformat=\"%f\",\ line\ %l:\ %m let &cpo = s:keepcpo diff --git a/runtime/compiler/powershell.vim b/runtime/compiler/powershell.vim index 821fea4085..3d37d7c847 100644 --- a/runtime/compiler/powershell.vim +++ b/runtime/compiler/powershell.vim @@ -3,8 +3,9 @@ " URL: https://github.com/PProvost/vim-ps1 " Contributors: Enno Nagel " Last Change: 2024 Mar 29 -" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) -" 2024 Apr 05 by The Vim Project (avoid leaving behind g:makeprg) +" 2024 Apr 03 by the Vim Project (removed :CompilerSet definition) +" 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg) +" 2024 Nov 19 by the Vim Project (properly escape makeprg setting) if exists("current_compiler") finish @@ -49,7 +50,7 @@ let s:makeprg = g:ps1_makeprg_cmd .. ' %:p:S' " + CategoryInfo : ObjectNotFound: (Write-Ouput:String) [], CommandNotFoundException " + FullyQualifiedErrorId : CommandNotFoundException -execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' ') +execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"') " Showing error in context with underlining. CompilerSet errorformat=%+G+%m diff --git a/runtime/compiler/pylint.vim b/runtime/compiler/pylint.vim index 4c9c23e125..96abf315ab 100644 --- a/runtime/compiler/pylint.vim +++ b/runtime/compiler/pylint.vim @@ -2,6 +2,7 @@ " Compiler: Pylint for Python " Maintainer: Daniel Moch " Last Change: 2024 Nov 07 by The Vim Project (added params variable) +" 2024 Nov 19 by the Vim Project (properly escape makeprg setting) if exists("current_compiler") | finish | endif let current_compiler = "pylint" @@ -13,7 +14,7 @@ set cpo&vim let &l:makeprg = 'pylint ' . \ '--output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no ' . \ get(b:, "pylint_makeprg_params", get(g:, "pylint_makeprg_params", '--jobs=0')) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' "') +exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') CompilerSet errorformat=%A%f:%l:%c:%t:\ %m,%A%f:%l:\ %m,%A%f:(%l):\ %m,%-Z%p^%.%#,%-G%.%# let &cpo = s:cpo_save diff --git a/runtime/compiler/ruff.vim b/runtime/compiler/ruff.vim index 11a69740d8..318f4fe5cb 100644 --- a/runtime/compiler/ruff.vim +++ b/runtime/compiler/ruff.vim @@ -2,6 +2,7 @@ " Compiler: Ruff (Python linter) " Maintainer: @pbnj-dragon " Last Change: 2024 Nov 07 +" 2024 Nov 19 by the Vim Project (properly escape makeprg setting) if exists("current_compiler") | finish | endif let current_compiler = "ruff" @@ -12,7 +13,7 @@ set cpo&vim " CompilerSet makeprg=ruff let &l:makeprg= 'ruff check --output-format=concise ' \ ..get(b:, 'ruff_makeprg_params', get(g:, 'ruff_makeprg_params', '--preview')) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' "') +exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f: let &cpo = s:cpo_save diff --git a/runtime/compiler/tex.vim b/runtime/compiler/tex.vim index 282b3a0588..bc1623729a 100644 --- a/runtime/compiler/tex.vim +++ b/runtime/compiler/tex.vim @@ -3,8 +3,9 @@ " Maintainer: Artem Chuprina " Contributors: Enno Nagel " Last Change: 2024 Mar 29 -" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) -" 2024 Apr 05 by The Vim Project (avoid leaving behind g:makeprg) +" 2024 Apr 03 by the Vim Project (removed :CompilerSet definition) +" 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg) +" 2024 Nov 19 by the Vim Project (properly escape makeprg setting) if exists("current_compiler") finish @@ -27,7 +28,7 @@ if exists('b:tex_ignore_makefile') || exists('g:tex_ignore_makefile') || let current_compiler = "latex" endif let s:makeprg=current_compiler .. ' -interaction=nonstopmode' - execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' ') + execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"') else let current_compiler = 'make' endif From 8bc4d25abe1ab509e4b3dc1e0c334d2e97b66869 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Tue, 19 Nov 2024 22:53:12 +0100 Subject: [PATCH 008/244] Add clang-format config file This is used in preparation to enable automatic code-formatting in the following commits. For now let's just add a clang-format config file, formatting of source files will follow. related: #16019 Signed-off-by: Luca Saccarola Signed-off-by: Christian Brabandt --- .clang-format | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++ Filelist | 1 + 2 files changed, 255 insertions(+) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000..6fc84ef10b --- /dev/null +++ b/.clang-format @@ -0,0 +1,254 @@ +--- +Language: Cpp +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: DontAlign +AlignOperands: Align +AlignTrailingComments: + Kind: Leave + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: None +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: All +AlwaysBreakAfterReturnType: AllDefinitions +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: false +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterExternBlock: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: false + BeforeWhile: true + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Custom +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: AfterHash +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 4 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 1000000000 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: 1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: false +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatementsExceptControlMacros +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: c++03 +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE + +# Taken from: +# git grep '^#define *FOR_*' src | cut -d':' -f2 | grep -o '[A-Z]*_.*(' \ +# | tr -d '(' | LC_ALL=C sort -u +ForEachMacros: + - 'FOR_ALL_AUTOCMD_PATTERNS' + - 'FOR_ALL_BUFFERS' + - 'FOR_ALL_BUFS_FROM_LAST' + - 'FOR_ALL_BUF_WININFO' + - 'FOR_ALL_CHANNELS' + - 'FOR_ALL_CHILD_MENUS' + - 'FOR_ALL_DIFFBLOCKS_IN_TAB' + - 'FOR_ALL_FRAMES' + - 'FOR_ALL_HASHTAB_ITEMS' + - 'FOR_ALL_JOBS' + - 'FOR_ALL_LIST_ITEMS' + - 'FOR_ALL_MENUS' + - 'FOR_ALL_NODE_SIBLINGS' + - 'FOR_ALL_POPUPWINS' + - 'FOR_ALL_POPUPWINS_IN_TAB' + - 'FOR_ALL_QFL_ITEMS' + - 'FOR_ALL_SIGNS' + - 'FOR_ALL_SIGNS_IN_BUF' + - 'FOR_ALL_SPELL_LANGS' + - 'FOR_ALL_SYNSTATES' + - 'FOR_ALL_TABPAGES' + - 'FOR_ALL_TAB_WINDOWS' + - 'FOR_ALL_TERMS' + - 'FOR_ALL_TIMERS' + - 'FOR_ALL_WATCHERS' + - 'FOR_ALL_WINDOWS' + - 'FOR_ALL_WINDOWS_IN_TAB' +... diff --git a/Filelist b/Filelist index 1f899b5c77..f65504e672 100644 --- a/Filelist +++ b/Filelist @@ -17,6 +17,7 @@ SRC_ALL = \ .gitignore \ .hgignore \ .appveyor.yml \ + .clang-format \ .codecov.yml \ .editorconfig \ ci/appveyor.bat \ From 3cf094edaff815141d9941b8dba52b9e77d8dfc1 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Tue, 19 Nov 2024 22:55:13 +0100 Subject: [PATCH 009/244] patch 9.1.0879: source is not consistently formatted Problem: source is not consistently formatted Solution: reformat sign.c and sound.c (Luca Saccarola) closes: #16019 Signed-off-by: Luca Saccarola Signed-off-by: Christian Brabandt --- src/sign.c | 3002 ++++++++++++++++++++++++------------------------- src/sound.c | 201 ++-- src/version.c | 2 + 3 files changed, 1584 insertions(+), 1621 deletions(-) diff --git a/src/sign.c b/src/sign.c index b1f496c388..e225909506 100644 --- a/src/sign.c +++ b/src/sign.c @@ -1,6 +1,6 @@ -/* vi:set ts=8 sts=4 sw=4 noet: +/* vi:set ts=8 sts=4 sw=4 et: * - * VIM - Vi IMproved by Bram Moolenaar + * VIM - Vi IMproved by Bram Moolenaar * * Do ":help uganda" in Vim to read copying and usage conditions. * Do ":help credits" in Vim to see a list of people who contributed. @@ -22,88 +22,87 @@ typedef struct sign sign_T; struct sign { - sign_T *sn_next; // next sign in list - int sn_typenr; // type number of sign - char_u *sn_name; // name of sign - char_u *sn_icon; // name of pixmap + sign_T *sn_next; // next sign in list + int sn_typenr; // type number of sign + char_u *sn_name; // name of sign + char_u *sn_icon; // name of pixmap # ifdef FEAT_SIGN_ICONS - void *sn_image; // icon image + void *sn_image; // icon image # endif - char_u *sn_text; // text used instead of pixmap - int sn_line_hl; // highlight ID for line - int sn_text_hl; // highlight ID for text - int sn_cul_hl; // highlight ID for text on current line when 'cursorline' is set - int sn_num_hl; // highlight ID for line number - int sn_priority; // default priority of this sign, -1 means SIGN_DEF_PRIO + char_u *sn_text; // text used instead of pixmap + int sn_line_hl; // highlight ID for line + int sn_text_hl; // highlight ID for text + int sn_cul_hl; // highlight ID for text on current line when 'cursorline' is set + int sn_num_hl; // highlight ID for line number + int sn_priority; // default priority of this sign, -1 means SIGN_DEF_PRIO }; -static sign_T *first_sign = NULL; -static int next_sign_typenr = 1; +static sign_T *first_sign = NULL; +static int next_sign_typenr = 1; static void sign_list_defined(sign_T *sp); static void sign_undefine(sign_T *sp, sign_T *sp_prev); -static char *cmds[] = { - "define", -# define SIGNCMD_DEFINE 0 - "undefine", +static char *cmds[] = { "define", +# define SIGNCMD_DEFINE 0 + "undefine", # define SIGNCMD_UNDEFINE 1 - "list", -# define SIGNCMD_LIST 2 - "place", -# define SIGNCMD_PLACE 3 - "unplace", + "list", +# define SIGNCMD_LIST 2 + "place", +# define SIGNCMD_PLACE 3 + "unplace", # define SIGNCMD_UNPLACE 4 - "jump", -# define SIGNCMD_JUMP 5 - NULL -# define SIGNCMD_LAST 6 + "jump", +# define SIGNCMD_JUMP 5 + NULL +# define SIGNCMD_LAST 6 }; -#define FOR_ALL_SIGNS(sp) \ - for ((sp) = first_sign; (sp) != NULL; (sp) = (sp)->sn_next) +# define FOR_ALL_SIGNS(sp) \ + for ((sp) = first_sign; (sp) != NULL; (sp) = (sp)->sn_next) -static hashtab_T sg_table; // sign group (signgroup_T) hashtable -static int next_sign_id = 1; // next sign id in the global group +static hashtab_T sg_table; // sign group (signgroup_T) hashtable +static int next_sign_id = 1; // next sign id in the global group /* * Initialize data needed for managing signs */ - void +void init_signs(void) { - hash_init(&sg_table); // sign group hash table + hash_init(&sg_table); // sign group hash table } /* * A new sign in group 'groupname' is added. If the group is not present, * create it. Otherwise reference the group. */ - static signgroup_T * +static signgroup_T * sign_group_ref(char_u *groupname) { - hash_T hash; - hashitem_T *hi; - signgroup_T *group; + hash_T hash; + hashitem_T *hi; + signgroup_T *group; hash = hash_hash(groupname); hi = hash_lookup(&sg_table, groupname, hash); if (HASHITEM_EMPTY(hi)) { - // new group - group = alloc(offsetof(signgroup_T, sg_name) + STRLEN(groupname) + 1); - if (group == NULL) - return NULL; - STRCPY(group->sg_name, groupname); - group->sg_refcount = 1; - group->sg_next_sign_id = 1; - hash_add_item(&sg_table, hi, group->sg_name, hash); + // new group + group = alloc(offsetof(signgroup_T, sg_name) + STRLEN(groupname) + 1); + if (group == NULL) + return NULL; + STRCPY(group->sg_name, groupname); + group->sg_refcount = 1; + group->sg_next_sign_id = 1; + hash_add_item(&sg_table, hi, group->sg_name, hash); } else { - // existing group - group = HI2SG(hi); - group->sg_refcount++; + // existing group + group = HI2SG(hi); + group->sg_refcount++; } return group; @@ -113,23 +112,23 @@ sign_group_ref(char_u *groupname) * A sign in group 'groupname' is removed. If all the signs in this group are * removed, then remove the group. */ - static void +static void sign_group_unref(char_u *groupname) { - hashitem_T *hi; - signgroup_T *group; + hashitem_T *hi; + signgroup_T *group; hi = hash_find(&sg_table, groupname); if (HASHITEM_EMPTY(hi)) - return; + return; group = HI2SG(hi); group->sg_refcount--; if (group->sg_refcount == 0) { - // All the signs in this group are removed - hash_remove(&sg_table, hi, "sign remove"); - vim_free(group); + // All the signs in this group are removed + hash_remove(&sg_table, hi, "sign remove"); + vim_free(group); } } @@ -138,24 +137,24 @@ sign_group_unref(char_u *groupname) * A sign can either be in the global group (sign->se_group == NULL) * or in a named group. If 'group' is '*', then the sign is part of the group. */ - static int +static int sign_in_group(sign_entry_T *sign, char_u *group) { - return ((group != NULL && STRCMP(group, "*") == 0) - || (group == NULL && sign->se_group == NULL) - || (group != NULL && sign->se_group != NULL - && STRCMP(group, sign->se_group->sg_name) == 0)); + return ((group != NULL && STRCMP(group, "*") == 0) || + (group == NULL && sign->se_group == NULL) || + (group != NULL && sign->se_group != NULL && + STRCMP(group, sign->se_group->sg_name) == 0)); } /* * Return TRUE if "sign" is to be displayed in window "wp". * If the group name starts with "PopUp" it only shows in a popup window. */ - static int +static int sign_group_for_window(sign_entry_T *sign, win_T *wp) { - int for_popup = sign->se_group != NULL - && STRNCMP("PopUp", sign->se_group->sg_name, 5) == 0; + int for_popup = sign->se_group != NULL && + STRNCMP("PopUp", sign->se_group->sg_name, 5) == 0; return WIN_IS_POPUP(wp) ? for_popup : !for_popup; } @@ -163,41 +162,41 @@ sign_group_for_window(sign_entry_T *sign, win_T *wp) /* * Get the next free sign identifier in the specified group */ - static int +static int sign_group_get_next_signid(buf_T *buf, char_u *groupname) { - int id = 1; - signgroup_T *group = NULL; - sign_entry_T *sign; - hashitem_T *hi; - int found = FALSE; + int id = 1; + signgroup_T *group = NULL; + sign_entry_T *sign; + hashitem_T *hi; + int found = FALSE; if (groupname != NULL) { - hi = hash_find(&sg_table, groupname); - if (HASHITEM_EMPTY(hi)) - return id; - group = HI2SG(hi); + hi = hash_find(&sg_table, groupname); + if (HASHITEM_EMPTY(hi)) + return id; + group = HI2SG(hi); } // Search for the next usable sign identifier while (!found) { - if (group == NULL) - id = next_sign_id++; // global group - else - id = group->sg_next_sign_id++; + if (group == NULL) + id = next_sign_id++; // global group + else + id = group->sg_next_sign_id++; - // Check whether this sign is already placed in the buffer - found = TRUE; - FOR_ALL_SIGNS_IN_BUF(buf, sign) - { - if (id == sign->se_id && sign_in_group(sign, groupname)) - { - found = FALSE; // sign identifier is in use - break; - } - } + // Check whether this sign is already placed in the buffer + found = TRUE; + FOR_ALL_SIGNS_IN_BUF(buf, sign) + { + if (id == sign->se_id && sign_in_group(sign, groupname)) + { + found = FALSE; // sign identifier is in use + break; + } + } } return id; @@ -207,87 +206,85 @@ sign_group_get_next_signid(buf_T *buf, char_u *groupname) * Insert a new sign into the signlist for buffer 'buf' between the 'prev' and * 'next' signs. */ - static void -insert_sign( - buf_T *buf, // buffer to store sign in - sign_entry_T *prev, // previous sign entry - sign_entry_T *next, // next sign entry - int id, // sign ID - char_u *group, // sign group; NULL for global group - int prio, // sign priority - linenr_T lnum, // line number which gets the mark - int typenr) // typenr of sign we are adding +static void +insert_sign(buf_T *buf, // buffer to store sign in + sign_entry_T *prev, // previous sign entry + sign_entry_T *next, // next sign entry + int id, // sign ID + char_u *group, // sign group; NULL for global group + int prio, // sign priority + linenr_T lnum, // line number which gets the mark + int typenr) // typenr of sign we are adding { sign_entry_T *newsign; newsign = lalloc_id(sizeof(sign_entry_T), FALSE, aid_insert_sign); if (newsign == NULL) - return; + return; newsign->se_id = id; newsign->se_lnum = lnum; newsign->se_typenr = typenr; if (group != NULL) { - newsign->se_group = sign_group_ref(group); - if (newsign->se_group == NULL) - { - vim_free(newsign); - return; - } + newsign->se_group = sign_group_ref(group); + if (newsign->se_group == NULL) + { + vim_free(newsign); + return; + } } else - newsign->se_group = NULL; + newsign->se_group = NULL; newsign->se_priority = prio; newsign->se_next = next; newsign->se_prev = prev; if (next != NULL) - next->se_prev = newsign; + next->se_prev = newsign; if (prev == NULL) { - // When adding first sign need to redraw the windows to create the - // column for signs. - if (buf->b_signlist == NULL) - { - redraw_buf_later(buf, UPD_NOT_VALID); - changed_line_abv_curs(); - } - - // first sign in signlist - buf->b_signlist = newsign; -#ifdef FEAT_NETBEANS_INTG - if (netbeans_active()) - buf->b_has_sign_column = TRUE; -#endif + // When adding first sign need to redraw the windows to create the + // column for signs. + if (buf->b_signlist == NULL) + { + redraw_buf_later(buf, UPD_NOT_VALID); + changed_line_abv_curs(); + } + + // first sign in signlist + buf->b_signlist = newsign; +# ifdef FEAT_NETBEANS_INTG + if (netbeans_active()) + buf->b_has_sign_column = TRUE; +# endif } else - prev->se_next = newsign; + prev->se_next = newsign; } /* * Insert a new sign sorted by line number and sign priority. */ - static void -insert_sign_by_lnum_prio( - buf_T *buf, // buffer to store sign in - sign_entry_T *prev, // previous sign entry - int id, // sign ID - char_u *group, // sign group; NULL for global group - int prio, // sign priority - linenr_T lnum, // line number which gets the mark - int typenr) // typenr of sign we are adding +static void +insert_sign_by_lnum_prio(buf_T *buf, // buffer to store sign in + sign_entry_T *prev, // previous sign entry + int id, // sign ID + char_u *group, // sign group; NULL for global group + int prio, // sign priority + linenr_T lnum, // line number which gets the mark + int typenr) // typenr of sign we are adding { - sign_entry_T *sign; + sign_entry_T *sign; // keep signs sorted by lnum and by priority: insert new sign at // the proper position in the list for this lnum. while (prev != NULL && prev->se_lnum == lnum && prev->se_priority <= prio) - prev = prev->se_prev; + prev = prev->se_prev; if (prev == NULL) - sign = buf->b_signlist; + sign = buf->b_signlist; else - sign = prev->se_next; + sign = prev->se_next; insert_sign(buf, prev, sign, id, group, prio, lnum, typenr); } @@ -295,44 +292,45 @@ insert_sign_by_lnum_prio( /* * Lookup a sign by typenr. Returns NULL if sign is not found. */ - static sign_T * +static sign_T * find_sign_by_typenr(int typenr) { - sign_T *sp; + sign_T *sp; FOR_ALL_SIGNS(sp) - if (sp->sn_typenr == typenr) - return sp; + if (sp->sn_typenr == typenr) + return sp; return NULL; } /* * Get the name of a sign by its typenr. */ - static char_u * +static char_u * sign_typenr2name(int typenr) { - sign_T *sp; + sign_T *sp; FOR_ALL_SIGNS(sp) - if (sp->sn_typenr == typenr) - return sp->sn_name; + if (sp->sn_typenr == typenr) + return sp->sn_name; return (char_u *)_("[Deleted]"); } /* * Return information about a sign in a Dict */ - static dict_T * +static dict_T * sign_get_info(sign_entry_T *sign) { - dict_T *d; + dict_T *d; if ((d = dict_alloc_id(aid_sign_getinfo)) == NULL) - return NULL; + return NULL; dict_add_number(d, "id", sign->se_id); - dict_add_string(d, "group", (sign->se_group == NULL) ? - (char_u *)"" : sign->se_group->sg_name); + dict_add_string(d, "group", + (sign->se_group == NULL) ? (char_u *)"" + : sign->se_group->sg_name); dict_add_number(d, "lnum", sign->se_lnum); dict_add_string(d, "name", sign_typenr2name(sign->se_typenr)); dict_add_number(d, "priority", sign->se_priority); @@ -345,107 +343,104 @@ sign_get_info(sign_entry_T *sign) * changing the priority of an already placed sign. Assumes the signs in the * buffer are sorted by line number and priority. */ - static void +static void sign_sort_by_prio_on_line(buf_T *buf, sign_entry_T *sign) { sign_entry_T *p = NULL; // If there is only one sign in the buffer or only one sign on the line or // the sign is already sorted by priority, then return. - if ((sign->se_prev == NULL - || sign->se_prev->se_lnum != sign->se_lnum - || sign->se_prev->se_priority > sign->se_priority) - && (sign->se_next == NULL - || sign->se_next->se_lnum != sign->se_lnum - || sign->se_next->se_priority < sign->se_priority)) - return; + if ((sign->se_prev == NULL || sign->se_prev->se_lnum != sign->se_lnum || + sign->se_prev->se_priority > sign->se_priority) && + (sign->se_next == NULL || sign->se_next->se_lnum != sign->se_lnum || + sign->se_next->se_priority < sign->se_priority)) + return; // One or more signs on the same line as 'sign' // Find a sign after which 'sign' should be inserted // First search backward for a sign with higher priority on the same line p = sign; - while (p->se_prev != NULL && p->se_prev->se_lnum == sign->se_lnum - && p->se_prev->se_priority <= sign->se_priority) - p = p->se_prev; + while (p->se_prev != NULL && p->se_prev->se_lnum == sign->se_lnum && + p->se_prev->se_priority <= sign->se_priority) + p = p->se_prev; if (p == sign) { - // Sign not found. Search forward for a sign with priority just before - // 'sign'. - p = sign->se_next; - while (p->se_next != NULL && p->se_next->se_lnum == sign->se_lnum - && p->se_next->se_priority > sign->se_priority) - p = p->se_next; + // Sign not found. Search forward for a sign with priority just before + // 'sign'. + p = sign->se_next; + while (p->se_next != NULL && p->se_next->se_lnum == sign->se_lnum && + p->se_next->se_priority > sign->se_priority) + p = p->se_next; } // Remove 'sign' from the list if (buf->b_signlist == sign) - buf->b_signlist = sign->se_next; + buf->b_signlist = sign->se_next; if (sign->se_prev != NULL) - sign->se_prev->se_next = sign->se_next; + sign->se_prev->se_next = sign->se_next; if (sign->se_next != NULL) - sign->se_next->se_prev = sign->se_prev; + sign->se_next->se_prev = sign->se_prev; sign->se_prev = NULL; sign->se_next = NULL; // Re-insert 'sign' at the right place if (p->se_priority <= sign->se_priority) { - // 'sign' has a higher priority and should be inserted before 'p' - sign->se_prev = p->se_prev; - sign->se_next = p; - p->se_prev = sign; - if (sign->se_prev != NULL) - sign->se_prev->se_next = sign; - if (buf->b_signlist == p) - buf->b_signlist = sign; + // 'sign' has a higher priority and should be inserted before 'p' + sign->se_prev = p->se_prev; + sign->se_next = p; + p->se_prev = sign; + if (sign->se_prev != NULL) + sign->se_prev->se_next = sign; + if (buf->b_signlist == p) + buf->b_signlist = sign; } else { - // 'sign' has a lower priority and should be inserted after 'p' - sign->se_prev = p; - sign->se_next = p->se_next; - p->se_next = sign; - if (sign->se_next != NULL) - sign->se_next->se_prev = sign; + // 'sign' has a lower priority and should be inserted after 'p' + sign->se_prev = p; + sign->se_next = p->se_next; + p->se_next = sign; + if (sign->se_next != NULL) + sign->se_next->se_prev = sign; } } /* * Add the sign into the signlist. Find the right spot to do it though. */ - static void -buf_addsign( - buf_T *buf, // buffer to store sign in - int id, // sign ID - char_u *groupname, // sign group - int prio, // sign priority - linenr_T lnum, // line number which gets the mark - int typenr) // typenr of sign we are adding +static void +buf_addsign(buf_T *buf, // buffer to store sign in + int id, // sign ID + char_u *groupname, // sign group + int prio, // sign priority + linenr_T lnum, // line number which gets the mark + int typenr) // typenr of sign we are adding { - sign_entry_T *sign; // a sign in the signlist - sign_entry_T *prev; // the previous sign + sign_entry_T *sign; // a sign in the signlist + sign_entry_T *prev; // the previous sign prev = NULL; FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (lnum == sign->se_lnum && id == sign->se_id - && sign_in_group(sign, groupname)) - { - // Update an existing sign - sign->se_typenr = typenr; - sign->se_priority = prio; - sign_sort_by_prio_on_line(buf, sign); - return; - } - else if (lnum < sign->se_lnum) - { - insert_sign_by_lnum_prio(buf, prev, id, groupname, prio, - lnum, typenr); - return; - } - prev = sign; + if (lnum == sign->se_lnum && id == sign->se_id && + sign_in_group(sign, groupname)) + { + // Update an existing sign + sign->se_typenr = typenr; + sign->se_priority = prio; + sign_sort_by_prio_on_line(buf, sign); + return; + } + else if (lnum < sign->se_lnum) + { + insert_sign_by_lnum_prio(buf, prev, id, groupname, prio, lnum, + typenr); + return; + } + prev = sign; } insert_sign_by_lnum_prio(buf, prev, id, groupname, prio, lnum, typenr); @@ -456,25 +451,24 @@ buf_addsign( * For an existing, placed sign "markId" change the type to "typenr". * Returns the line number of the sign, or zero if the sign is not found. */ - static linenr_T -buf_change_sign_type( - buf_T *buf, // buffer to store sign in - int markId, // sign ID - char_u *group, // sign group - int typenr, // typenr of sign we are adding - int prio) // sign priority +static linenr_T +buf_change_sign_type(buf_T *buf, // buffer to store sign in + int markId, // sign ID + char_u *group, // sign group + int typenr, // typenr of sign we are adding + int prio) // sign priority { - sign_entry_T *sign; // a sign in the signlist + sign_entry_T *sign; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (sign->se_id == markId && sign_in_group(sign, group)) - { - sign->se_typenr = typenr; - sign->se_priority = prio; - sign_sort_by_prio_on_line(buf, sign); - return sign->se_lnum; - } + if (sign->se_id == markId && sign_in_group(sign, group)) + { + sign->se_typenr = typenr; + sign->se_priority = prio; + sign_sort_by_prio_on_line(buf, sign); + return sign->se_lnum; + } } return (linenr_T)0; @@ -485,76 +479,76 @@ buf_change_sign_type( * 'buf'. Used when refreshing the screen. Returns TRUE if a sign is found on * 'lnum', FALSE otherwise. */ - int +int buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr) { - sign_entry_T *sign; - sign_T *sp; - buf_T *buf = wp->w_buffer; + sign_entry_T *sign; + sign_T *sp; + buf_T *buf = wp->w_buffer; CLEAR_POINTER(sattr); FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. - break; + if (sign->se_lnum > lnum) + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. + break; - if (sign->se_lnum == lnum + if (sign->se_lnum == lnum # ifdef FEAT_PROP_POPUP - && sign_group_for_window(sign, wp) + && sign_group_for_window(sign, wp) # endif - ) - { - sattr->sat_typenr = sign->se_typenr; - sp = find_sign_by_typenr(sign->se_typenr); - if (sp == NULL) - return FALSE; + ) + { + sattr->sat_typenr = sign->se_typenr; + sp = find_sign_by_typenr(sign->se_typenr); + if (sp == NULL) + return FALSE; # ifdef FEAT_SIGN_ICONS - sattr->sat_icon = sp->sn_image; + sattr->sat_icon = sp->sn_image; # endif - sattr->sat_text = sp->sn_text; - if (sattr->sat_text != NULL && sp->sn_text_hl > 0) - sattr->sat_texthl = syn_id2attr(sp->sn_text_hl); - if (sp->sn_line_hl > 0) - sattr->sat_linehl = syn_id2attr(sp->sn_line_hl); - if (sp->sn_cul_hl > 0) - sattr->sat_culhl = syn_id2attr(sp->sn_cul_hl); - if (sp->sn_num_hl > 0) - sattr->sat_numhl = syn_id2attr(sp->sn_num_hl); - sattr->sat_priority = sign->se_priority; - - // If there is another sign next with the same priority, may - // combine the text and the line highlighting. - if (sign->se_next != NULL - && sign->se_next->se_priority == sign->se_priority - && sign->se_next->se_lnum == sign->se_lnum) - { - sign_T *next_sp = find_sign_by_typenr(sign->se_next->se_typenr); - - if (next_sp != NULL) - { - if (sattr->sat_icon == NULL && sattr->sat_text == NULL) - { + sattr->sat_text = sp->sn_text; + if (sattr->sat_text != NULL && sp->sn_text_hl > 0) + sattr->sat_texthl = syn_id2attr(sp->sn_text_hl); + if (sp->sn_line_hl > 0) + sattr->sat_linehl = syn_id2attr(sp->sn_line_hl); + if (sp->sn_cul_hl > 0) + sattr->sat_culhl = syn_id2attr(sp->sn_cul_hl); + if (sp->sn_num_hl > 0) + sattr->sat_numhl = syn_id2attr(sp->sn_num_hl); + sattr->sat_priority = sign->se_priority; + + // If there is another sign next with the same priority, may + // combine the text and the line highlighting. + if (sign->se_next != NULL && + sign->se_next->se_priority == sign->se_priority && + sign->se_next->se_lnum == sign->se_lnum) + { + sign_T *next_sp = find_sign_by_typenr(sign->se_next->se_typenr); + + if (next_sp != NULL) + { + if (sattr->sat_icon == NULL && sattr->sat_text == NULL) + { # ifdef FEAT_SIGN_ICONS - sattr->sat_icon = next_sp->sn_image; + sattr->sat_icon = next_sp->sn_image; # endif - sattr->sat_text = next_sp->sn_text; - } - if (sp->sn_text_hl <= 0 && next_sp->sn_text_hl > 0) - sattr->sat_texthl = syn_id2attr(next_sp->sn_text_hl); - if (sp->sn_line_hl <= 0 && next_sp->sn_line_hl > 0) - sattr->sat_linehl = syn_id2attr(next_sp->sn_line_hl); - if (sp->sn_cul_hl <= 0 && next_sp->sn_cul_hl > 0) - sattr->sat_culhl = syn_id2attr(next_sp->sn_cul_hl); - if (sp->sn_num_hl <= 0 && next_sp->sn_num_hl > 0) - sattr->sat_numhl = syn_id2attr(next_sp->sn_num_hl); - } - } - return TRUE; - } + sattr->sat_text = next_sp->sn_text; + } + if (sp->sn_text_hl <= 0 && next_sp->sn_text_hl > 0) + sattr->sat_texthl = syn_id2attr(next_sp->sn_text_hl); + if (sp->sn_line_hl <= 0 && next_sp->sn_line_hl > 0) + sattr->sat_linehl = syn_id2attr(next_sp->sn_line_hl); + if (sp->sn_cul_hl <= 0 && next_sp->sn_cul_hl > 0) + sattr->sat_culhl = syn_id2attr(next_sp->sn_cul_hl); + if (sp->sn_num_hl <= 0 && next_sp->sn_num_hl > 0) + sattr->sat_numhl = syn_id2attr(next_sp->sn_num_hl); + } + } + return TRUE; + } } return FALSE; } @@ -569,78 +563,74 @@ buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr) * Returns the line number of the deleted sign. If multiple signs are deleted, * then returns the line number of the last sign deleted. */ - linenr_T -buf_delsign( - buf_T *buf, // buffer sign is stored in - linenr_T atlnum, // sign at this line, 0 - at any line - int id, // sign id - char_u *group) // sign group +linenr_T +buf_delsign(buf_T *buf, // buffer sign is stored in + linenr_T atlnum, // sign at this line, 0 - at any line + int id, // sign id + char_u *group) // sign group { - sign_entry_T **lastp; // pointer to pointer to current sign - sign_entry_T *sign; // a sign in a b_signlist - sign_entry_T *next; // the next sign in a b_signlist - linenr_T lnum; // line number whose sign was deleted + sign_entry_T **lastp; // pointer to pointer to current sign + sign_entry_T *sign; // a sign in a b_signlist + sign_entry_T *next; // the next sign in a b_signlist + linenr_T lnum; // line number whose sign was deleted lastp = &buf->b_signlist; lnum = 0; for (sign = buf->b_signlist; sign != NULL; sign = next) { - next = sign->se_next; - if ((id == 0 || sign->se_id == id) - && (atlnum == 0 || sign->se_lnum == atlnum) - && sign_in_group(sign, group)) - - { - *lastp = next; - if (next != NULL) - next->se_prev = sign->se_prev; - lnum = sign->se_lnum; - if (sign->se_group != NULL) - sign_group_unref(sign->se_group->sg_name); - vim_free(sign); - redraw_buf_line_later(buf, lnum); - - // Check whether only one sign needs to be deleted - // If deleting a sign with a specific identifier in a particular - // group or deleting any sign at a particular line number, delete - // only one sign. - if (group == NULL - || (*group != '*' && id != 0) - || (*group == '*' && atlnum != 0)) - break; - } - else - lastp = &sign->se_next; + next = sign->se_next; + if ((id == 0 || sign->se_id == id) && + (atlnum == 0 || sign->se_lnum == atlnum) && + sign_in_group(sign, group)) + + { + *lastp = next; + if (next != NULL) + next->se_prev = sign->se_prev; + lnum = sign->se_lnum; + if (sign->se_group != NULL) + sign_group_unref(sign->se_group->sg_name); + vim_free(sign); + redraw_buf_line_later(buf, lnum); + + // Check whether only one sign needs to be deleted + // If deleting a sign with a specific identifier in a particular + // group or deleting any sign at a particular line number, delete + // only one sign. + if (group == NULL || (*group != '*' && id != 0) || + (*group == '*' && atlnum != 0)) + break; + } + else + lastp = &sign->se_next; } // When deleting the last sign the cursor position may change, because the // sign columns no longer shows. And the 'signcolumn' may be hidden. if (buf->b_signlist == NULL) { - redraw_buf_later(buf, UPD_NOT_VALID); - changed_line_abv_curs(); + redraw_buf_later(buf, UPD_NOT_VALID); + changed_line_abv_curs(); } return lnum; } - /* * Find the line number of the sign with the requested id in group 'group'. If * the sign does not exist, return 0 as the line number. This will still let * the correct file get loaded. */ - int -buf_findsign( - buf_T *buf, // buffer to store sign in - int id, // sign ID - char_u *group) // sign group +int +buf_findsign(buf_T *buf, // buffer to store sign in + int id, // sign ID + char_u *group) // sign group { - sign_entry_T *sign; // a sign in the signlist + sign_entry_T *sign; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) - if (sign->se_id == id && sign_in_group(sign, group)) - return sign->se_lnum; + if (sign->se_id == id && sign_in_group(sign, group)) + return sign->se_lnum; return 0; } @@ -649,23 +639,22 @@ buf_findsign( * Return the sign at line 'lnum' in buffer 'buf'. Returns NULL if a sign is * not found at the line. If 'groupname' is NULL, searches in the global group. */ - static sign_entry_T * -buf_getsign_at_line( - buf_T *buf, // buffer whose sign we are searching for - linenr_T lnum, // line number of sign - char_u *groupname) // sign group name +static sign_entry_T * +buf_getsign_at_line(buf_T *buf, // buffer whose sign we are searching for + linenr_T lnum, // line number of sign + char_u *groupname) // sign group name { - sign_entry_T *sign; // a sign in the signlist + sign_entry_T *sign; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. - break; + if (sign->se_lnum > lnum) + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. + break; - if (sign->se_lnum == lnum && sign_in_group(sign, groupname)) - return sign; + if (sign->se_lnum == lnum && sign_in_group(sign, groupname)) + return sign; } return NULL; @@ -674,17 +663,16 @@ buf_getsign_at_line( /* * Return the identifier of the sign at line number 'lnum' in buffer 'buf'. */ - int -buf_findsign_id( - buf_T *buf, // buffer whose sign we are searching for - linenr_T lnum, // line number of sign - char_u *groupname) // sign group name +int +buf_findsign_id(buf_T *buf, // buffer whose sign we are searching for + linenr_T lnum, // line number of sign + char_u *groupname) // sign group name { - sign_entry_T *sign; // a sign in the signlist + sign_entry_T *sign; // a sign in the signlist sign = buf_getsign_at_line(buf, lnum, groupname); if (sign != NULL) - return sign->se_id; + return sign->se_id; return 0; } @@ -693,49 +681,47 @@ buf_findsign_id( /* * See if a given type of sign exists on a specific line. */ - int -buf_findsigntype_id( - buf_T *buf, // buffer whose sign we are searching for - linenr_T lnum, // line number of sign - int typenr) // sign type number +int +buf_findsigntype_id(buf_T *buf, // buffer whose sign we are searching for + linenr_T lnum, // line number of sign + int typenr) // sign type number { - sign_entry_T *sign; // a sign in the signlist + sign_entry_T *sign; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. - break; + if (sign->se_lnum > lnum) + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. + break; - if (sign->se_lnum == lnum && sign->se_typenr == typenr) - return sign->se_id; + if (sign->se_lnum == lnum && sign->se_typenr == typenr) + return sign->se_id; } return 0; } - # if defined(FEAT_SIGN_ICONS) || defined(PROTO) /* * Return the number of icons on the given line. */ - int +int buf_signcount(buf_T *buf, linenr_T lnum) { - sign_entry_T *sign; // a sign in the signlist - int count = 0; + sign_entry_T *sign; // a sign in the signlist + int count = 0; FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. - break; + if (sign->se_lnum > lnum) + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. + break; - if (sign->se_lnum == lnum) - if (sign_get_image(sign->se_typenr) != NULL) - count++; + if (sign->se_lnum == lnum) + if (sign_get_image(sign->se_typenr) != NULL) + count++; } return count; @@ -747,121 +733,117 @@ buf_signcount(buf_T *buf, linenr_T lnum) * Delete signs in group 'group' in buffer "buf". If 'group' is '*', then * delete all the signs. */ - void +void buf_delete_signs(buf_T *buf, char_u *group) { - sign_entry_T *sign; - sign_entry_T **lastp; // pointer to pointer to current sign - sign_entry_T *next; + sign_entry_T *sign; + sign_entry_T **lastp; // pointer to pointer to current sign + sign_entry_T *next; // When deleting the last sign need to redraw the windows to remove the // sign column. Not when curwin is NULL (this means we're exiting). if (buf->b_signlist != NULL && curwin != NULL) { - redraw_buf_later(buf, UPD_NOT_VALID); - changed_line_abv_curs(); + redraw_buf_later(buf, UPD_NOT_VALID); + changed_line_abv_curs(); } lastp = &buf->b_signlist; for (sign = buf->b_signlist; sign != NULL; sign = next) { - next = sign->se_next; - if (sign_in_group(sign, group)) - { - *lastp = next; - if (next != NULL) - next->se_prev = sign->se_prev; - if (sign->se_group != NULL) - sign_group_unref(sign->se_group->sg_name); - vim_free(sign); - } - else - lastp = &sign->se_next; + next = sign->se_next; + if (sign_in_group(sign, group)) + { + *lastp = next; + if (next != NULL) + next->se_prev = sign->se_prev; + if (sign->se_group != NULL) + sign_group_unref(sign->se_group->sg_name); + vim_free(sign); + } + else + lastp = &sign->se_next; } } /* * List placed signs for "rbuf". If "rbuf" is NULL do it for all buffers. */ - static void +static void sign_list_placed(buf_T *rbuf, char_u *sign_group) { - buf_T *buf; - sign_entry_T *sign; - char lbuf[MSG_BUF_LEN]; - char group[MSG_BUF_LEN]; + buf_T *buf; + sign_entry_T *sign; + char lbuf[MSG_BUF_LEN]; + char group[MSG_BUF_LEN]; msg_puts_title(_("\n--- Signs ---")); msg_putchar('\n'); if (rbuf == NULL) - buf = firstbuf; + buf = firstbuf; else - buf = rbuf; + buf = rbuf; while (buf != NULL && !got_int) { - if (buf->b_signlist != NULL) - { - vim_snprintf(lbuf, MSG_BUF_LEN, _("Signs for %s:"), buf->b_fname); - msg_puts_attr(lbuf, HL_ATTR(HLF_D)); - msg_putchar('\n'); - } - FOR_ALL_SIGNS_IN_BUF(buf, sign) - { - if (got_int) - break; - if (!sign_in_group(sign, sign_group)) - continue; - if (sign->se_group != NULL) - vim_snprintf(group, MSG_BUF_LEN, _(" group=%s"), - sign->se_group->sg_name); - else - group[0] = '\0'; - vim_snprintf(lbuf, MSG_BUF_LEN, - _(" line=%ld id=%d%s name=%s priority=%d"), - (long)sign->se_lnum, sign->se_id, group, - sign_typenr2name(sign->se_typenr), sign->se_priority); - msg_puts(lbuf); - msg_putchar('\n'); - } - if (rbuf != NULL) - break; - buf = buf->b_next; + if (buf->b_signlist != NULL) + { + vim_snprintf(lbuf, MSG_BUF_LEN, _("Signs for %s:"), buf->b_fname); + msg_puts_attr(lbuf, HL_ATTR(HLF_D)); + msg_putchar('\n'); + } + FOR_ALL_SIGNS_IN_BUF(buf, sign) + { + if (got_int) + break; + if (!sign_in_group(sign, sign_group)) + continue; + if (sign->se_group != NULL) + vim_snprintf(group, MSG_BUF_LEN, _(" group=%s"), + sign->se_group->sg_name); + else + group[0] = '\0'; + vim_snprintf(lbuf, MSG_BUF_LEN, + _(" line=%ld id=%d%s name=%s priority=%d"), + (long)sign->se_lnum, sign->se_id, group, + sign_typenr2name(sign->se_typenr), sign->se_priority); + msg_puts(lbuf); + msg_putchar('\n'); + } + if (rbuf != NULL) + break; + buf = buf->b_next; } } /* * Adjust a placed sign for inserted/deleted lines. */ - void -sign_mark_adjust( - linenr_T line1, - linenr_T line2, - long amount, - long amount_after) +void +sign_mark_adjust(linenr_T line1, linenr_T line2, long amount, long amount_after) { - sign_entry_T *sign; // a sign in a b_signlist - linenr_T new_lnum; + sign_entry_T *sign; // a sign in a b_signlist + linenr_T new_lnum; FOR_ALL_SIGNS_IN_BUF(curbuf, sign) { - // Ignore changes to lines after the sign - if (sign->se_lnum < line1) - continue; - new_lnum = sign->se_lnum; - if (sign->se_lnum <= line2) - { - if (amount != MAXLNUM) - new_lnum += amount; - } - else if (sign->se_lnum > line2) - // Lines inserted or deleted before the sign - new_lnum += amount_after; + // Ignore changes to lines after the sign + if (sign->se_lnum < line1) + continue; + new_lnum = sign->se_lnum; + if (sign->se_lnum <= line2) + { + if (amount != MAXLNUM) + new_lnum += amount; + } + else if (sign->se_lnum > line2) + // Lines inserted or deleted before the sign + new_lnum += amount_after; - // If the new sign line number is past the last line in the buffer, - // then don't adjust the line number. Otherwise, it will always be past - // the last line and will not be visible. - if (new_lnum <= curbuf->b_ml.ml_line_count) - sign->se_lnum = new_lnum; + // If the new sign line number is past the last line in the buffer, + // then don't adjust the line number. Otherwise, it will always be past + // the last line and will not be visible. + if (new_lnum <= curbuf->b_ml.ml_line_count) + sign->se_lnum = new_lnum; } } @@ -869,18 +851,17 @@ sign_mark_adjust( * Find index of a ":sign" subcmd from its name. * "*end_cmd" must be writable. */ - static int -sign_cmd_idx( - char_u *begin_cmd, // begin of sign subcmd - char_u *end_cmd) // just after sign subcmd +static int +sign_cmd_idx(char_u *begin_cmd, // begin of sign subcmd + char_u *end_cmd) // just after sign subcmd { - int idx; - char save = *end_cmd; + int idx; + char save = *end_cmd; *end_cmd = NUL; - for (idx = 0; ; ++idx) - if (cmds[idx] == NULL || STRCMP(begin_cmd, cmds[idx]) == 0) - break; + for (idx = 0;; ++idx) + if (cmds[idx] == NULL || STRCMP(begin_cmd, cmds[idx]) == 0) + break; *end_cmd = save; return idx; } @@ -888,19 +869,19 @@ sign_cmd_idx( /* * Find a sign by name. Also returns pointer to the previous sign. */ - static sign_T * +static sign_T * sign_find(char_u *name, sign_T **sp_prev) { sign_T *sp; if (sp_prev != NULL) - *sp_prev = NULL; + *sp_prev = NULL; FOR_ALL_SIGNS(sp) { - if (STRCMP(sp->sn_name, name) == 0) - break; - if (sp_prev != NULL) - *sp_prev = sp; + if (STRCMP(sp->sn_name, name) == 0) + break; + if (sp_prev != NULL) + *sp_prev = sp; } return sp; @@ -909,49 +890,49 @@ sign_find(char_u *name, sign_T **sp_prev) /* * Allocate a new sign */ - static sign_T * +static sign_T * alloc_new_sign(char_u *name) { - sign_T *sp; - sign_T *lp; - int start = next_sign_typenr; + sign_T *sp; + sign_T *lp; + int start = next_sign_typenr; // Allocate a new sign. sp = alloc_clear_id(sizeof(sign_T), aid_sign_define_by_name); if (sp == NULL) - return NULL; + return NULL; // Check that next_sign_typenr is not already being used. // This only happens after wrapping around. Hopefully // another one got deleted and we can use its number. - for (lp = first_sign; lp != NULL; ) - { - if (lp->sn_typenr == next_sign_typenr) - { - ++next_sign_typenr; - if (next_sign_typenr == MAX_TYPENR) - next_sign_typenr = 1; - if (next_sign_typenr == start) - { - vim_free(sp); - emsg(_(e_too_many_signs_defined)); - return NULL; - } - lp = first_sign; // start all over - continue; - } - lp = lp->sn_next; + for (lp = first_sign; lp != NULL;) + { + if (lp->sn_typenr == next_sign_typenr) + { + ++next_sign_typenr; + if (next_sign_typenr == MAX_TYPENR) + next_sign_typenr = 1; + if (next_sign_typenr == start) + { + vim_free(sp); + emsg(_(e_too_many_signs_defined)); + return NULL; + } + lp = first_sign; // start all over + continue; + } + lp = lp->sn_next; } sp->sn_typenr = next_sign_typenr; if (++next_sign_typenr == MAX_TYPENR) - next_sign_typenr = 1; // wrap around + next_sign_typenr = 1; // wrap around sp->sn_name = vim_strsave(name); - if (sp->sn_name == NULL) // out of memory + if (sp->sn_name == NULL) // out of memory { - vim_free(sp); - return NULL; + vim_free(sp); + return NULL; } return sp; @@ -960,7 +941,7 @@ alloc_new_sign(char_u *name) /* * Initialize the icon information for a new sign */ - static void +static void sign_define_init_icon(sign_T *sp, char_u *icon) { vim_free(sp->sn_icon); @@ -969,10 +950,10 @@ sign_define_init_icon(sign_T *sp, char_u *icon) # ifdef FEAT_SIGN_ICONS if (gui.in_use) { - out_flush(); - if (sp->sn_image != NULL) - gui_mch_destroy_sign(sp->sn_image); - sp->sn_image = gui_mch_register_sign(sp->sn_icon); + out_flush(); + if (sp->sn_image != NULL) + gui_mch_destroy_sign(sp->sn_image); + sp->sn_image = gui_mch_register_sign(sp->sn_icon); } # endif } @@ -980,48 +961,48 @@ sign_define_init_icon(sign_T *sp, char_u *icon) /* * Initialize the text for a new sign */ - static int +static int sign_define_init_text(sign_T *sp, char_u *text) { - char_u *s; - char_u *endp; - int cells; - int len; + char_u *s; + char_u *endp; + int cells; + int len; endp = text + (int)STRLEN(text); // Remove backslashes so that it is possible to use a space. for (s = text; s + 1 < endp; ++s) - if (*s == '\\') - { - STRMOVE(s, s + 1); - --endp; - } + if (*s == '\\') + { + STRMOVE(s, s + 1); + --endp; + } // Count cells and check for non-printable chars if (has_mbyte) { - cells = 0; - for (s = text; s < endp; s += (*mb_ptr2len)(s)) - { - if (!vim_isprintc((*mb_ptr2char)(s))) - break; - cells += (*mb_ptr2cells)(s); - } + cells = 0; + for (s = text; s < endp; s += (*mb_ptr2len)(s)) + { + if (!vim_isprintc((*mb_ptr2char)(s))) + break; + cells += (*mb_ptr2cells)(s); + } } else { - for (s = text; s < endp; ++s) - if (!vim_isprintc(*s)) - break; - cells = (int)(s - text); + for (s = text; s < endp; ++s) + if (!vim_isprintc(*s)) + break; + cells = (int)(s - text); } // Currently sign text must be one or two display cells if (s != endp || cells < 1 || cells > 2) { - semsg(_(e_invalid_sign_text_str), text); - return FAIL; + semsg(_(e_invalid_sign_text_str), text); + return FAIL; } vim_free(sp->sn_text); @@ -1032,7 +1013,7 @@ sign_define_init_text(sign_T *sp, char_u *text) // For single character sign text, pad with a space. if (sp->sn_text != NULL && cells == 1) - STRCPY(sp->sn_text + len - 1, " "); + STRCPY(sp->sn_text + len - 1, " "); return OK; } @@ -1040,83 +1021,82 @@ sign_define_init_text(sign_T *sp, char_u *text) /* * Define a new sign or update an existing sign */ - int -sign_define_by_name( - char_u *name, - char_u *icon, - char_u *linehl, - char_u *text, - char_u *texthl, - char_u *culhl, - char_u *numhl, - int prio) -{ - sign_T *sp_prev; - sign_T *sp; +int +sign_define_by_name(char_u *name, + char_u *icon, + char_u *linehl, + char_u *text, + char_u *texthl, + char_u *culhl, + char_u *numhl, + int prio) +{ + sign_T *sp_prev; + sign_T *sp; sp = sign_find(name, &sp_prev); if (sp == NULL) { - sp = alloc_new_sign(name); - if (sp == NULL) - return FAIL; + sp = alloc_new_sign(name); + if (sp == NULL) + return FAIL; - // add the new sign to the list of signs - if (sp_prev == NULL) - first_sign = sp; - else - sp_prev->sn_next = sp; + // add the new sign to the list of signs + if (sp_prev == NULL) + first_sign = sp; + else + sp_prev->sn_next = sp; } else { - win_T *wp; + win_T *wp; - // Signs may already exist, a redraw is needed in windows with a - // non-empty sign list. - FOR_ALL_WINDOWS(wp) - if (wp->w_buffer->b_signlist != NULL) - redraw_buf_later(wp->w_buffer, UPD_NOT_VALID); + // Signs may already exist, a redraw is needed in windows with a + // non-empty sign list. + FOR_ALL_WINDOWS(wp) + if (wp->w_buffer->b_signlist != NULL) + redraw_buf_later(wp->w_buffer, UPD_NOT_VALID); } // set values for a defined sign. if (icon != NULL) - sign_define_init_icon(sp, icon); + sign_define_init_icon(sp, icon); if (text != NULL && (sign_define_init_text(sp, text) == FAIL)) - return FAIL; + return FAIL; sp->sn_priority = prio; if (linehl != NULL) { - if (*linehl == NUL) - sp->sn_line_hl = 0; - else - sp->sn_line_hl = syn_check_group(linehl, (int)STRLEN(linehl)); + if (*linehl == NUL) + sp->sn_line_hl = 0; + else + sp->sn_line_hl = syn_check_group(linehl, (int)STRLEN(linehl)); } if (texthl != NULL) { - if (*texthl == NUL) - sp->sn_text_hl = 0; - else - sp->sn_text_hl = syn_check_group(texthl, (int)STRLEN(texthl)); + if (*texthl == NUL) + sp->sn_text_hl = 0; + else + sp->sn_text_hl = syn_check_group(texthl, (int)STRLEN(texthl)); } if (culhl != NULL) { - if (*culhl == NUL) - sp->sn_cul_hl = 0; - else - sp->sn_cul_hl = syn_check_group(culhl, (int)STRLEN(culhl)); + if (*culhl == NUL) + sp->sn_cul_hl = 0; + else + sp->sn_cul_hl = syn_check_group(culhl, (int)STRLEN(culhl)); } if (numhl != NULL) { - if (*numhl == NUL) - sp->sn_num_hl = 0; - else - sp->sn_num_hl = syn_check_group(numhl, (int)STRLEN(numhl)); + if (*numhl == NUL) + sp->sn_num_hl = 0; + else + sp->sn_num_hl = syn_check_group(numhl, (int)STRLEN(numhl)); } return OK; @@ -1125,7 +1105,7 @@ sign_define_by_name( /* * Return TRUE if sign "name" exists. */ - int +int sign_exists_by_name(char_u *name) { return sign_find(name, NULL) != NULL; @@ -1134,18 +1114,18 @@ sign_exists_by_name(char_u *name) /* * Free the sign specified by 'name'. */ - int +int sign_undefine_by_name(char_u *name, int give_error) { - sign_T *sp_prev; - sign_T *sp; + sign_T *sp_prev; + sign_T *sp; sp = sign_find(name, &sp_prev); if (sp == NULL) { - if (give_error) - semsg(_(e_unknown_sign_str), name); - return FAIL; + if (give_error) + semsg(_(e_unknown_sign_str), name); + return FAIL; } sign_undefine(sp, sp_prev); @@ -1155,85 +1135,83 @@ sign_undefine_by_name(char_u *name, int give_error) /* * List the signs matching 'name' */ - static void +static void sign_list_by_name(char_u *name) { - sign_T *sp; + sign_T *sp; sp = sign_find(name, NULL); if (sp != NULL) - sign_list_defined(sp); + sign_list_defined(sp); else - semsg(_(e_unknown_sign_str), name); + semsg(_(e_unknown_sign_str), name); } - static void +static void may_force_numberwidth_recompute(buf_T *buf, int unplace) { - tabpage_T *tp; - win_T *wp; + tabpage_T *tp; + win_T *wp; FOR_ALL_TAB_WINDOWS(tp, wp) - if (wp->w_buffer == buf - && (wp->w_p_nu || wp->w_p_rnu) - && (unplace || wp->w_nrwidth_width < 2) - && (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u')) - wp->w_nrwidth_line_count = 0; + if (wp->w_buffer == buf && (wp->w_p_nu || wp->w_p_rnu) && + (unplace || wp->w_nrwidth_width < 2) && + (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u')) + wp->w_nrwidth_line_count = 0; } /* * Place a sign at the specified file location or update a sign. */ - int -sign_place( - int *sign_id, - char_u *sign_group, - char_u *sign_name, - buf_T *buf, - linenr_T lnum, - int prio) +int +sign_place(int *sign_id, + char_u *sign_group, + char_u *sign_name, + buf_T *buf, + linenr_T lnum, + int prio) { - sign_T *sp; + sign_T *sp; // Check for reserved character '*' in group name if (sign_group != NULL && (*sign_group == '*' || *sign_group == '\0')) - return FAIL; + return FAIL; FOR_ALL_SIGNS(sp) - if (STRCMP(sp->sn_name, sign_name) == 0) - break; + if (STRCMP(sp->sn_name, sign_name) == 0) + break; if (sp == NULL) { - semsg(_(e_unknown_sign_str), sign_name); - return FAIL; + semsg(_(e_unknown_sign_str), sign_name); + return FAIL; } if (*sign_id == 0) - *sign_id = sign_group_get_next_signid(buf, sign_group); + *sign_id = sign_group_get_next_signid(buf, sign_group); // Use the default priority value for this sign. if (prio == -1) - prio = (sp->sn_priority != -1) ? sp->sn_priority : SIGN_DEF_PRIO; + prio = (sp->sn_priority != -1) ? sp->sn_priority : SIGN_DEF_PRIO; if (lnum > 0) - // ":sign place {id} line={lnum} name={name} file={fname}": - // place a sign - buf_addsign(buf, *sign_id, sign_group, prio, lnum, sp->sn_typenr); + // ":sign place {id} line={lnum} name={name} file={fname}": + // place a sign + buf_addsign(buf, *sign_id, sign_group, prio, lnum, sp->sn_typenr); else - // ":sign place {id} file={fname}": change sign type and/or priority - lnum = buf_change_sign_type(buf, *sign_id, sign_group, sp->sn_typenr, - prio); + // ":sign place {id} file={fname}": change sign type and/or priority + lnum = buf_change_sign_type(buf, *sign_id, sign_group, sp->sn_typenr, + prio); if (lnum > 0) { - redraw_buf_line_later(buf, lnum); + redraw_buf_line_later(buf, lnum); - // When displaying signs in the 'number' column, if the width of the - // number column is less than 2, then force recomputing the width. - may_force_numberwidth_recompute(buf, FALSE); + // When displaying signs in the 'number' column, if the width of the + // number column is less than 2, then force recomputing the width. + may_force_numberwidth_recompute(buf, FALSE); } else { - semsg(_(e_not_possible_to_change_sign_str), sign_name); - return FAIL; + semsg(_(e_not_possible_to_change_sign_str), sign_name); + return FAIL; } return OK; @@ -1242,33 +1220,33 @@ sign_place( /* * Unplace the specified sign */ - static int +static int sign_unplace(int sign_id, char_u *sign_group, buf_T *buf, linenr_T atlnum) { - if (buf->b_signlist == NULL) // No signs in the buffer - return OK; + if (buf->b_signlist == NULL) // No signs in the buffer + return OK; if (sign_id == 0) { - // Delete all the signs in the specified buffer - redraw_buf_later(buf, UPD_NOT_VALID); - buf_delete_signs(buf, sign_group); + // Delete all the signs in the specified buffer + redraw_buf_later(buf, UPD_NOT_VALID); + buf_delete_signs(buf, sign_group); } else { - linenr_T lnum; + linenr_T lnum; - // Delete only the specified signs - lnum = buf_delsign(buf, atlnum, sign_id, sign_group); - if (lnum == 0) - return FAIL; + // Delete only the specified signs + lnum = buf_delsign(buf, atlnum, sign_id, sign_group); + if (lnum == 0) + return FAIL; } // When all the signs in a buffer are removed, force recomputing the // number column width (if enabled) in all the windows displaying the // buffer if 'signcolumn' is set to 'number' in that window. if (buf->b_signlist == NULL) - may_force_numberwidth_recompute(buf, TRUE); + may_force_numberwidth_recompute(buf, TRUE); return OK; } @@ -1276,54 +1254,54 @@ sign_unplace(int sign_id, char_u *sign_group, buf_T *buf, linenr_T atlnum) /* * Unplace the sign at the current cursor line. */ - static void +static void sign_unplace_at_cursor(char_u *groupname) { - int id = -1; + int id = -1; id = buf_findsign_id(curwin->w_buffer, curwin->w_cursor.lnum, groupname); if (id > 0) - sign_unplace(id, groupname, curwin->w_buffer, curwin->w_cursor.lnum); + sign_unplace(id, groupname, curwin->w_buffer, curwin->w_cursor.lnum); else - emsg(_(e_missing_sign_number)); + emsg(_(e_missing_sign_number)); } /* * Jump to a sign. */ - static linenr_T +static linenr_T sign_jump(int sign_id, char_u *sign_group, buf_T *buf) { - linenr_T lnum; + linenr_T lnum; if ((lnum = buf_findsign(buf, sign_id, sign_group)) <= 0) { - semsg(_(e_invalid_sign_id_nr), sign_id); - return -1; + semsg(_(e_invalid_sign_id_nr), sign_id); + return -1; } // goto a sign ... if (buf_jump_open_win(buf) != NULL) - { // ... in a current window - curwin->w_cursor.lnum = lnum; - check_cursor_lnum(); - beginline(BL_WHITE); + { // ... in a current window + curwin->w_cursor.lnum = lnum; + check_cursor_lnum(); + beginline(BL_WHITE); } else - { // ... not currently in a window - char_u *cmd; - - if (buf->b_fname == NULL) - { - emsg(_(e_cannot_jump_to_buffer_that_does_not_have_name)); - return -1; - } - cmd = alloc(STRLEN(buf->b_fname) + 25); - if (cmd == NULL) - return -1; - sprintf((char *)cmd, "e +%ld %s", (long)lnum, buf->b_fname); - do_cmdline_cmd(cmd); - vim_free(cmd); + { // ... not currently in a window + char_u *cmd; + + if (buf->b_fname == NULL) + { + emsg(_(e_cannot_jump_to_buffer_that_does_not_have_name)); + return -1; + } + cmd = alloc(STRLEN(buf->b_fname) + 25); + if (cmd == NULL) + return -1; + sprintf((char *)cmd, "e +%ld %s", (long)lnum, buf->b_fname); + do_cmdline_cmd(cmd); + vim_free(cmd); } # ifdef FEAT_FOLDING foldOpenCursor(); @@ -1335,72 +1313,73 @@ sign_jump(int sign_id, char_u *sign_group, buf_T *buf) /* * ":sign define {name} ..." command */ - static void +static void sign_define_cmd(char_u *sign_name, char_u *cmdline) { - char_u *arg; - char_u *p = cmdline; - char_u *icon = NULL; - char_u *text = NULL; - char_u *linehl = NULL; - char_u *texthl = NULL; - char_u *culhl = NULL; - char_u *numhl = NULL; - int prio = -1; - int failed = FALSE; + char_u *arg; + char_u *p = cmdline; + char_u *icon = NULL; + char_u *text = NULL; + char_u *linehl = NULL; + char_u *texthl = NULL; + char_u *culhl = NULL; + char_u *numhl = NULL; + int prio = -1; + int failed = FALSE; // set values for a defined sign. for (;;) { - arg = skipwhite(p); - if (*arg == NUL) - break; - p = skiptowhite_esc(arg); - if (STRNCMP(arg, "icon=", 5) == 0) - { - arg += 5; - icon = vim_strnsave(arg, p - arg); - } - else if (STRNCMP(arg, "text=", 5) == 0) - { - arg += 5; - text = vim_strnsave(arg, p - arg); - } - else if (STRNCMP(arg, "linehl=", 7) == 0) - { - arg += 7; - linehl = vim_strnsave(arg, p - arg); - } - else if (STRNCMP(arg, "texthl=", 7) == 0) - { - arg += 7; - texthl = vim_strnsave(arg, p - arg); - } - else if (STRNCMP(arg, "culhl=", 6) == 0) - { - arg += 6; - culhl = vim_strnsave(arg, p - arg); - } - else if (STRNCMP(arg, "numhl=", 6) == 0) - { - arg += 6; - numhl = vim_strnsave(arg, p - arg); - } - else if (STRNCMP(arg, "priority=", 9) == 0) - { - arg += 9; - prio = atoi((char *)arg); - } - else - { - semsg(_(e_invalid_argument_str), arg); - failed = TRUE; - break; - } + arg = skipwhite(p); + if (*arg == NUL) + break; + p = skiptowhite_esc(arg); + if (STRNCMP(arg, "icon=", 5) == 0) + { + arg += 5; + icon = vim_strnsave(arg, p - arg); + } + else if (STRNCMP(arg, "text=", 5) == 0) + { + arg += 5; + text = vim_strnsave(arg, p - arg); + } + else if (STRNCMP(arg, "linehl=", 7) == 0) + { + arg += 7; + linehl = vim_strnsave(arg, p - arg); + } + else if (STRNCMP(arg, "texthl=", 7) == 0) + { + arg += 7; + texthl = vim_strnsave(arg, p - arg); + } + else if (STRNCMP(arg, "culhl=", 6) == 0) + { + arg += 6; + culhl = vim_strnsave(arg, p - arg); + } + else if (STRNCMP(arg, "numhl=", 6) == 0) + { + arg += 6; + numhl = vim_strnsave(arg, p - arg); + } + else if (STRNCMP(arg, "priority=", 9) == 0) + { + arg += 9; + prio = atoi((char *)arg); + } + else + { + semsg(_(e_invalid_argument_str), arg); + failed = TRUE; + break; + } } if (!failed) - sign_define_by_name(sign_name, icon, linehl, text, texthl, culhl, numhl, prio); + sign_define_by_name(sign_name, icon, linehl, text, texthl, culhl, numhl, + prio); vim_free(icon); vim_free(text); @@ -1413,109 +1392,106 @@ sign_define_cmd(char_u *sign_name, char_u *cmdline) /* * ":sign place" command */ - static void -sign_place_cmd( - buf_T *buf, - linenr_T lnum, - char_u *sign_name, - int id, - char_u *group, - int prio) +static void +sign_place_cmd(buf_T *buf, + linenr_T lnum, + char_u *sign_name, + int id, + char_u *group, + int prio) { if (id <= 0) { - // List signs placed in a file/buffer - // :sign place file={fname} - // :sign place group={group} file={fname} - // :sign place group=* file={fname} - // :sign place buffer={nr} - // :sign place group={group} buffer={nr} - // :sign place group=* buffer={nr} - // :sign place - // :sign place group={group} - // :sign place group=* - if (lnum >= 0 || sign_name != NULL - || (group != NULL && *group == '\0')) - emsg(_(e_invalid_argument)); - else - sign_list_placed(buf, group); + // List signs placed in a file/buffer + // :sign place file={fname} + // :sign place group={group} file={fname} + // :sign place group=* file={fname} + // :sign place buffer={nr} + // :sign place group={group} buffer={nr} + // :sign place group=* buffer={nr} + // :sign place + // :sign place group={group} + // :sign place group=* + if (lnum >= 0 || sign_name != NULL || (group != NULL && *group == '\0')) + emsg(_(e_invalid_argument)); + else + sign_list_placed(buf, group); } else { - // Place a new sign - if (sign_name == NULL || buf == NULL - || (group != NULL && *group == '\0')) - { - emsg(_(e_invalid_argument)); - return; - } + // Place a new sign + if (sign_name == NULL || buf == NULL || + (group != NULL && *group == '\0')) + { + emsg(_(e_invalid_argument)); + return; + } - sign_place(&id, group, sign_name, buf, lnum, prio); + sign_place(&id, group, sign_name, buf, lnum, prio); } } /* * ":sign unplace" command */ - static void -sign_unplace_cmd( - buf_T *buf, - linenr_T lnum, - char_u *sign_name, - int id, - char_u *group) +static void +sign_unplace_cmd(buf_T *buf, + linenr_T lnum, + char_u *sign_name, + int id, + char_u *group) { if (lnum >= 0 || sign_name != NULL || (group != NULL && *group == '\0')) { - emsg(_(e_invalid_argument)); - return; + emsg(_(e_invalid_argument)); + return; } if (id == -2) { - if (buf != NULL) - // :sign unplace * file={fname} - // :sign unplace * group={group} file={fname} - // :sign unplace * group=* file={fname} - // :sign unplace * buffer={nr} - // :sign unplace * group={group} buffer={nr} - // :sign unplace * group=* buffer={nr} - sign_unplace(0, group, buf, 0); - else - // :sign unplace * - // :sign unplace * group={group} - // :sign unplace * group=* - FOR_ALL_BUFFERS(buf) - if (buf->b_signlist != NULL) - buf_delete_signs(buf, group); + if (buf != NULL) + // :sign unplace * file={fname} + // :sign unplace * group={group} file={fname} + // :sign unplace * group=* file={fname} + // :sign unplace * buffer={nr} + // :sign unplace * group={group} buffer={nr} + // :sign unplace * group=* buffer={nr} + sign_unplace(0, group, buf, 0); + else + // :sign unplace * + // :sign unplace * group={group} + // :sign unplace * group=* + FOR_ALL_BUFFERS(buf) + if (buf->b_signlist != NULL) + buf_delete_signs(buf, group); } else { - if (buf != NULL) - // :sign unplace {id} file={fname} - // :sign unplace {id} group={group} file={fname} - // :sign unplace {id} group=* file={fname} - // :sign unplace {id} buffer={nr} - // :sign unplace {id} group={group} buffer={nr} - // :sign unplace {id} group=* buffer={nr} - sign_unplace(id, group, buf, 0); - else - { - if (id == -1) - { - // :sign unplace group={group} - // :sign unplace group=* - sign_unplace_at_cursor(group); - } - else - { - // :sign unplace {id} - // :sign unplace {id} group={group} - // :sign unplace {id} group=* - FOR_ALL_BUFFERS(buf) - sign_unplace(id, group, buf, 0); - } - } + if (buf != NULL) + // :sign unplace {id} file={fname} + // :sign unplace {id} group={group} file={fname} + // :sign unplace {id} group=* file={fname} + // :sign unplace {id} buffer={nr} + // :sign unplace {id} group={group} buffer={nr} + // :sign unplace {id} group=* buffer={nr} + sign_unplace(id, group, buf, 0); + else + { + if (id == -1) + { + // :sign unplace group={group} + // :sign unplace group=* + sign_unplace_at_cursor(group); + } + else + { + // :sign unplace {id} + // :sign unplace {id} group={group} + // :sign unplace {id} group=* + FOR_ALL_BUFFERS(buf) + sign_unplace(id, group, buf, 0); + } + } } } @@ -1526,27 +1502,26 @@ sign_unplace_cmd( * :sign jump {id} group={group} file={fname} * :sign jump {id} group={group} buffer={nr} */ - static void -sign_jump_cmd( - buf_T *buf, - linenr_T lnum, - char_u *sign_name, - int id, - char_u *group) +static void +sign_jump_cmd(buf_T *buf, + linenr_T lnum, + char_u *sign_name, + int id, + char_u *group) { if (sign_name == NULL && group == NULL && id == -1) { - emsg(_(e_argument_required)); - return; + emsg(_(e_argument_required)); + return; } - if (buf == NULL || (group != NULL && *group == '\0') - || lnum >= 0 || sign_name != NULL) + if (buf == NULL || (group != NULL && *group == '\0') || lnum >= 0 || + sign_name != NULL) { - // File or buffer is not specified or an empty group is used - // or a line number or a sign name is specified. - emsg(_(e_invalid_argument)); - return; + // File or buffer is not specified or an empty group is used + // or a line number or a sign name is specified. + emsg(_(e_invalid_argument)); + return; } (void)sign_jump(id, group, buf); } @@ -1557,115 +1532,114 @@ sign_jump_cmd( * The supported arguments are: line={lnum} name={name} group={group} * priority={prio} and file={fname} or buffer={nr}. */ - static int -parse_sign_cmd_args( - int cmd, - char_u *arg, - char_u **sign_name, - int *signid, - char_u **group, - int *prio, - buf_T **buf, - linenr_T *lnum) -{ - char_u *arg1; - char_u *name; - char_u *filename = NULL; - int lnum_arg = FALSE; +static int +parse_sign_cmd_args(int cmd, + char_u *arg, + char_u **sign_name, + int *signid, + char_u **group, + int *prio, + buf_T **buf, + linenr_T *lnum) +{ + char_u *arg1; + char_u *name; + char_u *filename = NULL; + int lnum_arg = FALSE; // first arg could be placed sign id arg1 = arg; if (VIM_ISDIGIT(*arg)) { - *signid = getdigits(&arg); - if (!VIM_ISWHITE(*arg) && *arg != NUL) - { - *signid = -1; - arg = arg1; - } - else - arg = skipwhite(arg); + *signid = getdigits(&arg); + if (!VIM_ISWHITE(*arg) && *arg != NUL) + { + *signid = -1; + arg = arg1; + } + else + arg = skipwhite(arg); } while (*arg != NUL) { - if (STRNCMP(arg, "line=", 5) == 0) - { - arg += 5; - *lnum = atoi((char *)arg); - arg = skiptowhite(arg); - lnum_arg = TRUE; - } - else if (STRNCMP(arg, "*", 1) == 0 && cmd == SIGNCMD_UNPLACE) - { - if (*signid != -1) - { - emsg(_(e_invalid_argument)); - return FAIL; - } - *signid = -2; - arg = skiptowhite(arg + 1); - } - else if (STRNCMP(arg, "name=", 5) == 0) - { - arg += 5; - name = arg; - arg = skiptowhite(arg); - if (*arg != NUL) - *arg++ = NUL; - while (name[0] == '0' && name[1] != NUL) - ++name; - *sign_name = name; - } - else if (STRNCMP(arg, "group=", 6) == 0) - { - arg += 6; - *group = arg; - arg = skiptowhite(arg); - if (*arg != NUL) - *arg++ = NUL; - } - else if (STRNCMP(arg, "priority=", 9) == 0) - { - arg += 9; - *prio = atoi((char *)arg); - arg = skiptowhite(arg); - } - else if (STRNCMP(arg, "file=", 5) == 0) - { - arg += 5; - filename = arg; - *buf = buflist_findname_exp(arg); - break; - } - else if (STRNCMP(arg, "buffer=", 7) == 0) - { - arg += 7; - filename = arg; - *buf = buflist_findnr((int)getdigits(&arg)); - if (*skipwhite(arg) != NUL) - semsg(_(e_trailing_characters_str), arg); - break; - } - else - { - emsg(_(e_invalid_argument)); - return FAIL; - } - arg = skipwhite(arg); + if (STRNCMP(arg, "line=", 5) == 0) + { + arg += 5; + *lnum = atoi((char *)arg); + arg = skiptowhite(arg); + lnum_arg = TRUE; + } + else if (STRNCMP(arg, "*", 1) == 0 && cmd == SIGNCMD_UNPLACE) + { + if (*signid != -1) + { + emsg(_(e_invalid_argument)); + return FAIL; + } + *signid = -2; + arg = skiptowhite(arg + 1); + } + else if (STRNCMP(arg, "name=", 5) == 0) + { + arg += 5; + name = arg; + arg = skiptowhite(arg); + if (*arg != NUL) + *arg++ = NUL; + while (name[0] == '0' && name[1] != NUL) + ++name; + *sign_name = name; + } + else if (STRNCMP(arg, "group=", 6) == 0) + { + arg += 6; + *group = arg; + arg = skiptowhite(arg); + if (*arg != NUL) + *arg++ = NUL; + } + else if (STRNCMP(arg, "priority=", 9) == 0) + { + arg += 9; + *prio = atoi((char *)arg); + arg = skiptowhite(arg); + } + else if (STRNCMP(arg, "file=", 5) == 0) + { + arg += 5; + filename = arg; + *buf = buflist_findname_exp(arg); + break; + } + else if (STRNCMP(arg, "buffer=", 7) == 0) + { + arg += 7; + filename = arg; + *buf = buflist_findnr((int)getdigits(&arg)); + if (*skipwhite(arg) != NUL) + semsg(_(e_trailing_characters_str), arg); + break; + } + else + { + emsg(_(e_invalid_argument)); + return FAIL; + } + arg = skipwhite(arg); } if (filename != NULL && *buf == NULL) { - semsg(_(e_invalid_buffer_name_str), filename); - return FAIL; + semsg(_(e_invalid_buffer_name_str), filename); + return FAIL; } // If the filename is not supplied for the sign place or the sign jump // command, then use the current buffer. - if (filename == NULL && ((cmd == SIGNCMD_PLACE && lnum_arg) - || cmd == SIGNCMD_JUMP)) - *buf = curwin->w_buffer; + if (filename == NULL && + ((cmd == SIGNCMD_PLACE && lnum_arg) || cmd == SIGNCMD_JUMP)) + *buf = curwin->w_buffer; return OK; } @@ -1673,126 +1647,126 @@ parse_sign_cmd_args( /* * ":sign" command */ - void +void ex_sign(exarg_T *eap) { - char_u *arg = eap->arg; - char_u *p; - int idx; - sign_T *sp; - buf_T *buf = NULL; + char_u *arg = eap->arg; + char_u *p; + int idx; + sign_T *sp; + buf_T *buf = NULL; // Parse the subcommand. p = skiptowhite(arg); idx = sign_cmd_idx(arg, p); if (idx == SIGNCMD_LAST) { - semsg(_(e_unknown_sign_command_str), arg); - return; + semsg(_(e_unknown_sign_command_str), arg); + return; } arg = skipwhite(p); if (idx <= SIGNCMD_LIST) { - // Define, undefine or list signs. - if (idx == SIGNCMD_LIST && *arg == NUL) - { - // ":sign list": list all defined signs - for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next) - sign_list_defined(sp); - } - else if (*arg == NUL) - emsg(_(e_missing_sign_name)); - else - { - char_u *name; - - // Isolate the sign name. If it's a number skip leading zeroes, - // so that "099" and "99" are the same sign. But keep "0". - p = skiptowhite(arg); - if (*p != NUL) - *p++ = NUL; - while (arg[0] == '0' && arg[1] != NUL) - ++arg; - name = vim_strsave(arg); - - if (idx == SIGNCMD_DEFINE) - sign_define_cmd(name, p); - else if (idx == SIGNCMD_LIST) - // ":sign list {name}" - sign_list_by_name(name); - else - // ":sign undefine {name}" - sign_undefine_by_name(name, TRUE); - - vim_free(name); - return; - } + // Define, undefine or list signs. + if (idx == SIGNCMD_LIST && *arg == NUL) + { + // ":sign list": list all defined signs + for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next) + sign_list_defined(sp); + } + else if (*arg == NUL) + emsg(_(e_missing_sign_name)); + else + { + char_u *name; + + // Isolate the sign name. If it's a number skip leading zeroes, + // so that "099" and "99" are the same sign. But keep "0". + p = skiptowhite(arg); + if (*p != NUL) + *p++ = NUL; + while (arg[0] == '0' && arg[1] != NUL) + ++arg; + name = vim_strsave(arg); + + if (idx == SIGNCMD_DEFINE) + sign_define_cmd(name, p); + else if (idx == SIGNCMD_LIST) + // ":sign list {name}" + sign_list_by_name(name); + else + // ":sign undefine {name}" + sign_undefine_by_name(name, TRUE); + + vim_free(name); + return; + } } else { - int id = -1; - linenr_T lnum = -1; - char_u *sign_name = NULL; - char_u *group = NULL; - int prio = -1; + int id = -1; + linenr_T lnum = -1; + char_u *sign_name = NULL; + char_u *group = NULL; + int prio = -1; - // Parse command line arguments - if (parse_sign_cmd_args(idx, arg, &sign_name, &id, &group, &prio, - &buf, &lnum) == FAIL) - return; + // Parse command line arguments + if (parse_sign_cmd_args(idx, arg, &sign_name, &id, &group, &prio, &buf, + &lnum) == FAIL) + return; - if (idx == SIGNCMD_PLACE) - sign_place_cmd(buf, lnum, sign_name, id, group, prio); - else if (idx == SIGNCMD_UNPLACE) - sign_unplace_cmd(buf, lnum, sign_name, id, group); - else if (idx == SIGNCMD_JUMP) - sign_jump_cmd(buf, lnum, sign_name, id, group); + if (idx == SIGNCMD_PLACE) + sign_place_cmd(buf, lnum, sign_name, id, group, prio); + else if (idx == SIGNCMD_UNPLACE) + sign_unplace_cmd(buf, lnum, sign_name, id, group); + else if (idx == SIGNCMD_JUMP) + sign_jump_cmd(buf, lnum, sign_name, id, group); } } /* * Return information about a specified sign */ - static void +static void sign_getinfo(sign_T *sp, dict_T *retdict) { - char_u *p; + char_u *p; dict_add_string(retdict, "name", sp->sn_name); if (sp->sn_icon != NULL) - dict_add_string(retdict, "icon", sp->sn_icon); + dict_add_string(retdict, "icon", sp->sn_icon); if (sp->sn_text != NULL) - dict_add_string(retdict, "text", sp->sn_text); + dict_add_string(retdict, "text", sp->sn_text); if (sp->sn_priority > 0) - dict_add_number(retdict, "priority", sp->sn_priority); + dict_add_number(retdict, "priority", sp->sn_priority); if (sp->sn_line_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); - if (p == NULL) - p = (char_u *)"NONE"; - dict_add_string(retdict, "linehl", p); + p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); + if (p == NULL) + p = (char_u *)"NONE"; + dict_add_string(retdict, "linehl", p); } if (sp->sn_text_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); - if (p == NULL) - p = (char_u *)"NONE"; - dict_add_string(retdict, "texthl", p); + p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); + if (p == NULL) + p = (char_u *)"NONE"; + dict_add_string(retdict, "texthl", p); } if (sp->sn_cul_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); - if (p == NULL) - p = (char_u *)"NONE"; - dict_add_string(retdict, "culhl", p); + p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); + if (p == NULL) + p = (char_u *)"NONE"; + dict_add_string(retdict, "culhl", p); } if (sp->sn_num_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); - if (p == NULL) - p = (char_u *)"NONE"; - dict_add_string(retdict, "numhl", p); + p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); + if (p == NULL) + p = (char_u *)"NONE"; + dict_add_string(retdict, "numhl", p); } } @@ -1800,86 +1774,85 @@ sign_getinfo(sign_T *sp, dict_T *retdict) * If 'name' is NULL, return a list of all the defined signs. * Otherwise, return information about the specified sign. */ - static void +static void sign_getlist(char_u *name, list_T *retlist) { - sign_T *sp = first_sign; - dict_T *dict; + sign_T *sp = first_sign; + dict_T *dict; if (name != NULL) { - sp = sign_find(name, NULL); - if (sp == NULL) - return; + sp = sign_find(name, NULL); + if (sp == NULL) + return; } for (; sp != NULL && !got_int; sp = sp->sn_next) { - if ((dict = dict_alloc_id(aid_sign_getlist)) == NULL) - return; - if (list_append_dict(retlist, dict) == FAIL) - return; - sign_getinfo(sp, dict); + if ((dict = dict_alloc_id(aid_sign_getlist)) == NULL) + return; + if (list_append_dict(retlist, dict) == FAIL) + return; + sign_getinfo(sp, dict); - if (name != NULL) // handle only the specified sign - break; + if (name != NULL) // handle only the specified sign + break; } } /* * Returns information about signs placed in a buffer as list of dicts. */ - void +void get_buffer_signs(buf_T *buf, list_T *l) { - sign_entry_T *sign; - dict_T *d; + sign_entry_T *sign; + dict_T *d; FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if ((d = sign_get_info(sign)) != NULL) - list_append_dict(l, d); + if ((d = sign_get_info(sign)) != NULL) + list_append_dict(l, d); } } /* * Return information about all the signs placed in a buffer */ - static void -sign_get_placed_in_buf( - buf_T *buf, - linenr_T lnum, - int sign_id, - char_u *sign_group, - list_T *retlist) +static void +sign_get_placed_in_buf(buf_T *buf, + linenr_T lnum, + int sign_id, + char_u *sign_group, + list_T *retlist) { - dict_T *d; - list_T *l; - sign_entry_T *sign; - dict_T *sdict; + dict_T *d; + list_T *l; + sign_entry_T *sign; + dict_T *sdict; if ((d = dict_alloc_id(aid_sign_getplaced_dict)) == NULL) - return; + return; list_append_dict(retlist, d); dict_add_number(d, "bufnr", (long)buf->b_fnum); if ((l = list_alloc_id(aid_sign_getplaced_list)) == NULL) - return; + return; dict_add_list(d, "signs", l); FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if (!sign_in_group(sign, sign_group)) - continue; - if ((lnum == 0 && sign_id == 0) - || (sign_id == 0 && lnum == sign->se_lnum) - || (lnum == 0 && sign_id == sign->se_id) - || (lnum == sign->se_lnum && sign_id == sign->se_id)) - { - if ((sdict = sign_get_info(sign)) != NULL) - list_append_dict(l, sdict); - } + if (!sign_in_group(sign, sign_group)) + continue; + if ((lnum == 0 && sign_id == 0) || + (sign_id == 0 && lnum == sign->se_lnum) || + (lnum == 0 && sign_id == sign->se_id) || + (lnum == sign->se_lnum && sign_id == sign->se_id)) + { + if ((sdict = sign_get_info(sign)) != NULL) + list_append_dict(l, sdict); + } } } @@ -1888,21 +1861,20 @@ sign_get_placed_in_buf( * sign placed at the line number. If 'lnum' is zero, return all the signs * placed in 'buf'. If 'buf' is NULL, return signs placed in all the buffers. */ - static void -sign_get_placed( - buf_T *buf, - linenr_T lnum, - int sign_id, - char_u *sign_group, - list_T *retlist) +static void +sign_get_placed(buf_T *buf, + linenr_T lnum, + int sign_id, + char_u *sign_group, + list_T *retlist) { if (buf != NULL) - sign_get_placed_in_buf(buf, lnum, sign_id, sign_group, retlist); + sign_get_placed_in_buf(buf, lnum, sign_id, sign_group, retlist); else { - FOR_ALL_BUFFERS(buf) - if (buf->b_signlist != NULL) - sign_get_placed_in_buf(buf, 0, sign_id, sign_group, retlist); + FOR_ALL_BUFFERS(buf) + if (buf->b_signlist != NULL) + sign_get_placed_in_buf(buf, 0, sign_id, sign_group, retlist); } } @@ -1911,90 +1883,90 @@ sign_get_placed( * Allocate the icons. Called when the GUI has started. Allows defining * signs before it starts. */ - void +void sign_gui_started(void) { - sign_T *sp; + sign_T *sp; FOR_ALL_SIGNS(sp) - if (sp->sn_icon != NULL) - sp->sn_image = gui_mch_register_sign(sp->sn_icon); + if (sp->sn_icon != NULL) + sp->sn_image = gui_mch_register_sign(sp->sn_icon); } # endif /* * List one sign. */ - static void +static void sign_list_defined(sign_T *sp) { - char_u *p; - char lbuf[MSG_BUF_LEN]; + char_u *p; + char lbuf[MSG_BUF_LEN]; smsg("sign %s", sp->sn_name); if (sp->sn_icon != NULL) { - msg_puts(" icon="); - msg_outtrans(sp->sn_icon); + msg_puts(" icon="); + msg_outtrans(sp->sn_icon); # ifdef FEAT_SIGN_ICONS - if (sp->sn_image == NULL) - msg_puts(_(" (NOT FOUND)")); + if (sp->sn_image == NULL) + msg_puts(_(" (NOT FOUND)")); # else - msg_puts(_(" (not supported)")); + msg_puts(_(" (not supported)")); # endif } if (sp->sn_text != NULL) { - msg_puts(" text="); - msg_outtrans(sp->sn_text); + msg_puts(" text="); + msg_outtrans(sp->sn_text); } if (sp->sn_priority > 0) { - vim_snprintf(lbuf, MSG_BUF_LEN, " priority=%d", sp->sn_priority); - msg_puts(lbuf); + vim_snprintf(lbuf, MSG_BUF_LEN, " priority=%d", sp->sn_priority); + msg_puts(lbuf); } if (sp->sn_line_hl > 0) { - msg_puts(" linehl="); - p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); - if (p == NULL) - msg_puts("NONE"); - else - msg_puts((char *)p); + msg_puts(" linehl="); + p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); + if (p == NULL) + msg_puts("NONE"); + else + msg_puts((char *)p); } if (sp->sn_text_hl > 0) { - msg_puts(" texthl="); - p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); - if (p == NULL) - msg_puts("NONE"); - else - msg_puts((char *)p); + msg_puts(" texthl="); + p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); + if (p == NULL) + msg_puts("NONE"); + else + msg_puts((char *)p); } if (sp->sn_cul_hl > 0) { - msg_puts(" culhl="); - p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); - if (p == NULL) - msg_puts("NONE"); - else - msg_puts((char *)p); + msg_puts(" culhl="); + p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); + if (p == NULL) + msg_puts("NONE"); + else + msg_puts((char *)p); } if (sp->sn_num_hl > 0) { - msg_puts(" numhl="); - p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); - if (p == NULL) - msg_puts("NONE"); - else - msg_puts((char *)p); + msg_puts(" numhl="); + p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); + if (p == NULL) + msg_puts("NONE"); + else + msg_puts((char *)p); } } /* * Undefine a sign and free its memory. */ - static void +static void sign_undefine(sign_T *sp, sign_T *sp_prev) { vim_free(sp->sn_name); @@ -2002,28 +1974,27 @@ sign_undefine(sign_T *sp, sign_T *sp_prev) # ifdef FEAT_SIGN_ICONS if (sp->sn_image != NULL) { - out_flush(); - gui_mch_destroy_sign(sp->sn_image); + out_flush(); + gui_mch_destroy_sign(sp->sn_image); } # endif vim_free(sp->sn_text); if (sp_prev == NULL) - first_sign = sp->sn_next; + first_sign = sp->sn_next; else - sp_prev->sn_next = sp->sn_next; + sp_prev->sn_next = sp->sn_next; vim_free(sp); } # if defined(FEAT_SIGN_ICONS) || defined(PROTO) - void * -sign_get_image( - int typenr) // the attribute which may have a sign +void * +sign_get_image(int typenr) // the attribute which may have a sign { - sign_T *sp; + sign_T *sp; FOR_ALL_SIGNS(sp) - if (sp->sn_typenr == typenr) - return sp->sn_image; + if (sp->sn_typenr == typenr) + return sp->sn_image; return NULL; } # endif @@ -2031,66 +2002,66 @@ sign_get_image( /* * Undefine/free all signs. */ - void +void free_signs(void) { while (first_sign != NULL) - sign_undefine(first_sign, NULL); + sign_undefine(first_sign, NULL); } static enum { - EXP_SUBCMD, // expand :sign sub-commands - EXP_DEFINE, // expand :sign define {name} args - EXP_PLACE, // expand :sign place {id} args - EXP_LIST, // expand :sign place args - EXP_UNPLACE, // expand :sign unplace" - EXP_SIGN_NAMES, // expand with name of placed signs - EXP_SIGN_GROUPS // expand with name of placed sign groups + EXP_SUBCMD, // expand :sign sub-commands + EXP_DEFINE, // expand :sign define {name} args + EXP_PLACE, // expand :sign place {id} args + EXP_LIST, // expand :sign place args + EXP_UNPLACE, // expand :sign unplace" + EXP_SIGN_NAMES, // expand with name of placed signs + EXP_SIGN_GROUPS // expand with name of placed sign groups } expand_what; /* * Return the n'th sign name (used for command line completion) */ - static char_u * +static char_u * get_nth_sign_name(int idx) { - int current_idx; - sign_T *sp; + int current_idx; + sign_T *sp; // Complete with name of signs already defined current_idx = 0; FOR_ALL_SIGNS(sp) - if (current_idx++ == idx) - return sp->sn_name; + if (current_idx++ == idx) + return sp->sn_name; return NULL; } /* * Return the n'th sign group name (used for command line completion) */ - static char_u * +static char_u * get_nth_sign_group_name(int idx) { - int current_idx; - int todo; - hashitem_T *hi; - signgroup_T *group; + int current_idx; + int todo; + hashitem_T *hi; + signgroup_T *group; // Complete with name of sign groups already defined current_idx = 0; todo = (int)sg_table.ht_used; FOR_ALL_HASHTAB_ITEMS(&sg_table, hi, todo) { - if (!HASHITEM_EMPTY(hi)) - { - --todo; - if (current_idx++ == idx) - { - group = HI2SG(hi); - return group->sg_name; - } - } + if (!HASHITEM_EMPTY(hi)) + { + --todo; + if (current_idx++ == idx) + { + group = HI2SG(hi); + return group->sg_name; + } + } } return NULL; } @@ -2099,64 +2070,55 @@ get_nth_sign_group_name(int idx) * Function given to ExpandGeneric() to obtain the sign command * expansion. */ - char_u * +char_u * get_sign_name(expand_T *xp UNUSED, int idx) { switch (expand_what) { - case EXP_SUBCMD: - return (char_u *)cmds[idx]; - case EXP_DEFINE: - { - char *define_arg[] = - { - "culhl=", "icon=", "linehl=", "numhl=", "text=", "texthl=", "priority=", - NULL - }; - return (char_u *)define_arg[idx]; - } - case EXP_PLACE: - { - char *place_arg[] = - { - "line=", "name=", "group=", "priority=", "file=", - "buffer=", NULL - }; - return (char_u *)place_arg[idx]; - } - case EXP_LIST: - { - char *list_arg[] = - { - "group=", "file=", "buffer=", NULL - }; - return (char_u *)list_arg[idx]; - } - case EXP_UNPLACE: - { - char *unplace_arg[] = { "group=", "file=", "buffer=", NULL }; - return (char_u *)unplace_arg[idx]; - } - case EXP_SIGN_NAMES: - return get_nth_sign_name(idx); - case EXP_SIGN_GROUPS: - return get_nth_sign_group_name(idx); - default: - return NULL; + case EXP_SUBCMD: + return (char_u *)cmds[idx]; + case EXP_DEFINE: + { + char *define_arg[] = { "culhl=", "icon=", "linehl=", "numhl=", + "text=", "texthl=", "priority=", NULL }; + return (char_u *)define_arg[idx]; + } + case EXP_PLACE: + { + char *place_arg[] = { "line=", "name=", "group=", "priority=", + "file=", "buffer=", NULL }; + return (char_u *)place_arg[idx]; + } + case EXP_LIST: + { + char *list_arg[] = { "group=", "file=", "buffer=", NULL }; + return (char_u *)list_arg[idx]; + } + case EXP_UNPLACE: + { + char *unplace_arg[] = { "group=", "file=", "buffer=", NULL }; + return (char_u *)unplace_arg[idx]; + } + case EXP_SIGN_NAMES: + return get_nth_sign_name(idx); + case EXP_SIGN_GROUPS: + return get_nth_sign_group_name(idx); + default: + return NULL; } } /* * Handle command line completion for :sign command. */ - void +void set_context_in_sign_cmd(expand_T *xp, char_u *arg) { - char_u *p; - char_u *end_subcmd; - char_u *last; - int cmd_idx; - char_u *begin_subcmd_args; + char_u *p; + char_u *end_subcmd; + char_u *last; + int cmd_idx; + char_u *begin_subcmd_args; // Default: expand subcommands. xp->xp_context = EXPAND_SIGN; @@ -2165,108 +2127,109 @@ set_context_in_sign_cmd(expand_T *xp, char_u *arg) end_subcmd = skiptowhite(arg); if (*end_subcmd == NUL) - // expand subcmd name - // :sign {subcmd} - return; + // expand subcmd name + // :sign {subcmd} + return; cmd_idx = sign_cmd_idx(arg, end_subcmd); // :sign {subcmd} {subcmd_args} - // | - // begin_subcmd_args + // | + // begin_subcmd_args begin_subcmd_args = skipwhite(end_subcmd); // expand last argument of subcmd // :sign define {name} {args}... - // | - // p + // | + // p // Loop until reaching last argument. p = begin_subcmd_args; do { - p = skipwhite(p); - last = p; - p = skiptowhite(p); - } while (*p != NUL); + p = skipwhite(p); + last = p; + p = skiptowhite(p); + } + while (*p != NUL); p = vim_strchr(last, '='); // :sign define {name} {args}... {last}= - // | | - // last p + // | | + // last p if (p == NULL) { - // Expand last argument name (before equal sign). - xp->xp_pattern = last; - switch (cmd_idx) - { - case SIGNCMD_DEFINE: - expand_what = EXP_DEFINE; - break; - case SIGNCMD_PLACE: - // List placed signs - if (VIM_ISDIGIT(*begin_subcmd_args)) - // :sign place {id} {args}... - expand_what = EXP_PLACE; - else - // :sign place {args}... - expand_what = EXP_LIST; - break; - case SIGNCMD_LIST: - case SIGNCMD_UNDEFINE: - // :sign list - // :sign undefine - expand_what = EXP_SIGN_NAMES; - break; - case SIGNCMD_JUMP: - case SIGNCMD_UNPLACE: - expand_what = EXP_UNPLACE; - break; - default: - xp->xp_context = EXPAND_NOTHING; - } + // Expand last argument name (before equal sign). + xp->xp_pattern = last; + switch (cmd_idx) + { + case SIGNCMD_DEFINE: + expand_what = EXP_DEFINE; + break; + case SIGNCMD_PLACE: + // List placed signs + if (VIM_ISDIGIT(*begin_subcmd_args)) + // :sign place {id} {args}... + expand_what = EXP_PLACE; + else + // :sign place {args}... + expand_what = EXP_LIST; + break; + case SIGNCMD_LIST: + case SIGNCMD_UNDEFINE: + // :sign list + // :sign undefine + expand_what = EXP_SIGN_NAMES; + break; + case SIGNCMD_JUMP: + case SIGNCMD_UNPLACE: + expand_what = EXP_UNPLACE; + break; + default: + xp->xp_context = EXPAND_NOTHING; + } } else { - // Expand last argument value (after equal sign). - xp->xp_pattern = p + 1; - switch (cmd_idx) - { - case SIGNCMD_DEFINE: - if (STRNCMP(last, "texthl", 6) == 0 - || STRNCMP(last, "linehl", 6) == 0 - || STRNCMP(last, "culhl", 5) == 0 - || STRNCMP(last, "numhl", 5) == 0) - xp->xp_context = EXPAND_HIGHLIGHT; - else if (STRNCMP(last, "icon", 4) == 0) - xp->xp_context = EXPAND_FILES; - else - xp->xp_context = EXPAND_NOTHING; - break; - case SIGNCMD_PLACE: - if (STRNCMP(last, "name", 4) == 0) - expand_what = EXP_SIGN_NAMES; - else if (STRNCMP(last, "group", 5) == 0) - expand_what = EXP_SIGN_GROUPS; - else if (STRNCMP(last, "file", 4) == 0) - xp->xp_context = EXPAND_BUFFERS; - else - xp->xp_context = EXPAND_NOTHING; - break; - case SIGNCMD_UNPLACE: - case SIGNCMD_JUMP: - if (STRNCMP(last, "group", 5) == 0) - expand_what = EXP_SIGN_GROUPS; - else if (STRNCMP(last, "file", 4) == 0) - xp->xp_context = EXPAND_BUFFERS; - else - xp->xp_context = EXPAND_NOTHING; - break; - default: - xp->xp_context = EXPAND_NOTHING; - } + // Expand last argument value (after equal sign). + xp->xp_pattern = p + 1; + switch (cmd_idx) + { + case SIGNCMD_DEFINE: + if (STRNCMP(last, "texthl", 6) == 0 || + STRNCMP(last, "linehl", 6) == 0 || + STRNCMP(last, "culhl", 5) == 0 || + STRNCMP(last, "numhl", 5) == 0) + xp->xp_context = EXPAND_HIGHLIGHT; + else if (STRNCMP(last, "icon", 4) == 0) + xp->xp_context = EXPAND_FILES; + else + xp->xp_context = EXPAND_NOTHING; + break; + case SIGNCMD_PLACE: + if (STRNCMP(last, "name", 4) == 0) + expand_what = EXP_SIGN_NAMES; + else if (STRNCMP(last, "group", 5) == 0) + expand_what = EXP_SIGN_GROUPS; + else if (STRNCMP(last, "file", 4) == 0) + xp->xp_context = EXPAND_BUFFERS; + else + xp->xp_context = EXPAND_NOTHING; + break; + case SIGNCMD_UNPLACE: + case SIGNCMD_JUMP: + if (STRNCMP(last, "group", 5) == 0) + expand_what = EXP_SIGN_GROUPS; + else if (STRNCMP(last, "file", 4) == 0) + xp->xp_context = EXPAND_BUFFERS; + else + xp->xp_context = EXPAND_NOTHING; + break; + default: + xp->xp_context = EXPAND_NOTHING; + } } } @@ -2274,42 +2237,43 @@ set_context_in_sign_cmd(expand_T *xp, char_u *arg) * Define a sign using the attributes in 'dict'. Returns 0 on success and -1 on * failure. */ - static int +static int sign_define_from_dict(char_u *name_arg, dict_T *dict) { - char_u *name = NULL; - char_u *icon = NULL; - char_u *linehl = NULL; - char_u *text = NULL; - char_u *texthl = NULL; - char_u *culhl = NULL; - char_u *numhl = NULL; - int prio = -1; - int retval = -1; + char_u *name = NULL; + char_u *icon = NULL; + char_u *linehl = NULL; + char_u *text = NULL; + char_u *texthl = NULL; + char_u *culhl = NULL; + char_u *numhl = NULL; + int prio = -1; + int retval = -1; if (name_arg == NULL) { - if (dict == NULL) - return -1; - name = dict_get_string(dict, "name", TRUE); + if (dict == NULL) + return -1; + name = dict_get_string(dict, "name", TRUE); } else - name = vim_strsave(name_arg); + name = vim_strsave(name_arg); if (name == NULL || name[0] == NUL) - goto cleanup; + goto cleanup; if (dict != NULL) { - icon = dict_get_string(dict, "icon", TRUE); - linehl = dict_get_string(dict, "linehl", TRUE); - text = dict_get_string(dict, "text", TRUE); - texthl = dict_get_string(dict, "texthl", TRUE); - culhl = dict_get_string(dict, "culhl", TRUE); - numhl = dict_get_string(dict, "numhl", TRUE); - prio = dict_get_number_def(dict, "priority", -1); + icon = dict_get_string(dict, "icon", TRUE); + linehl = dict_get_string(dict, "linehl", TRUE); + text = dict_get_string(dict, "text", TRUE); + texthl = dict_get_string(dict, "texthl", TRUE); + culhl = dict_get_string(dict, "culhl", TRUE); + numhl = dict_get_string(dict, "numhl", TRUE); + prio = dict_get_number_def(dict, "priority", -1); } - if (sign_define_by_name(name, icon, linehl, text, texthl, culhl, numhl, prio) == OK) - retval = 0; + if (sign_define_by_name(name, icon, linehl, text, texthl, culhl, numhl, + prio) == OK) + retval = 0; cleanup: vim_free(name); @@ -2327,44 +2291,43 @@ sign_define_from_dict(char_u *name_arg, dict_T *dict) * Define multiple signs using attributes from list 'l' and store the return * values in 'retlist'. */ - static void +static void sign_define_multiple(list_T *l, list_T *retlist) { - listitem_T *li; - int retval; + listitem_T *li; + int retval; FOR_ALL_LIST_ITEMS(l, li) { - retval = -1; - if (li->li_tv.v_type == VAR_DICT) - retval = sign_define_from_dict(NULL, li->li_tv.vval.v_dict); - else - emsg(_(e_dictionary_required)); - list_append_number(retlist, retval); + retval = -1; + if (li->li_tv.v_type == VAR_DICT) + retval = sign_define_from_dict(NULL, li->li_tv.vval.v_dict); + else + emsg(_(e_dictionary_required)); + list_append_number(retlist, retval); } } /* * "sign_define()" function */ - void +void f_sign_define(typval_T *argvars, typval_T *rettv) { - char_u *name; + char_u *name; - if (in_vim9script() - && (check_for_string_or_list_arg(argvars, 0) == FAIL - || check_for_opt_dict_arg(argvars, 1) == FAIL)) - return; + if (in_vim9script() && (check_for_string_or_list_arg(argvars, 0) == FAIL || + check_for_opt_dict_arg(argvars, 1) == FAIL)) + return; if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_UNKNOWN) { - // Define multiple signs - if (rettv_list_alloc(rettv) == FAIL) - return; + // Define multiple signs + if (rettv_list_alloc(rettv) == FAIL) + return; - sign_define_multiple(argvars[0].vval.v_list, rettv->vval.v_list); - return; + sign_define_multiple(argvars[0].vval.v_list, rettv->vval.v_list); + return; } // Define a single sign @@ -2372,31 +2335,31 @@ f_sign_define(typval_T *argvars, typval_T *rettv) name = tv_get_string_chk(&argvars[0]); if (name == NULL) - return; + return; if (check_for_opt_dict_arg(argvars, 1) == FAIL) - return; + return; - rettv->vval.v_number = sign_define_from_dict(name, - argvars[1].v_type == VAR_DICT ? argvars[1].vval.v_dict : NULL); + rettv->vval.v_number = sign_define_from_dict( + name, argvars[1].v_type == VAR_DICT ? argvars[1].vval.v_dict : NULL); } /* * "sign_getdefined()" function */ - void +void f_sign_getdefined(typval_T *argvars, typval_T *rettv) { - char_u *name = NULL; + char_u *name = NULL; if (rettv_list_alloc_id(rettv, aid_sign_getdefined) == FAIL) - return; + return; if (in_vim9script() && check_for_opt_string_arg(argvars, 0) == FAIL) - return; + return; if (argvars[0].v_type != VAR_UNKNOWN) - name = tv_get_string(&argvars[0]); + name = tv_get_string(&argvars[0]); sign_getlist(name, rettv->vval.v_list); } @@ -2404,62 +2367,61 @@ f_sign_getdefined(typval_T *argvars, typval_T *rettv) /* * "sign_getplaced()" function */ - void +void f_sign_getplaced(typval_T *argvars, typval_T *rettv) { - buf_T *buf = NULL; - dict_T *dict; - dictitem_T *di; - linenr_T lnum = 0; - int sign_id = 0; - char_u *group = NULL; - int notanum = FALSE; + buf_T *buf = NULL; + dict_T *dict; + dictitem_T *di; + linenr_T lnum = 0; + int sign_id = 0; + char_u *group = NULL; + int notanum = FALSE; if (rettv_list_alloc_id(rettv, aid_sign_getplaced) == FAIL) - return; + return; - if (in_vim9script() - && (check_for_opt_buffer_arg(argvars, 0) == FAIL - || (argvars[0].v_type != VAR_UNKNOWN - && check_for_opt_dict_arg(argvars, 1) == FAIL))) - return; + if (in_vim9script() && (check_for_opt_buffer_arg(argvars, 0) == FAIL || + (argvars[0].v_type != VAR_UNKNOWN && + check_for_opt_dict_arg(argvars, 1) == FAIL))) + return; if (argvars[0].v_type != VAR_UNKNOWN) { - // get signs placed in the specified buffer - buf = get_buf_arg(&argvars[0]); - if (buf == NULL) - return; - - if (argvars[1].v_type != VAR_UNKNOWN) - { - if (check_for_nonnull_dict_arg(argvars, 1) == FAIL) - return; - dict = argvars[1].vval.v_dict; - if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) - { - // get signs placed at this line - (void)tv_get_number_chk(&di->di_tv, ¬anum); - if (notanum) - return; - lnum = tv_get_lnum(&di->di_tv); - } - if ((di = dict_find(dict, (char_u *)"id", -1)) != NULL) - { - // get sign placed with this identifier - sign_id = (int)tv_get_number_chk(&di->di_tv, ¬anum); - if (notanum) - return; - } - if ((di = dict_find(dict, (char_u *)"group", -1)) != NULL) - { - group = tv_get_string_chk(&di->di_tv); - if (group == NULL) - return; - if (*group == '\0') // empty string means global group - group = NULL; - } - } + // get signs placed in the specified buffer + buf = get_buf_arg(&argvars[0]); + if (buf == NULL) + return; + + if (argvars[1].v_type != VAR_UNKNOWN) + { + if (check_for_nonnull_dict_arg(argvars, 1) == FAIL) + return; + dict = argvars[1].vval.v_dict; + if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) + { + // get signs placed at this line + (void)tv_get_number_chk(&di->di_tv, ¬anum); + if (notanum) + return; + lnum = tv_get_lnum(&di->di_tv); + } + if ((di = dict_find(dict, (char_u *)"id", -1)) != NULL) + { + // get sign placed with this identifier + sign_id = (int)tv_get_number_chk(&di->di_tv, ¬anum); + if (notanum) + return; + } + if ((di = dict_find(dict, (char_u *)"group", -1)) != NULL) + { + group = tv_get_string_chk(&di->di_tv); + if (group == NULL) + return; + if (*group == '\0') // empty string means global group + group = NULL; + } + } } sign_get_placed(buf, lnum, sign_id, group, rettv->vval.v_list); @@ -2468,49 +2430,48 @@ f_sign_getplaced(typval_T *argvars, typval_T *rettv) /* * "sign_jump()" function */ - void +void f_sign_jump(typval_T *argvars, typval_T *rettv) { - int sign_id; - char_u *sign_group = NULL; - buf_T *buf; - int notanum = FALSE; + int sign_id; + char_u *sign_group = NULL; + buf_T *buf; + int notanum = FALSE; rettv->vval.v_number = -1; - if (in_vim9script() - && (check_for_number_arg(argvars, 0) == FAIL - || check_for_string_arg(argvars, 1) == FAIL - || check_for_buffer_arg(argvars, 2) == FAIL)) - return; + if (in_vim9script() && (check_for_number_arg(argvars, 0) == FAIL || + check_for_string_arg(argvars, 1) == FAIL || + check_for_buffer_arg(argvars, 2) == FAIL)) + return; // Sign identifier sign_id = (int)tv_get_number_chk(&argvars[0], ¬anum); if (notanum) - return; + return; if (sign_id <= 0) { - emsg(_(e_invalid_argument)); - return; + emsg(_(e_invalid_argument)); + return; } // Sign group sign_group = tv_get_string_chk(&argvars[1]); if (sign_group == NULL) - return; + return; if (sign_group[0] == '\0') - sign_group = NULL; // global sign group + sign_group = NULL; // global sign group else { - sign_group = vim_strsave(sign_group); - if (sign_group == NULL) - return; + sign_group = vim_strsave(sign_group); + if (sign_group == NULL) + return; } // Buffer to place the sign buf = get_buf_arg(&argvars[2]); if (buf == NULL) - goto cleanup; + goto cleanup; rettv->vval.v_number = sign_jump(sign_id, sign_group, buf); @@ -2522,118 +2483,117 @@ f_sign_jump(typval_T *argvars, typval_T *rettv) * Place a new sign using the values specified in dict 'dict'. Returns the sign * identifier if successfully placed, otherwise returns 0. */ - static int -sign_place_from_dict( - typval_T *id_tv, - typval_T *group_tv, - typval_T *name_tv, - typval_T *buf_tv, - dict_T *dict) -{ - int sign_id = 0; - char_u *group = NULL; - char_u *sign_name = NULL; - buf_T *buf = NULL; - dictitem_T *di; - linenr_T lnum = 0; - int prio = -1; - int notanum = FALSE; - int ret_sign_id = -1; +static int +sign_place_from_dict(typval_T *id_tv, + typval_T *group_tv, + typval_T *name_tv, + typval_T *buf_tv, + dict_T *dict) +{ + int sign_id = 0; + char_u *group = NULL; + char_u *sign_name = NULL; + buf_T *buf = NULL; + dictitem_T *di; + linenr_T lnum = 0; + int prio = -1; + int notanum = FALSE; + int ret_sign_id = -1; // sign identifier if (id_tv == NULL) { - di = dict_find(dict, (char_u *)"id", -1); - if (di != NULL) - id_tv = &di->di_tv; + di = dict_find(dict, (char_u *)"id", -1); + if (di != NULL) + id_tv = &di->di_tv; } if (id_tv == NULL) - sign_id = 0; + sign_id = 0; else { - sign_id = tv_get_number_chk(id_tv, ¬anum); - if (notanum) - return -1; - if (sign_id < 0) - { - emsg(_(e_invalid_argument)); - return -1; - } + sign_id = tv_get_number_chk(id_tv, ¬anum); + if (notanum) + return -1; + if (sign_id < 0) + { + emsg(_(e_invalid_argument)); + return -1; + } } // sign group if (group_tv == NULL) { - di = dict_find(dict, (char_u *)"group", -1); - if (di != NULL) - group_tv = &di->di_tv; + di = dict_find(dict, (char_u *)"group", -1); + if (di != NULL) + group_tv = &di->di_tv; } if (group_tv == NULL) - group = NULL; // global group + group = NULL; // global group else { - group = tv_get_string_chk(group_tv); - if (group == NULL) - goto cleanup; - if (group[0] == '\0') // global sign group - group = NULL; - else - { - group = vim_strsave(group); - if (group == NULL) - return -1; - } + group = tv_get_string_chk(group_tv); + if (group == NULL) + goto cleanup; + if (group[0] == '\0') // global sign group + group = NULL; + else + { + group = vim_strsave(group); + if (group == NULL) + return -1; + } } // sign name if (name_tv == NULL) { - di = dict_find(dict, (char_u *)"name", -1); - if (di != NULL) - name_tv = &di->di_tv; + di = dict_find(dict, (char_u *)"name", -1); + if (di != NULL) + name_tv = &di->di_tv; } if (name_tv == NULL) - goto cleanup; + goto cleanup; sign_name = tv_get_string_chk(name_tv); if (sign_name == NULL) - goto cleanup; + goto cleanup; // buffer to place the sign if (buf_tv == NULL) { - di = dict_find(dict, (char_u *)"buffer", -1); - if (di != NULL) - buf_tv = &di->di_tv; + di = dict_find(dict, (char_u *)"buffer", -1); + if (di != NULL) + buf_tv = &di->di_tv; } if (buf_tv == NULL) - goto cleanup; + goto cleanup; buf = get_buf_arg(buf_tv); if (buf == NULL) - goto cleanup; + goto cleanup; // line number of the sign di = dict_find(dict, (char_u *)"lnum", -1); if (di != NULL) { - lnum = tv_get_lnum(&di->di_tv); - if (lnum <= 0) - { - emsg(_(e_invalid_argument)); - goto cleanup; - } + lnum = tv_get_lnum(&di->di_tv); + if (lnum <= 0) + { + emsg(_(e_invalid_argument)); + goto cleanup; + } } // sign priority di = dict_find(dict, (char_u *)"priority", -1); if (di != NULL) { - prio = (int)tv_get_number_chk(&di->di_tv, ¬anum); - if (notanum) - goto cleanup; + prio = (int)tv_get_number_chk(&di->di_tv, ¬anum); + if (notanum) + goto cleanup; } if (sign_place(&sign_id, group, sign_name, buf, lnum, prio) == OK) - ret_sign_id = sign_id; + ret_sign_id = sign_id; cleanup: vim_free(group); @@ -2644,122 +2604,120 @@ sign_place_from_dict( /* * "sign_place()" function */ - void +void f_sign_place(typval_T *argvars, typval_T *rettv) { - dict_T *dict = NULL; + dict_T *dict = NULL; rettv->vval.v_number = -1; - if (in_vim9script() - && (check_for_number_arg(argvars, 0) == FAIL - || check_for_string_arg(argvars, 1) == FAIL - || check_for_string_arg(argvars, 2) == FAIL - || check_for_buffer_arg(argvars, 3) == FAIL - || check_for_opt_dict_arg(argvars, 4) == FAIL)) - return; + if (in_vim9script() && (check_for_number_arg(argvars, 0) == FAIL || + check_for_string_arg(argvars, 1) == FAIL || + check_for_string_arg(argvars, 2) == FAIL || + check_for_buffer_arg(argvars, 3) == FAIL || + check_for_opt_dict_arg(argvars, 4) == FAIL)) + return; if (argvars[4].v_type != VAR_UNKNOWN) { - if (check_for_nonnull_dict_arg(argvars, 4) == FAIL) - return; - dict = argvars[4].vval.v_dict; + if (check_for_nonnull_dict_arg(argvars, 4) == FAIL) + return; + dict = argvars[4].vval.v_dict; } rettv->vval.v_number = sign_place_from_dict(&argvars[0], &argvars[1], - &argvars[2], &argvars[3], dict); + &argvars[2], &argvars[3], dict); } /* * "sign_placelist()" function. Place multiple signs. */ - void +void f_sign_placelist(typval_T *argvars, typval_T *rettv) { - listitem_T *li; - int sign_id; + listitem_T *li; + int sign_id; if (rettv_list_alloc(rettv) == FAIL) - return; + return; if (in_vim9script() && check_for_list_arg(argvars, 0) == FAIL) - return; + return; if (check_for_list_arg(argvars, 0) == FAIL) - return; + return; // Process the List of sign attributes FOR_ALL_LIST_ITEMS(argvars[0].vval.v_list, li) { - sign_id = -1; - if (li->li_tv.v_type == VAR_DICT) - sign_id = sign_place_from_dict(NULL, NULL, NULL, NULL, - li->li_tv.vval.v_dict); - else - emsg(_(e_dictionary_required)); - list_append_number(rettv->vval.v_list, sign_id); + sign_id = -1; + if (li->li_tv.v_type == VAR_DICT) + sign_id = sign_place_from_dict(NULL, NULL, NULL, NULL, + li->li_tv.vval.v_dict); + else + emsg(_(e_dictionary_required)); + list_append_number(rettv->vval.v_list, sign_id); } } /* * Undefine multiple signs */ - static void +static void sign_undefine_multiple(list_T *l, list_T *retlist) { - char_u *name; - listitem_T *li; - int retval; + char_u *name; + listitem_T *li; + int retval; FOR_ALL_LIST_ITEMS(l, li) { - retval = -1; - name = tv_get_string_chk(&li->li_tv); - if (name != NULL && (sign_undefine_by_name(name, TRUE) == OK)) - retval = 0; - list_append_number(retlist, retval); + retval = -1; + name = tv_get_string_chk(&li->li_tv); + if (name != NULL && (sign_undefine_by_name(name, TRUE) == OK)) + retval = 0; + list_append_number(retlist, retval); } } /* * "sign_undefine()" function */ - void +void f_sign_undefine(typval_T *argvars, typval_T *rettv) { char_u *name; - if (in_vim9script() - && check_for_opt_string_or_list_arg(argvars, 0) == FAIL) - return; + if (in_vim9script() && check_for_opt_string_or_list_arg(argvars, 0) == FAIL) + return; if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_UNKNOWN) { - // Undefine multiple signs - if (rettv_list_alloc(rettv) == FAIL) - return; + // Undefine multiple signs + if (rettv_list_alloc(rettv) == FAIL) + return; - sign_undefine_multiple(argvars[0].vval.v_list, rettv->vval.v_list); - return; + sign_undefine_multiple(argvars[0].vval.v_list, rettv->vval.v_list); + return; } rettv->vval.v_number = -1; if (argvars[0].v_type == VAR_UNKNOWN) { - // Free all the signs - free_signs(); - rettv->vval.v_number = 0; + // Free all the signs + free_signs(); + rettv->vval.v_number = 0; } else { - // Free only the specified sign - name = tv_get_string_chk(&argvars[0]); - if (name == NULL) - return; + // Free only the specified sign + name = tv_get_string_chk(&argvars[0]); + if (name == NULL) + return; - if (sign_undefine_by_name(name, TRUE) == OK) - rettv->vval.v_number = 0; + if (sign_undefine_by_name(name, TRUE) == OK) + rettv->vval.v_number = 0; } } @@ -2767,61 +2725,61 @@ f_sign_undefine(typval_T *argvars, typval_T *rettv) * Unplace the sign with attributes specified in 'dict'. Returns 0 on success * and -1 on failure. */ - static int +static int sign_unplace_from_dict(typval_T *group_tv, dict_T *dict) { - dictitem_T *di; - int sign_id = 0; - buf_T *buf = NULL; - char_u *group = NULL; - int retval = -1; + dictitem_T *di; + int sign_id = 0; + buf_T *buf = NULL; + char_u *group = NULL; + int retval = -1; // sign group if (group_tv != NULL) - group = tv_get_string(group_tv); + group = tv_get_string(group_tv); else - group = dict_get_string(dict, "group", FALSE); + group = dict_get_string(dict, "group", FALSE); if (group != NULL) { - if (group[0] == '\0') // global sign group - group = NULL; - else - { - group = vim_strsave(group); - if (group == NULL) - return -1; - } + if (group[0] == '\0') // global sign group + group = NULL; + else + { + group = vim_strsave(group); + if (group == NULL) + return -1; + } } if (dict != NULL) { - if ((di = dict_find(dict, (char_u *)"buffer", -1)) != NULL) - { - buf = get_buf_arg(&di->di_tv); - if (buf == NULL) - goto cleanup; - } - if (dict_has_key(dict, "id")) - { - sign_id = dict_get_number(dict, "id"); - if (sign_id <= 0) - { - emsg(_(e_invalid_argument)); - goto cleanup; - } - } + if ((di = dict_find(dict, (char_u *)"buffer", -1)) != NULL) + { + buf = get_buf_arg(&di->di_tv); + if (buf == NULL) + goto cleanup; + } + if (dict_has_key(dict, "id")) + { + sign_id = dict_get_number(dict, "id"); + if (sign_id <= 0) + { + emsg(_(e_invalid_argument)); + goto cleanup; + } + } } if (buf == NULL) { - // Delete the sign in all the buffers - retval = 0; - FOR_ALL_BUFFERS(buf) - if (sign_unplace(sign_id, group, buf, 0) != OK) - retval = -1; + // Delete the sign in all the buffers + retval = 0; + FOR_ALL_BUFFERS(buf) + if (sign_unplace(sign_id, group, buf, 0) != OK) + retval = -1; } else if (sign_unplace(sign_id, group, buf, 0) == OK) - retval = 0; + retval = 0; cleanup: vim_free(group); @@ -2829,14 +2787,14 @@ sign_unplace_from_dict(typval_T *group_tv, dict_T *dict) return retval; } - sign_entry_T * +sign_entry_T * get_first_valid_sign(win_T *wp) { sign_entry_T *sign = wp->w_buffer->b_signlist; # ifdef FEAT_PROP_POPUP while (sign != NULL && !sign_group_for_window(sign, wp)) - sign = sign->se_next; + sign = sign->se_next; # endif return sign; } @@ -2844,42 +2802,42 @@ get_first_valid_sign(win_T *wp) /* * Return TRUE when window "wp" has a column to draw signs in. */ - int +int signcolumn_on(win_T *wp) { // If 'signcolumn' is set to 'number', signs are displayed in the 'number' // column (if present). Otherwise signs are to be displayed in the sign // column. if (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u') - return get_first_valid_sign(wp) != NULL && !wp->w_p_nu && !wp->w_p_rnu; + return get_first_valid_sign(wp) != NULL && !wp->w_p_nu && !wp->w_p_rnu; if (*wp->w_p_scl == 'n') - return FALSE; + return FALSE; if (*wp->w_p_scl == 'y') - return TRUE; + return TRUE; return (get_first_valid_sign(wp) != NULL # ifdef FEAT_NETBEANS_INTG - || wp->w_buffer->b_has_sign_column + || wp->w_buffer->b_has_sign_column # endif - ); + ); } /* * "sign_unplace()" function */ - void +void f_sign_unplace(typval_T *argvars, typval_T *rettv) { - dict_T *dict = NULL; + dict_T *dict = NULL; rettv->vval.v_number = -1; - if ((check_for_string_arg(argvars, 0) == FAIL - || check_for_opt_dict_arg(argvars, 1) == FAIL)) - return; + if ((check_for_string_arg(argvars, 0) == FAIL || + check_for_opt_dict_arg(argvars, 1) == FAIL)) + return; if (argvars[1].v_type != VAR_UNKNOWN) - dict = argvars[1].vval.v_dict; + dict = argvars[1].vval.v_dict; rettv->vval.v_number = sign_unplace_from_dict(&argvars[0], dict); } @@ -2887,29 +2845,29 @@ f_sign_unplace(typval_T *argvars, typval_T *rettv) /* * "sign_unplacelist()" function */ - void +void f_sign_unplacelist(typval_T *argvars, typval_T *rettv) { - listitem_T *li; - int retval; + listitem_T *li; + int retval; if (rettv_list_alloc(rettv) == FAIL) - return; + return; if (in_vim9script() && check_for_list_arg(argvars, 0) == FAIL) - return; + return; if (check_for_list_arg(argvars, 0) == FAIL) - return; + return; FOR_ALL_LIST_ITEMS(argvars[0].vval.v_list, li) { - retval = -1; - if (li->li_tv.v_type == VAR_DICT) - retval = sign_unplace_from_dict(NULL, li->li_tv.vval.v_dict); - else - emsg(_(e_dictionary_required)); - list_append_number(rettv->vval.v_list, retval); + retval = -1; + if (li->li_tv.v_type == VAR_DICT) + retval = sign_unplace_from_dict(NULL, li->li_tv.vval.v_dict); + else + emsg(_(e_dictionary_required)); + list_append_number(rettv->vval.v_list, retval); } } diff --git a/src/sound.c b/src/sound.c index 04a16513f5..7b4d98405a 100644 --- a/src/sound.c +++ b/src/sound.c @@ -15,36 +15,37 @@ #if defined(FEAT_SOUND) || defined(PROTO) -static long sound_id = 0; +static long sound_id = 0; // soundcb_T is typedef'ed in proto/sound.pro -struct soundcb_S { - callback_T snd_callback; -#ifdef MSWIN +struct soundcb_S +{ + callback_T snd_callback; +# ifdef MSWIN MCIDEVICEID snd_device_id; - long snd_id; -#endif - soundcb_T *snd_next; + long snd_id; +# endif + soundcb_T *snd_next; }; -static soundcb_T *first_callback = NULL; +static soundcb_T *first_callback = NULL; /* * Return TRUE when a sound callback has been created, it may be invoked when * the sound finishes playing. Also see has_sound_callback_in_queue(). */ - int +int has_any_sound_callback(void) { return first_callback != NULL; } - static soundcb_T * +static soundcb_T * get_sound_callback(typval_T *arg) { - callback_T callback; - soundcb_T *soundcb; + callback_T callback; + soundcb_T *soundcb; if (arg->v_type == VAR_UNKNOWN) return NULL; @@ -70,11 +71,11 @@ get_sound_callback(typval_T *arg) /* * Call "soundcb" with proper parameters. */ - void +void call_sound_callback(soundcb_T *soundcb, long snd_id, int result) { - typval_T argv[3]; - typval_T rettv; + typval_T argv[3]; + typval_T rettv; argv[0].v_type = VAR_NUMBER; argv[0].vval.v_number = snd_id; @@ -89,11 +90,11 @@ call_sound_callback(soundcb_T *soundcb, long snd_id, int result) /* * Delete "soundcb" from the list of pending callbacks. */ - void +void delete_sound_callback(soundcb_T *soundcb) { - soundcb_T *p; - soundcb_T *prev = NULL; + soundcb_T *p; + soundcb_T *prev = NULL; for (p = first_callback; p != NULL; prev = p, p = p->snd_next) if (p == soundcb) @@ -108,23 +109,24 @@ delete_sound_callback(soundcb_T *soundcb) } } -#if defined(HAVE_CANBERRA) || defined(PROTO) +# if defined(HAVE_CANBERRA) || defined(PROTO) /* * Sound implementation for Linux/Unix using libcanberra. */ -# include +# include -static ca_context *context = NULL; +static ca_context *context = NULL; // Structure to store info about a sound callback to be invoked soon. typedef struct soundcb_queue_S soundcb_queue_T; -struct soundcb_queue_S { - soundcb_queue_T *scb_next; - uint32_t scb_id; // ID of the sound - int scb_result; // CA_ value - soundcb_T *scb_callback; // function to call +struct soundcb_queue_S +{ + soundcb_queue_T *scb_next; + uint32_t scb_id; // ID of the sound + int scb_result; // CA_ value + soundcb_T *scb_callback; // function to call }; // Queue of callbacks to invoke from the main loop. @@ -135,14 +137,13 @@ static soundcb_queue_T *callback_queue = NULL; * That is because the callback may be called from another thread and invoking * another sound function may cause trouble. */ - static void -sound_callback( - ca_context *c UNUSED, - uint32_t id, - int error_code, - void *userdata) +static void +sound_callback(ca_context *c UNUSED, + uint32_t id, + int error_code, + void *userdata) { - soundcb_T *soundcb = (soundcb_T *)userdata; + soundcb_T *soundcb = (soundcb_T *)userdata; soundcb_queue_T *scb; scb = ALLOC_ONE(soundcb_queue_T); @@ -152,16 +153,17 @@ sound_callback( callback_queue = scb; scb->scb_id = id; scb->scb_result = error_code == CA_SUCCESS ? 0 - : error_code == CA_ERROR_CANCELED - || error_code == CA_ERROR_DESTROYED - ? 1 : 2; + : error_code == CA_ERROR_CANCELED || + error_code == CA_ERROR_DESTROYED + ? 1 + : 2; scb->scb_callback = soundcb; } /* * Return TRUE if there is a sound callback to be called. */ - int +int has_sound_callback_in_queue(void) { return callback_queue != NULL; @@ -170,7 +172,7 @@ has_sound_callback_in_queue(void) /* * Invoke queued sound callbacks. */ - void +void invoke_sound_callback(void) { soundcb_queue_T *scb; @@ -188,7 +190,7 @@ invoke_sound_callback(void) redraw_after_callback(TRUE, FALSE); } - static void +static void sound_play_common(typval_T *argvars, typval_T *rettv, int playfile) { if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) @@ -199,17 +201,17 @@ sound_play_common(typval_T *argvars, typval_T *rettv, int playfile) if (context == NULL) return; - soundcb_T *soundcb = get_sound_callback(&argvars[1]); - int res = CA_ERROR_INVALID; + soundcb_T *soundcb = get_sound_callback(&argvars[1]); + int res = CA_ERROR_INVALID; ++sound_id; if (soundcb == NULL) { res = ca_context_play(context, sound_id, - playfile ? CA_PROP_MEDIA_FILENAME : CA_PROP_EVENT_ID, - tv_get_string(&argvars[0]), - CA_PROP_CANBERRA_CACHE_CONTROL, "volatile", - NULL); + playfile ? CA_PROP_MEDIA_FILENAME + : CA_PROP_EVENT_ID, + tv_get_string(&argvars[0]), + CA_PROP_CANBERRA_CACHE_CONTROL, "volatile", NULL); } else { @@ -220,14 +222,14 @@ sound_play_common(typval_T *argvars, typval_T *rettv, int playfile) { if (playfile) ca_proplist_sets(proplist, CA_PROP_MEDIA_FILENAME, - (char *)tv_get_string(&argvars[0])); + (char *)tv_get_string(&argvars[0])); else ca_proplist_sets(proplist, CA_PROP_EVENT_ID, - (char *)tv_get_string(&argvars[0])); + (char *)tv_get_string(&argvars[0])); ca_proplist_sets(proplist, CA_PROP_CANBERRA_CACHE_CONTROL, - "volatile"); + "volatile"); res = ca_context_play_full(context, sound_id, proplist, - sound_callback, soundcb); + sound_callback, soundcb); if (res != CA_SUCCESS) delete_sound_callback(soundcb); @@ -237,7 +239,7 @@ sound_play_common(typval_T *argvars, typval_T *rettv, int playfile) rettv->vval.v_number = res == CA_SUCCESS ? sound_id : 0; } - void +void f_sound_playevent(typval_T *argvars, typval_T *rettv) { sound_play_common(argvars, rettv, FALSE); @@ -246,7 +248,7 @@ f_sound_playevent(typval_T *argvars, typval_T *rettv) /* * implementation of sound_playfile({path} [, {callback}]) */ - void +void f_sound_playfile(typval_T *argvars, typval_T *rettv) { sound_play_common(argvars, rettv, TRUE); @@ -255,7 +257,7 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) /* * implementation of sound_stop({id}) */ - void +void f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) { if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) @@ -268,7 +270,7 @@ f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) /* * implementation of sound_clear() */ - void +void f_sound_clear(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { if (context == NULL) @@ -277,8 +279,8 @@ f_sound_clear(typval_T *argvars UNUSED, typval_T *rettv UNUSED) context = NULL; } -# if defined(EXITFREE) || defined(PROTO) - void +# if defined(EXITFREE) || defined(PROTO) +void sound_free(void) { soundcb_queue_T *scb; @@ -297,9 +299,9 @@ sound_free(void) vim_free(scb); } } -# endif +# endif -#elif defined(MSWIN) +# elif defined(MSWIN) /* * Sound implementation for MS-Windows. @@ -307,30 +309,30 @@ sound_free(void) static HWND g_hWndSound = NULL; - static LRESULT CALLBACK +static LRESULT CALLBACK sound_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { - soundcb_T *p; + soundcb_T *p; switch (message) { case MM_MCINOTIFY: for (p = first_callback; p != NULL; p = p->snd_next) - if (p->snd_device_id == (MCIDEVICEID) lParam) + if (p->snd_device_id == (MCIDEVICEID)lParam) { - char buf[32]; + char buf[32]; vim_snprintf(buf, sizeof(buf), "close sound%06ld", - p->snd_id); + p->snd_id); mciSendStringA(buf, NULL, 0, 0); - long result = wParam == MCI_NOTIFY_SUCCESSFUL ? 0 - : wParam == MCI_NOTIFY_ABORTED ? 1 : 2; + long result = wParam == MCI_NOTIFY_SUCCESSFUL ? 0 + : wParam == MCI_NOTIFY_ABORTED ? 1 + : 2; call_sound_callback(p, p->snd_id, result); delete_sound_callback(p); redraw_after_callback(TRUE, FALSE); - } break; } @@ -338,26 +340,26 @@ sound_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) return DefWindowProc(hwnd, message, wParam, lParam); } - static HWND +static HWND sound_window(void) { if (g_hWndSound == NULL) { LPCSTR clazz = "VimSound"; - WNDCLASS wndclass = { - 0, sound_wndproc, 0, 0, g_hinst, NULL, 0, 0, NULL, clazz }; + WNDCLASS wndclass = { 0, sound_wndproc, 0, 0, g_hinst, NULL, 0, + 0, NULL, clazz }; RegisterClass(&wndclass); - g_hWndSound = CreateWindow(clazz, NULL, 0, 0, 0, 0, 0, - HWND_MESSAGE, NULL, g_hinst, NULL); + g_hWndSound = CreateWindow(clazz, NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, + NULL, g_hinst, NULL); } return g_hWndSound; } - void +void f_sound_playevent(typval_T *argvars, typval_T *rettv) { - WCHAR *wp; + WCHAR *wp; if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) return; @@ -371,16 +373,16 @@ f_sound_playevent(typval_T *argvars, typval_T *rettv) free(wp); } - void +void f_sound_playfile(typval_T *argvars, typval_T *rettv) { - long newid = sound_id + 1; - size_t len; - char_u *p, *filename; - WCHAR *wp; - soundcb_T *soundcb; - char buf[32]; - MCIERROR err; + long newid = sound_id + 1; + size_t len; + char_u *p, *filename; + WCHAR *wp; + soundcb_T *soundcb; + char buf[32]; + MCIERROR err; if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) return; @@ -393,7 +395,8 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) { return; } - vim_snprintf((char *)p, len, "open \"%s\" alias sound%06ld", filename, newid); + vim_snprintf((char *)p, len, "open \"%s\" alias sound%06ld", filename, + newid); wp = enc_to_utf16((char_u *)p, NULL); free(p); @@ -427,11 +430,11 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) mciSendStringA(buf, NULL, 0, NULL); } - void +void f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) { - long id; - char buf[32]; + long id; + char buf[32]; if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) return; @@ -441,15 +444,15 @@ f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) mciSendStringA(buf, NULL, 0, NULL); } - void +void f_sound_clear(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { PlaySoundW(NULL, NULL, 0); mciSendStringA("close all", NULL, 0, NULL); } -# if defined(EXITFREE) - void +# if defined(EXITFREE) +void sound_free(void) { CloseWindow(g_hWndSound); @@ -457,12 +460,12 @@ sound_free(void) while (first_callback != NULL) delete_sound_callback(first_callback); } -# endif +# endif -#elif defined(MACOS_X_DARWIN) +# elif defined(MACOS_X_DARWIN) // Sound implementation for macOS. - static void +static void sound_play_common(typval_T *argvars, typval_T *rettv, bool playfile) { if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) @@ -481,19 +484,19 @@ sound_play_common(typval_T *argvars, typval_T *rettv, bool playfile) rettv->vval.v_number = play_success ? sound_id : 0; } - void +void f_sound_playevent(typval_T *argvars, typval_T *rettv) { sound_play_common(argvars, rettv, false); } - void +void f_sound_playfile(typval_T *argvars, typval_T *rettv) { sound_play_common(argvars, rettv, true); } - void +void f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) { if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) @@ -501,22 +504,22 @@ f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) sound_mch_stop(tv_get_number(&argvars[0])); } - void +void f_sound_clear(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { sound_mch_clear(); } -#if defined(EXITFREE) || defined(PROTO) - void +# if defined(EXITFREE) || defined(PROTO) +void sound_free(void) { sound_mch_free(); while (first_callback != NULL) delete_sound_callback(first_callback); } -#endif +# endif -#endif // MACOS_X_DARWIN +# endif // MACOS_X_DARWIN -#endif // FEAT_SOUND +#endif // FEAT_SOUND diff --git a/src/version.c b/src/version.c index 6b263ea04e..0ffb00120e 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 879, /**/ 878, /**/ From fa41a3ed1e412eb881021b9f03070ce4a7004ee8 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 19 Nov 2024 22:58:40 +0100 Subject: [PATCH 010/244] git: ignore re-formatting commit v9.1.0879 for blame Signed-off-by: Christian Brabandt --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 5888c31fcf..cb635a2f59 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -8,3 +8,5 @@ # Patch v9.1.0829 expanded tabs to spaces in sound.c 8ce738de3fd7192fa6274730594305cde780074c +# Patch v9.1.0879 reformated sound.c and sign.c +3cf094edaff815141d9941b8dba52b9e77d8dfc1 From cb34507b5f85c8877c20379d92ce21d1bb102bea Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 19 Nov 2024 23:02:57 +0100 Subject: [PATCH 011/244] runtime(doc): add helptag for :HelpToc command Signed-off-by: Christian Brabandt --- runtime/doc/helphelp.txt | 4 ++-- runtime/doc/tags | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index 8ade446e6e..3da38ecc51 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 9.1. Last change: 2024 Nov 03 +*helphelp.txt* For Vim version 9.1. Last change: 2024 Nov 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -247,7 +247,7 @@ command: > (requires write permission there): > :helptags $VIMRUNTIME/doc < - *help-TOC* *help-toc-install* + *:HelpToc* *help-TOC* *help-toc-install* If you want to access an interactive table of contents, from any position in the file, you can use the helptoc plugin. Load the plugin with: > diff --git a/runtime/doc/tags b/runtime/doc/tags index 39f279d361..cdb642e3dc 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -2127,6 +2127,7 @@ $quote eval.txt /*$quote* :GnatFind ft_ada.txt /*:GnatFind* :GnatPretty ft_ada.txt /*:GnatPretty* :GnatTags ft_ada.txt /*:GnatTags* +:HelpToc helphelp.txt /*:HelpToc* :Hexplore pi_netrw.txt /*:Hexplore* :LP pi_logipat.txt /*:LP* :LPE pi_logipat.txt /*:LPE* From c8dfcfc53ba5ed69b5d4e534fd7e8694de014e6a Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Tue, 19 Nov 2024 23:05:21 +0100 Subject: [PATCH 012/244] patch 9.1.0880: filetype: C3 files are not recognized Problem: filetype: C3 files are not recognized Solution: detect '*.c3*' files as c3 filetype (Turiiya) closes: #16087 Signed-off-by: Turiiya <34311583+ttytm@users.noreply.github.com> Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 3 +++ src/testdir/test_filetype.vim | 1 + src/version.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 3f93bebb75..ef8c0e922e 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -311,6 +311,9 @@ au BufNewFile,BufRead */.bundle/config setf yaml au BufNewFile,BufRead *.c call dist#ft#FTlpc() au BufNewFile,BufRead *.lpc,*.ulpc setf lpc +" C3 +au BufNewFile,BufRead *.c3,*.c3i,*.c3t setf c3 + " Cairo au BufNewFile,BufRead *.cairo setf cairo diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 17d6a44d7c..001a970aeb 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -144,6 +144,7 @@ def s:GetFilenameChecks(): dict> bzl: ['file.bazel', 'file.bzl', 'WORKSPACE', 'WORKSPACE.bzlmod'], bzr: ['bzr_log.any', 'bzr_log.file'], c: ['enlightenment/file.cfg', 'file.qc', 'file.c', 'some-enlightenment/file.cfg', 'file.mdh', 'file.epro'], + c3: ['file.c3', 'file.c3i', 'file.c3t'], cabal: ['file.cabal'], cabalconfig: ['cabal.config', expand("$HOME/.config/cabal/config")] + WhenConfigHome('$XDG_CONFIG_HOME/cabal/config'), cabalproject: ['cabal.project', 'cabal.project.local'], diff --git a/src/version.c b/src/version.c index 0ffb00120e..fe1246adf1 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 880, /**/ 879, /**/ From 9c69453f0ee08fd99f910a20a6e760f15bb994d6 Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Tue, 19 Nov 2024 23:13:46 +0100 Subject: [PATCH 013/244] runtime(misc): add Italian LICENSE and (top-level) README file related: #16061 Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- Filelist | 2 + lang/LICENSE.itx | 99 ++++++++++++++++++++++++++++ lang/README.itx | 167 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 268 insertions(+) create mode 100644 lang/LICENSE.itx create mode 100644 lang/README.itx diff --git a/Filelist b/Filelist index f65504e672..c5b1b3910c 100644 --- a/Filelist +++ b/Filelist @@ -707,6 +707,8 @@ RT_ALL = \ README_VIM9.md \ LICENSE \ CONTRIBUTING.md \ + lang/LICENSE.itx \ + lang/README.itx \ runtime/bugreport.vim \ runtime/doc/*.awk \ runtime/doc/*.pl \ diff --git a/lang/LICENSE.itx b/lang/LICENSE.itx new file mode 100644 index 0000000000..892219c90b --- /dev/null +++ b/lang/LICENSE.itx @@ -0,0 +1,99 @@ +LICENZA VIM + +Nota: Agli effetti legali ha valore non la seguente traduzione italiana, ma +l'originale inglese su cui è basata. È alla versione inglese che si fa +riferimento qui sotto quando si parla di "questa licenza" (NdT). + +I) Non ci sono restrizioni alla distribuzione di copie non modificate di Vim, + alla condizione che esse includano il testo di questa licenza. Si possono + anche distribuire parti non modificate di Vim, sempre senza restrizioni, + alla condizione che esse includano il testo di questa licenza. È anche + consentito includere programmi eseguibili da voi preparati a partire dai + file sorgenti Vim non modificati, più i vostri esempi di utilizzo e i + vostri script Vim. + +II) È consentito distribuire una versione modificata (o estesa) di Vim, + contenente programmi eseguibile e/o codice sorgente, quando siano + rispettare le seguenti quattro condizioni: + 1) Il testo di questa licenza deve essere incluso senza modifiche. + 2) La versione modificata di Vim dev'essere distribuita in una della + seguenti cinque maniere: + a) Se voi personalmente modificate a Vim, dovete descrivere + chiaramente nella distribuzione come è possibile mettersi in + contatto con voi. Quando il manutentore vi chiede (in qualsiasi + forma) una copia della versione modificata di Vim da voi + distribuita, dovete rendere disponibili le vostre modifiche, + compreso il codice sorgente, al manutentore, senza alcuna spesa. + Il manutentore si riserva il diritto di includere le vostre + modifiche nella versione ufficiale di Vim. Quel che il manutentore + potrà fare con le vostre modifiche e sotto quale licenza esse + verranno distribuite può essere oggetto di negoziazione. Se non c'è + stata alcuna negoziazione, questa licenza, o una versione successiva + della stessa è anche applicabile alle vostre modifiche. + I manutentori correnti sono elencati qui: + https://github.com/orgs/vim/people. + Se dovessero cambiare, ne sarò dato annuncio nei luoghi appropriati + (verosimilmente vim.sf.net, www.vim.org e/o comp.editors). Quando + sia completamente impossibile contattare il manutentore, l'obbligo + di spedirgli le vostre modifiche viene meno. Una volta che il + manutentore abbia confermato di aver ricevuto le vostre modifiche, + non sarà necessario spedirle ulteriormente. + b) Se avete ricevuto un Vim modificato che era stato distribuito come + descritto al punto a) potete ulteriormente distribuirlo senza + modificarlo, come menzionato al punto I). Se fate ulteriori + modifiche, il testo al punto a) si applica a queste modifiche. + c) Includete tutte le modifiche, compreso il codice sorgente, con ogni + copia del Vim modificato da voi distribuito. Questo può essere + fatto sotto forma dell'output di un comando "diff", che contenga + anche il contesto [ossia anche le linee non modificate di sorgente + che vengono prima o dopo le modifiche - NdT]. Potete scegliere + quale licenza volete utilizzare per il nuovo codice sorgente che voi + aggiungere. Le modifiche e la relativa licenza non devono impedire + a terze parti di apportare le loro proprie modifiche a Vim. + d) Quando avete un Vim modificato che comprende modifiche quali quelle + menzionate al punto c), potete distribuirlo senza il codice sorgente + che descrive le modifiche, se le seguenti tre condizioni sono + soddisfatte: + - La licenza applicabile alle modifiche vi consente di distribuire + le modifiche al manutentore Vim senza alcun costo o restrizione, e + permette al manutentore Vim di includere le modifiche nella + versione ufficiale di Vim senza alcun costo o restrizione. + - Le modifiche da voi fatte sono conservate per almeno tre anni, + dopo che avrete distribuito per l'ultima volta il Vim modificato + corrispondente alle modifiche stesse. Quando il manutentore o + qualcuno a cui voi avete distribuito il Vim modificato vi chiede + (in qualsiasi forma) le modifiche, entro il periodo qui indicato, + dovete fargliele avere. + - Dovete descrivere chiaramente nella distribuzione come è possibile + mettersi in contatto con voi. Questa informazione di contatto + deve rimanere valida per almeno tre anni dopo l'ultima data di + distribuzione della corrispondente modifica di Vim, oppure il più + a lungo possibile. + e) Quando al GNU General Public License (GPL) si applica alle + modifiche, potete distribuire il Vim modificato sotto la versione 2 + della licenza GNU GPL versione 2 o una qualsiasi versione successiva + della stessa licenza. + 3) Un messaggio deve essere aggiunto, almeno all'output del comando + ":version" e nella schermata introduttiva, in modo che l'utilizzatore + del Vim modificato sia in grado di comprendere cosa è stato modificato. + Quando si distribuisca come menzionato al punto 2)e) l'aggiunta del + messaggio è richiesta solo se ciò non conduca a conflitti con la + licenza usata per le modifiche. + 4) L'informazione di contatto, richiesta ai punto 2)a) e 2)d) non deve + essere rimossa o modificata, tranne che per il fatto che la persona + stessa può apportare delle correzioni. + +III) Se distribuite una versione modificata di Vim, siete incoraggiati a + utilizzare la licenza Vim per le vostre modifiche, e a mettere le + modifiche a disposizione del manutentore, compreso il codice sorgente. + Il modo preferito in cui fare questo è tramite e-mail o caricando + i file su un server ed inviandone l'indirizzo (URL) tramite e-mail. + Se il numero di modifiche è piccolo (per esempio, una modifica a un + Makefile) inviare tramite email l'output del comando diff con contesto + può essere sufficiente. L'indirizzo e-mail da utilizzare è + + +IV) Non è consentito rimuovere questa licenza dalla distribuzione dei codici + sorgente Vim, anche in parte, o da una versione di Vim modificata. + Potete usare questa licenza per precedenti versioni di Vim, invece della + licenza con cui esse sono state distribuite, a vostra scelta. diff --git a/lang/README.itx b/lang/README.itx new file mode 100644 index 0000000000..82d5eb9ab6 --- /dev/null +++ b/lang/README.itx @@ -0,0 +1,167 @@ +README.txt per la versione 9.1 di Vim: VI Migliorato. + + +COS'È VIM? + +Vim è una versione migliorata del classico programma di videoscrittura UNIX +Vi. Molte nuove funzionalità sono state aggiunte: la possibilità di avere +multipli annullamenti di comando, l'evidenziazione sintattica, una storia dei +comandi immessi, file di aiuto facilmente consultabili, controlli ortografici, +completamento di nomi di file, operazioni su blocchi di dati, un linguaggio di +script, etc. È anche disponibile una versione grafica (GUI). Tuttavia è +possibile lavorare come se si stesse usando il Vi "classico". Chi avesse Vi +"sulle dita" si troverà a suo agio. Vedere il file "runtime/doc/vi_diff.txt" +[in inglese] per dettagli sulle differenze di Vim rispetto a Vi. + +Questo editor è molto utile per modificare programmi e altri file di testo. +Tutti i comandi sono immessi usando i tasti presenti sulla tastiera, in modo +che chi è in grado di digitare usando tutte e dieci le dita può lavorare molto +velocemente. Inoltre, i tasti funzione possono essere mappati per inserire +comandi dell'utente, ed è possibile usare il mouse. + +Vim è disponibile in ambiente MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS e +in quasi tutte le varianti di Unix. L'adattamento a nuovi sistemi operativi +non dovrebbe essere molto difficile. +Precedenti versioni di Vim funzionano in ambiente MS-DOS, MS-Windows +95/98/Me/NT/2000/XP/Vista, Amiga DOS, Atari MiNT, BeOS, RISC OS e OS/2. +Tali versioni non sono più supportate. + + +DISTRIBUZIONE + +Spesso è possibile usare il vostro Gestore applicazioni preferito per +installare Vim. Negli ambienti Mac e Linux una versione base di Vim è inclusa +nel sistema operativo, ma può ancora essere necessario installare Vim se si +desiderano funzionalità ulteriori. + +Ci sono distribuzioni separate di Vim per gli ambienti Unix, PC, Amiga e per +qualche altro sistema operativo. Questo file README.txt è contenuto nelle +directory che contengono i file usati da Vim in fase di esecuzione. Nelle +stesse directory sono presente la documentazione, i file usati per +l'evidenziazione sintattica e altri file usati da Vim in fase di esecuzione. +Per installare Vim occorre ottenere un archivio che contiene solo i file +eseguibili, o un archivio che permette di compilare Vim a partire dai file +sorgente. Quale alternativa preferire dipende dal sistema su cui si vuole +usare Vim, e dal preferire (o meno) di compilarlo direttamente a partire dai +file sorgente. Consultate "https://www.vim.org/download.php" per una +panoramica delle distribuzioni correntemente disponibili. + +Alcuni siti da cui ottenere l'ultima versione di Vim: +* Consultare la repository git in github: https://github.com/vim/vim. +* Procurarsi il codice sorgente come archivio https://github.com/vim/vim/tags. +* Ottenere un file per installare Vim in ambiente Windows dalla repository + vim-win32-installer: + https://github.com/vim/vim-win32-installer/releases. + + +COMPILARE VIM + +Se si è ottenuta una distribuzione di file eseguibili di Vim non è necessario +compilarlo. Se si è ottenuta una distribuzione di file sorgente, tutto ciò +che serve per compilare Vim è nella directory "src". Vedere src/INSTALL per +come procedere. + + +INSTALLAZIONE + +Vedere uno dei file elencati più sotto per istruzioni riguardo a uno specifico +sistema operativo. Tali file sono (nella repository git) nella directory +READMEdir oppure nella directory principale se si scompatta un archivio: + +README_ami.txt Amiga +README_unix.txt Unix +README_dos.txt MS-DOS e MS-Windows +README_mac.txt Macintosh +README_haiku.txt Haiku +README_vms.txt VMS + +Esistono altri file README_*.txt, a seconda della distribuzione in uso. + + +DOCUMENTAZIONE + +Esiste un corso di introduzione a Vim per principianti, della durata di circa +un'ora. Normalmente si può accedervi tramite il comando "vimtutor". Vedere +":help tutor" per ulteriori informazioni. + +Ma la cosa migliore è usare la documentazione disponibile in una sessione di +Vim, tramite il comando ":help". Se ancora non si ha a disposizione Vim, si +può leggere il file "runtime/doc/help.txt". Questo file contiene puntatori +agli altri file che costituiscono la documentazione. +All'interno della documentazione esiste anche uno User Manual (manuale utente) +che si legge come un libro ed è raccomandato per imparare a usare Vim. +Vedere ":help user-manual". Il manuale utente è stato interamente tradotto in +italiano, ed è disponibile, vedere: + https://www.vim.org/translations.php + + +COPIE + +Vim è un Charityware (ossia eventuali offerte per il suo utilizzo vanno a +un'attività caritativa). Vim può essere usato e copiato liberamente, senza +limitazioni, ma è incoraggiata un'offerta a favore di orfani ugandesi. Si +prega di leggere il file "runtime/doc/uganda.txt" per dettagli su come fare +(il file si può visualizzare digitando ":help uganda" all'interno di Vim). + +Sommario della licenza: Non ci sono restrizioni nell'uso e nella distribuzione +di una copia non modificata di Vim. Parti di Vim possono anche essere +distribuite, ma il testo della licenza va sempre incluso. Per versioni +modificate di Vim, valgono alcune limitazioni. La licenza di Vim è +compatibile con la licenza GPL, è possibile compilare Vim utilizzando librerie +con licenza GPL e distribuirlo. + + +SPONSORIZZAZIONI + +Correggere errori e aggiungere nuove funzionalità richiede tempo e fatica. +Per mostrare la vostra stima per quest'attività e per fornire motivazioni +agli sviluppatori perché continuino a lavorare su Vim, siete invitati a +fare una donazione. + +Le somme donate saranno usate principalmente per aiutare dei bambini in +Uganda. Vedere "runtime/doc/uganda.txt". Allo stesso tempo, le donazioni +aumentano la motivazione del gruppo di sviluppo a continuare a lavorare su +Vim! + +Informazioni più aggiornate sulla sponsorizzazione, possono essere trovate +sul sito Internet di Vim: + https://www.vim.org/sponsor/ + + +CONTRIBUIRE + +Chi vuole contribuire a rendere Vim ancora migliore, può consultare +il file CONTRIBUTING.md (in inglese). + + +INFORMAZIONE + +Se il vostro sistema operativo è macOS, potete usare MacVim: + https://macvim.org + +Le ultime notizie riguardo a Vim si possono trovare sulla pagina Internet di +Vim: + https://www.vim.org/ + +Se avete problemi, è possibile consultare la documentazione Vim e i +suggerimenti su come utilizzarlo: + https://www.vim.org/docs.php + https://vim.fandom.com/wiki/Vim_Tips_Wiki + +Se avete ancora problemi o qualsiasi altra richiesta, è possibile usare una +delle mailing list per discuterne con utenti e sviluppatori di Vim: + https://www.vim.org/maillist.php + +Se nient'altro funziona, potete riferire direttamente i problemi incontrati +alla mailing list degli sviluppatori, vim-dev: + + + +AUTORE PRINCIPALE + +La maggior parte di Vim è stata creata da Bram Moolenaar , +vedere ":help Bram-Moolenaar" + +Spedire tutti gli altri commenti, modifiche al codice sorgente, fiori e +suggerimenti alla mailing list vim-dev: + From 4dd6c22ebeea86b9522e650d133f6b109a39177e Mon Sep 17 00:00:00 2001 From: nisbet-hubbard <87453615+nisbet-hubbard@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:14:47 +0100 Subject: [PATCH 014/244] runtime(apache): Update syntax keyword definition closes: #16105 Signed-off-by: nisbet-hubbard <87453615+nisbet-hubbard@users.noreply.github.com> Signed-off-by: Christian Brabandt --- runtime/syntax/apache.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim index e73045e4c8..d2b8be733b 100644 --- a/runtime/syntax/apache.vim +++ b/runtime/syntax/apache.vim @@ -3,7 +3,7 @@ " Maintainer: David Necas (Yeti) " License: This file can be redistribued and/or modified under the same terms " as Vim itself. -" Last Change: 2022 Apr 25 +" Last Change: 2024 Nov 23 " Notes: Last synced with apache-2.2.3, version 1.x is no longer supported " TODO: see particular FIXME's scattered through the file " make it really linewise? @@ -14,6 +14,7 @@ if exists("b:current_syntax") finish endif +syn iskeyword @,48-57,_,192-255,- syn case ignore " Base constructs From cacfccf803949e62a29c85d4525372a10ea7e070 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Sat, 23 Nov 2024 13:28:01 +0100 Subject: [PATCH 015/244] runtime(netrw): update netrw's decompress logic Detect a few more default archive types, correctly handle file extensions with digits in it. fixes: #16099 closes: #16104 Signed-off-by: Konfekt Signed-off-by: Christian Brabandt --- runtime/autoload/netrw.vim | 38 +++++++++++++++++++++++++++++++++++--- runtime/doc/pi_netrw.txt | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 65 insertions(+), 10 deletions(-) diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 89aad816f8..629d35ea07 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -36,6 +36,7 @@ " 2024 Nov 07 by Vim Project: fix a few issues with netrw tree listing (#15996) " 2024 Nov 10 by Vim Project: directory symlink not resolved in tree view (#16020) " 2024 Nov 14 by Vim Project: small fixes to netrw#BrowseX (#16056) +" 2024 Nov 23 by Vim Project: update decompress defaults (#16104) " }}} " Former Maintainer: Charles E Campbell " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim @@ -365,7 +366,39 @@ call s:NetrwInit("g:netrw_cygdrive","/cygdrive") " Default values - d-g ---------- {{{3 call s:NetrwInit("s:didstarstar",0) call s:NetrwInit("g:netrw_dirhistcnt" , 0) -call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }') +let s:xz_opt = has('unix') ? "XZ_OPT=-T0" : + \ (has("win32") && &shell =~? '\vcmd(\.exe)?$' ? + \ "setx XZ_OPT=-T0 &&" : "") +call s:NetrwInit("g:netrw_decompress ", "{" + \ .."'.lz4': 'lz4 -d'," + \ .."'.lzo': 'lzop -d'," + \ .."'.lz': 'lzip -dk'," + \ .."'.7z': '7za x'," + \ .."'.001': '7za x'," + \ .."'.zip': 'unzip'," + \ .."'.bz': 'bunzip2 -k'," + \ .."'.bz2': 'bunzip2 -k'," + \ .."'.gz': 'gunzip -k'," + \ .."'.lzma': 'unlzma -T0 -k'," + \ .."'.xz': 'unxz -T0 -k'," + \ .."'.zst': 'zstd -T0 -d'," + \ .."'.Z': 'uncompress -k'," + \ .."'.tar': 'tar -xvf'," + \ .."'.tar.bz': 'tar -xvjf'," + \ .."'.tar.bz2': 'tar -xvjf'," + \ .."'.tbz': 'tar -xvjf'," + \ .."'.tbz2': 'tar -xvjf'," + \ .."'.tar.gz': 'tar -xvzf'," + \ .."'.tgz': 'tar -xvzf'," + \ .."'.tar.lzma': '"..s:xz_opt.." tar -xvf --lzma'," + \ .."'.tlz': '"..s:xz_opt.." tar -xvf --lzma'," + \ .."'.tar.xz': '"..s:xz_opt.." tar -xvfJ'," + \ .."'.txz': '"..s:xz_opt.." tar -xvfJ'," + \ .."'.tar.zst': '"..s:xz_opt.." tar -xvf --use-compress-program=unzstd'," + \ .."'.tzst': '"..s:xz_opt.." tar -xvf --use-compress-program=unzstd'," + \ .."'.rar': '"..(executable("unrar")?"unrar x -ad":"rar x -ad").."'" + \ .."}") +unlet s:xz_opt call s:NetrwInit("g:netrw_dirhistmax" , 10) call s:NetrwInit("g:netrw_fastbrowse" , 1) call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') @@ -6510,7 +6543,6 @@ fun! s:NetrwMarkFileArgList(islocal,tomflist) NetrwKeepj call winrestview(svpos) endif endif - endfun " --------------------------------------------------------------------- @@ -6536,7 +6568,7 @@ fun! s:NetrwMarkFileCompress(islocal) " for every filename in the marked list for fname in s:netrwmarkfilelist_{curbufnr} - let sfx= substitute(fname,'^.\{-}\(\.\a\+\)$','\1','') + let sfx= substitute(fname,'^.\{-}\(\.[[:alnum:]]\+\)$','\1','') if exists("g:netrw_decompress['".sfx."']") " fname has a suffix indicating that its compressed; apply associated decompression routine let exe= g:netrw_decompress[sfx] diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index a783fe9ac3..c22aad3544 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1,10 +1,9 @@ -*pi_netrw.txt* For Vim version 9.1. Last change: 2024 Nov 12 +*pi_netrw.txt* For Vim version 9.1. Last change: 2024 Nov 23 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell ------------------------------------------------ -Author: Charles E. Campbell - (remove NOSPAM from Campbell's email first) +Original Author: Charles E. Campbell Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including @@ -2659,10 +2658,34 @@ your browsing preferences. (see also: |netrw-settings|) netrw last saw |g:netrw_cursor| >= 5 or when netrw was initially run. - *g:netrw_decompress* = { ".gz" : "gunzip" , - ".bz2" : "bunzip2" , - ".zip" : "unzip" , - ".tar" : "tar -xf"} + *g:netrw_decompress* = { '.lz4': 'lz4 -d', + '.lzo': 'lzop -d', + '.lz': 'lzip -dk', + '.7z': '7za x', + '.001': '7za x', + '.tar.bz': 'tar -xvjf', + '.tar.bz2': 'tar -xvjf', + '.tbz': 'tar -xvjf', + '.tbz2': 'tar -xvjf', + '.tar.gz': 'tar -xvzf', + '.tgz': 'tar -xvzf', + '.tar.zst': 'tar --use-compress-program=unzstd -xvf', + '.tzst': 'tar --use-compress-program=unzstd -xvf', + '.tar': 'tar -xvf', + '.zip': 'unzip', + '.bz': 'bunzip2 -k', + '.bz2': 'bunzip2 -k', + '.gz': 'gunzip -k', + '.lzma': 'unlzma -T0 -k', + '.xz': 'unxz -T0 -k', + '.zst': 'zstd -T0 -d', + '.Z': 'uncompress -k', + '.rar': 'unrar x -ad', + '.tar.lzma': 'tar --lzma -xvf', + '.tlz': 'tar --lzma -xvf', + '.tar.xz': 'tar -xvJf', + '.txz': 'tar -xvJf'} + A dictionary mapping suffices to decompression programs. From 991603cc04149aeed86470637540b22bc9f622c2 Mon Sep 17 00:00:00 2001 From: Chris White Date: Sat, 23 Nov 2024 13:35:43 +0100 Subject: [PATCH 016/244] patch 9.1.0881: GUI: message dialog may not get focus Problem: GUI: message dialog may not get focus Solution: add window manager hint to give focus to the dialog (Chris White) Tell the window manager that message dialogs should be given focus when the user switches from another application back to Vim. This can happen, e.g., when the user has a file open in Vim and then edits it in another program. fixes: #172 closes: #16100 Signed-off-by: Chris White Signed-off-by: Christian Brabandt --- src/gui_gtk.c | 2 ++ src/version.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/gui_gtk.c b/src/gui_gtk.c index 69a9cae9fc..e8093e7c66 100644 --- a/src/gui_gtk.c +++ b/src/gui_gtk.c @@ -1790,6 +1790,8 @@ gui_mch_dialog(int type, // type of dialog dialog = create_message_dialog(type, title, message); dialoginfo.dialog = GTK_DIALOG(dialog); dialog_add_buttons(GTK_DIALOG(dialog), buttons); + gtk_window_set_type_hint(GTK_WINDOW(dialog), + GDK_WINDOW_TYPE_HINT_POPUP_MENU); if (textfield != NULL) { diff --git a/src/version.c b/src/version.c index fe1246adf1..4eea94afc3 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 881, /**/ 880, /**/ From 5e6ea92b2c58cbfc642d7e35bd717f99aa2e1e53 Mon Sep 17 00:00:00 2001 From: John Marriott Date: Sat, 23 Nov 2024 14:01:57 +0100 Subject: [PATCH 017/244] patch 9.1.0882: too many strlen() calls in insexpand.c Problem: too many strlen() calls in insexpand.c Solution: Refactor insexpand.c and reduce number of calls to STRLEN(), fix a warning get_next_filename_completion(), add new function ins_compl_leader_len() (John Marriott) closes: #16095 Signed-off-by: John Marriott Signed-off-by: Christian Brabandt --- src/insexpand.c | 492 +++++++++++++++++++++++----------------- src/proto/insexpand.pro | 1 + src/version.c | 2 + 3 files changed, 282 insertions(+), 213 deletions(-) diff --git a/src/insexpand.c b/src/insexpand.c index 9fe9fc5c56..6bc5075cbd 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -95,7 +95,7 @@ struct compl_S { compl_T *cp_next; compl_T *cp_prev; - char_u *cp_str; // matched text + string_T cp_str; // matched text char_u *(cp_text[CPT_COUNT]); // text for the menu #ifdef FEAT_EVAL typval_T cp_user_data; @@ -136,7 +136,7 @@ static int compl_enter_selects = FALSE; // When "compl_leader" is not NULL only matches that start with this string // are used. -static char_u *compl_leader = NULL; +static string_T compl_leader = {NULL, 0}; static int compl_get_longest = FALSE; // put longest common string // in compl_leader @@ -162,8 +162,7 @@ static int compl_started = FALSE; static int ctrl_x_mode = CTRL_X_NORMAL; static int compl_matches = 0; // number of completion matches -static char_u *compl_pattern = NULL; -static size_t compl_patternlen = 0; +static string_T compl_pattern = {NULL, 0}; static int compl_direction = FORWARD; static int compl_shows_dir = FORWARD; static int compl_pending = 0; // > 1 for postponed CTRL-N @@ -173,7 +172,7 @@ static pos_T compl_startpos; static int compl_length = 0; static colnr_T compl_col = 0; // column where the text starts // that is being completed -static char_u *compl_orig_text = NULL; // text as it was before +static string_T compl_orig_text = {NULL, 0}; // text as it was before // completion started static int compl_cont_mode = 0; static expand_T compl_xp; @@ -208,7 +207,7 @@ static int ins_compl_need_restart(void); static void ins_compl_new_leader(void); static int get_compl_len(void); static void ins_compl_restart(void); -static void ins_compl_set_original_text(char_u *str); +static void ins_compl_set_original_text(char_u *str, size_t len); static void ins_compl_fixRedoBufForLeader(char_u *ptr_arg); # if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL) static void ins_compl_add_list(list_T *list); @@ -560,7 +559,7 @@ ins_compl_infercase_gettext( wca[i] = *(p++); // Rule 1: Were any chars converted to lower? - p = compl_orig_text; + p = compl_orig_text.string; for (i = 0; i < min_len; ++i) { if (has_mbyte) @@ -584,7 +583,7 @@ ins_compl_infercase_gettext( // upper case. if (!has_lower) { - p = compl_orig_text; + p = compl_orig_text.string; for (i = 0; i < min_len; ++i) { if (has_mbyte) @@ -603,7 +602,7 @@ ins_compl_infercase_gettext( } // Copy the original case of the part we typed. - p = compl_orig_text; + p = compl_orig_text.string; for (i = 0; i < min_len; ++i) { if (has_mbyte) @@ -651,7 +650,7 @@ ins_compl_infercase_gettext( } *p = NUL; STRCPY(gap.ga_data, IObuff); - gap.ga_len = (int)STRLEN(IObuff); + gap.ga_len = (int)(p - IObuff); } else if (has_mbyte) p += (*mb_char2bytes)(wca[i++], p); @@ -715,7 +714,7 @@ ins_compl_add_infercase( // Find actual length of original text. if (has_mbyte) { - p = compl_orig_text; + p = compl_orig_text.string; compl_char_len = 0; while (*p != NUL) { @@ -795,9 +794,9 @@ ins_compl_add( do { if (!match_at_original_text(match) - && STRNCMP(match->cp_str, str, len) == 0 - && ((int)STRLEN(match->cp_str) <= len - || match->cp_str[len] == NUL)) + && STRNCMP(match->cp_str.string, str, len) == 0 + && ((int)match->cp_str.length <= len + || match->cp_str.string[len] == NUL)) return NOTDONE; match = match->cp_next; } while (match != NULL && !is_first_match(match)); @@ -814,12 +813,14 @@ ins_compl_add( match->cp_number = -1; if (flags & CP_ORIGINAL_TEXT) match->cp_number = 0; - if ((match->cp_str = vim_strnsave(str, len)) == NULL) + if ((match->cp_str.string = vim_strnsave(str, len)) == NULL) { vim_free(match); return FAIL; } + match->cp_str.length = len; + // match-fname is: // - compl_curr_match->cp_fname if it is a string equal to fname. // - a copy of fname, CP_FREE_FNAME is set to free later THE allocated mem. @@ -892,8 +893,8 @@ ins_compl_equal(compl_T *match, char_u *str, int len) if (match->cp_flags & CP_EQUAL) return TRUE; if (match->cp_flags & CP_ICASE) - return STRNICMP(match->cp_str, str, (size_t)len) == 0; - return STRNCMP(match->cp_str, str, (size_t)len) == 0; + return STRNICMP(match->cp_str.string, str, (size_t)len) == 0; + return STRNCMP(match->cp_str.string, str, (size_t)len) == 0; } /* @@ -906,16 +907,17 @@ ins_compl_longest_match(compl_T *match) int c1, c2; int had_match; - if (compl_leader == NULL) + if (compl_leader.string == NULL) { // First match, use it as a whole. - compl_leader = vim_strsave(match->cp_str); - if (compl_leader == NULL) + compl_leader.string = vim_strnsave(match->cp_str.string, match->cp_str.length); + if (compl_leader.string == NULL) return; + compl_leader.length = match->cp_str.length; had_match = (curwin->w_cursor.col > compl_col); ins_compl_delete(); - ins_bytes(compl_leader + get_compl_len()); + ins_bytes(compl_leader.string + get_compl_len()); ins_redraw(FALSE); // When the match isn't there (to avoid matching itself) remove it @@ -928,8 +930,8 @@ ins_compl_longest_match(compl_T *match) } // Reduce the text if this match differs from compl_leader. - p = compl_leader; - s = match->cp_str; + p = compl_leader.string; + s = match->cp_str.string; while (*p != NUL) { if (has_mbyte) @@ -961,9 +963,11 @@ ins_compl_longest_match(compl_T *match) { // Leader was shortened, need to change the inserted text. *p = NUL; + compl_leader.length = (size_t)(p - compl_leader.string); + had_match = (curwin->w_cursor.col > compl_col); ins_compl_delete(); - ins_bytes(compl_leader + get_compl_len()); + ins_bytes(compl_leader.string + get_compl_len()); ins_redraw(FALSE); // When the match isn't there (to avoid matching itself) remove it @@ -1040,7 +1044,7 @@ ins_compl_has_shown_match(void) int ins_compl_long_shown_match(void) { - return (int)STRLEN(compl_shown_match->cp_str) + return (int)compl_shown_match->cp_str.length > curwin->w_cursor.col - compl_col; } @@ -1149,7 +1153,7 @@ ins_compl_dict_alloc(compl_T *match) if (dict == NULL) return NULL; - dict_add_string(dict, "word", match->cp_str); + dict_add_string(dict, "word", match->cp_str.string); dict_add_string(dict, "abbr", match->cp_text[CPT_ABBR]); dict_add_string(dict, "menu", match->cp_text[CPT_MENU]); dict_add_string(dict, "kind", match->cp_text[CPT_KIND]); @@ -1225,7 +1229,6 @@ ins_compl_build_pum(void) int shown_match_ok = FALSE; int i; int cur = -1; - int lead_len = 0; int max_fuzzy_score = 0; unsigned int cur_cot_flags = get_cot_flags(); int compl_no_select = (cur_cot_flags & COT_NOSELECT) != 0; @@ -1234,19 +1237,17 @@ ins_compl_build_pum(void) // Need to build the popup menu list. compl_match_arraysize = 0; compl = compl_first_match; - if (compl_leader != NULL) - lead_len = (int)STRLEN(compl_leader); do { // When 'completeopt' contains "fuzzy" and leader is not NULL or empty, // set the cp_score for later comparisons. - if (compl_fuzzy_match && compl_leader != NULL && lead_len > 0) - compl->cp_score = fuzzy_match_str(compl->cp_str, compl_leader); + if (compl_fuzzy_match && compl_leader.string != NULL && compl_leader.length > 0) + compl->cp_score = fuzzy_match_str(compl->cp_str.string, compl_leader.string); if (!match_at_original_text(compl) - && (compl_leader == NULL - || ins_compl_equal(compl, compl_leader, lead_len) + && (compl_leader.string == NULL + || ins_compl_equal(compl, compl_leader.string, (int)compl_leader.length) || (compl_fuzzy_match && compl->cp_score > 0))) ++compl_match_arraysize; compl = compl->cp_next; @@ -1264,8 +1265,8 @@ ins_compl_build_pum(void) if (match_at_original_text(compl_shown_match)) shown_match_ok = TRUE; - if (compl_leader != NULL - && STRCMP(compl_leader, compl_orig_text) == 0 + if (compl_leader.string != NULL + && STRCMP(compl_leader.string, compl_orig_text.string) == 0 && shown_match_ok == FALSE) compl_shown_match = compl_no_select ? compl_first_match : compl_first_match->cp_next; @@ -1275,8 +1276,8 @@ ins_compl_build_pum(void) do { if (!match_at_original_text(compl) - && (compl_leader == NULL - || ins_compl_equal(compl, compl_leader, lead_len) + && (compl_leader.string == NULL + || ins_compl_equal(compl, compl_leader.string, (int)compl_leader.length) || (compl_fuzzy_match && compl->cp_score > 0))) { if (!shown_match_ok && !compl_fuzzy_match) @@ -1321,7 +1322,7 @@ ins_compl_build_pum(void) // reset the current index. if (!compl_no_select && (max_fuzzy_score > 0 - || (compl_leader == NULL || lead_len == 0))) + || (compl_leader.string == NULL || compl_leader.length == 0))) { if (match_at_original_text(compl_shown_match)) compl_shown_match = shown_compl; @@ -1331,7 +1332,7 @@ ins_compl_build_pum(void) if (compl->cp_text[CPT_ABBR] != NULL) compl_match_array[i].pum_text = compl->cp_text[CPT_ABBR]; else - compl_match_array[i].pum_text = compl->cp_str; + compl_match_array[i].pum_text = compl->cp_str.string; compl_match_array[i].pum_kind = compl->cp_text[CPT_KIND]; compl_match_array[i].pum_info = compl->cp_text[CPT_INFO]; compl_match_array[i].pum_score = compl->cp_score; @@ -1364,7 +1365,7 @@ ins_compl_build_pum(void) compl = compl->cp_next; } while (compl != NULL && !is_first_match(compl)); - if (compl_fuzzy_match && compl_leader != NULL && lead_len > 0) + if (compl_fuzzy_match && compl_leader.string != NULL && compl_leader.length > 0) { for (i = 0; i < compl_match_arraysize; i++) compl_match_array[i].pum_idx = i; @@ -1404,7 +1405,7 @@ ins_compl_show_pum(void) { // popup menu already exists, only need to find the current item. for (i = 0; i < compl_match_arraysize; ++i) - if (compl_match_array[i].pum_text == compl_shown_match->cp_str + if (compl_match_array[i].pum_text == compl_shown_match->cp_str.string || compl_match_array[i].pum_text == compl_shown_match->cp_text[CPT_ABBR]) { @@ -1453,7 +1454,16 @@ ins_compl_show_pum(void) char_u * ins_compl_leader(void) { - return compl_leader != NULL ? compl_leader : compl_orig_text; + return compl_leader.string != NULL ? compl_leader.string : compl_orig_text.string; +} + +/* + * Get current completion leader length + */ + size_t +ins_compl_leader_len(void) +{ + return compl_leader.string != NULL ? compl_leader.length : compl_orig_text.length; } /* @@ -1778,9 +1788,8 @@ ins_compl_free(void) compl_T *match; int i; - VIM_CLEAR(compl_pattern); - compl_patternlen = 0; - VIM_CLEAR(compl_leader); + VIM_CLEAR_STRING(compl_pattern); + VIM_CLEAR_STRING(compl_leader); if (compl_first_match == NULL) return; @@ -1793,7 +1802,7 @@ ins_compl_free(void) { match = compl_curr_match; compl_curr_match = compl_curr_match->cp_next; - vim_free(match->cp_str); + VIM_CLEAR_STRING(match->cp_str); // several entries may use the same fname, free it just once. if (match->cp_flags & CP_FREE_FNAME) vim_free(match->cp_fname); @@ -1818,11 +1827,10 @@ ins_compl_clear(void) compl_cont_status = 0; compl_started = FALSE; compl_matches = 0; - VIM_CLEAR(compl_pattern); - compl_patternlen = 0; - VIM_CLEAR(compl_leader); + VIM_CLEAR_STRING(compl_pattern); + VIM_CLEAR_STRING(compl_leader); edit_submode_extra = NULL; - VIM_CLEAR(compl_orig_text); + VIM_CLEAR_STRING(compl_orig_text); compl_enter_selects = FALSE; #ifdef FEAT_EVAL // clear v:completed_item @@ -1927,10 +1935,14 @@ ins_compl_bs(void) || ins_compl_need_restart()) ins_compl_restart(); - vim_free(compl_leader); - compl_leader = vim_strnsave(line + compl_col, (p - line) - compl_col); - if (compl_leader == NULL) + VIM_CLEAR_STRING(compl_leader); + compl_leader.length = (size_t)((p - line) - compl_col); + compl_leader.string = vim_strnsave(line + compl_col, compl_leader.length); + if (compl_leader.string == NULL) + { + compl_leader.length = 0; return K_BS; + } ins_compl_new_leader(); if (compl_shown_match != NULL) @@ -1963,11 +1975,11 @@ ins_compl_new_leader(void) { ins_compl_del_pum(); ins_compl_delete(); - ins_bytes(compl_leader + get_compl_len()); + ins_bytes(compl_leader.string + get_compl_len()); compl_used_match = FALSE; if (compl_started) - ins_compl_set_original_text(compl_leader); + ins_compl_set_original_text(compl_leader.string, compl_leader.length); else { #ifdef FEAT_SPELL @@ -2052,11 +2064,17 @@ ins_compl_addleader(int c) // break redo. if (!compl_opt_refresh_always) { - vim_free(compl_leader); - compl_leader = vim_strnsave(ml_get_curline() + compl_col, - curwin->w_cursor.col - compl_col); - if (compl_leader != NULL) - ins_compl_new_leader(); + VIM_CLEAR_STRING(compl_leader); + compl_leader.length = (size_t)(curwin->w_cursor.col - compl_col); + compl_leader.string = vim_strnsave(ml_get_curline() + compl_col, + compl_leader.length); + if (compl_leader.string == NULL) + { + compl_leader.length = 0; + return; + } + + ins_compl_new_leader(); } } @@ -2078,31 +2096,31 @@ ins_compl_restart(void) * Set the first match, the original text. */ static void -ins_compl_set_original_text(char_u *str) +ins_compl_set_original_text(char_u *str, size_t len) { - char_u *p; - // Replace the original text entry. // The CP_ORIGINAL_TEXT flag is either at the first item or might possibly // be at the last item for backward completion if (match_at_original_text(compl_first_match)) // safety check { - p = vim_strsave(str); + char_u *p = vim_strnsave(str, len); if (p != NULL) { - vim_free(compl_first_match->cp_str); - compl_first_match->cp_str = p; + VIM_CLEAR_STRING(compl_first_match->cp_str); + compl_first_match->cp_str.string = p; + compl_first_match->cp_str.length = len; } } else if (compl_first_match->cp_prev != NULL && match_at_original_text(compl_first_match->cp_prev)) { - p = vim_strsave(str); - if (p != NULL) - { - vim_free(compl_first_match->cp_prev->cp_str); - compl_first_match->cp_prev->cp_str = p; - } + char_u *p = vim_strnsave(str, len); + if (p != NULL) + { + VIM_CLEAR_STRING(compl_first_match->cp_prev->cp_str); + compl_first_match->cp_prev->cp_str.string = p; + compl_first_match->cp_prev->cp_str.length = len; + } } } @@ -2116,29 +2134,33 @@ ins_compl_addfrommatch(void) char_u *p; int len = (int)curwin->w_cursor.col - (int)compl_col; int c; - compl_T *cp; - p = compl_shown_match->cp_str; - if ((int)STRLEN(p) <= len) // the match is too short + p = compl_shown_match->cp_str.string; + if ((int)compl_shown_match->cp_str.length <= len) // the match is too short { + size_t plen; + compl_T *cp; + // When still at the original match use the first entry that matches // the leader. if (!match_at_original_text(compl_shown_match)) return; p = NULL; + plen = 0; for (cp = compl_shown_match->cp_next; cp != NULL && !is_first_match(cp); cp = cp->cp_next) { - if (compl_leader == NULL - || ins_compl_equal(cp, compl_leader, - (int)STRLEN(compl_leader))) + if (compl_leader.string == NULL + || ins_compl_equal(cp, compl_leader.string, + (int)compl_leader.length)) { - p = cp->cp_str; + p = cp->cp_str.string; + plen = cp->cp_str.length; break; } } - if (p == NULL || (int)STRLEN(p) <= len) + if (p == NULL || (int)plen <= len) return; } p += len; @@ -2284,14 +2306,15 @@ set_ctrl_x_mode(int c) static int ins_compl_stop(int c, int prev_mode, int retval) { - char_u *ptr; int want_cindent; // Get here when we have finished typing a sequence of ^N and // ^P or other completion characters in CTRL-X mode. Free up // memory that was used, and make sure we can redo the insert. - if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E) + if (compl_curr_match != NULL || compl_leader.string != NULL || c == Ctrl_E) { + char_u *ptr; + // If any of the original typed text has been changed, eg when // ignorecase is set, we must add back-spaces to the redo // buffer. We add as few as necessary to delete just the part @@ -2299,7 +2322,7 @@ ins_compl_stop(int c, int prev_mode, int retval) // When using the longest match, edited the match or used // CTRL-E then don't use the current match. if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E) - ptr = compl_curr_match->cp_str; + ptr = compl_curr_match->cp_str.string; else ptr = NULL; ins_compl_fixRedoBufForLeader(ptr); @@ -2346,19 +2369,25 @@ ins_compl_stop(int c, int prev_mode, int retval) if (c == Ctrl_E) { char_u *p = NULL; + size_t plen = 0; ins_compl_delete(); - if (compl_leader != NULL) - p = compl_leader; + if (compl_leader.string != NULL) + { + p = compl_leader.string; + plen = compl_leader.length; + } else if (compl_first_match != NULL) - p = compl_orig_text; + { + p = compl_orig_text.string; + plen = compl_orig_text.length; + } if (p != NULL) { int compl_len = get_compl_len(); - int len = (int)STRLEN(p); - if (len > compl_len) - ins_bytes_len(p + compl_len, len - compl_len); + if ((int)plen > compl_len) + ins_bytes_len(p + compl_len, (int)(plen - compl_len)); } retval = TRUE; } @@ -2536,20 +2565,20 @@ ins_compl_prep(int c) static void ins_compl_fixRedoBufForLeader(char_u *ptr_arg) { - int len; + int len = 0; char_u *p; char_u *ptr = ptr_arg; if (ptr == NULL) { - if (compl_leader != NULL) - ptr = compl_leader; + if (compl_leader.string != NULL) + ptr = compl_leader.string; else return; // nothing to do } - if (compl_orig_text != NULL) + if (compl_orig_text.string != NULL) { - p = compl_orig_text; + p = compl_orig_text.string; for (len = 0; p[len] != NUL && p[len] == ptr[len]; ++len) ; if (len > 0) @@ -2557,8 +2586,6 @@ ins_compl_fixRedoBufForLeader(char_u *ptr_arg) for (p += len; *p != NUL; MB_PTR_ADV(p)) AppendCharToRedobuff(K_BS); } - else - len = 0; if (ptr != NULL) AppendToRedobuffLit(ptr + len, -1); } @@ -2988,12 +3015,18 @@ set_completion(colnr_T startcol, list_T *list) compl_col = startcol; compl_length = (int)curwin->w_cursor.col - (int)startcol; // compl_pattern doesn't need to be set - compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length); + compl_orig_text.string = vim_strnsave(ml_get_curline() + compl_col, (size_t)compl_length); if (p_ic) flags |= CP_ICASE; - if (compl_orig_text == NULL || ins_compl_add(compl_orig_text, - -1, NULL, NULL, NULL, 0, - flags | CP_FAST, FALSE, NULL) != OK) + if (compl_orig_text.string == NULL) + { + compl_orig_text.length = 0; + return; + } + compl_orig_text.length = (size_t)compl_length; + if (ins_compl_add(compl_orig_text.string, + (int)compl_orig_text.length, NULL, NULL, NULL, 0, + flags | CP_FAST, FALSE, NULL) != OK) return; ctrl_x_mode = CTRL_X_EVAL; @@ -3223,7 +3256,7 @@ get_complete_info(list_T *what_list, dict_T *retdict) ret = list_append_dict(li, di); if (ret != OK) return; - dict_add_string(di, "word", match->cp_str); + dict_add_string(di, "word", match->cp_str.string); dict_add_string(di, "abbr", match->cp_text[CPT_ABBR]); dict_add_string(di, "menu", match->cp_text[CPT_MENU]); dict_add_string(di, "kind", match->cp_text[CPT_KIND]); @@ -3470,8 +3503,8 @@ process_next_cpt_value( static void get_next_include_file_completion(int compl_type) { - find_pattern_in_path(compl_pattern, compl_direction, - (int)compl_patternlen, FALSE, FALSE, + find_pattern_in_path(compl_pattern.string, compl_direction, + (int)compl_pattern.length, FALSE, FALSE, (compl_type == CTRL_X_PATH_DEFINES && !(compl_cont_status & CONT_SOL)) ? FIND_DEFINE : FIND_ANY, 1L, ACTION_EXPAND, @@ -3488,7 +3521,7 @@ get_next_dict_tsr_completion(int compl_type, char_u *dict, int dict_f) { #ifdef FEAT_COMPL_FUNC if (thesaurus_func_complete(compl_type)) - expand_by_function(compl_type, compl_pattern); + expand_by_function(compl_type, compl_pattern.string); else #endif ins_compl_dictionaries( @@ -3496,7 +3529,7 @@ get_next_dict_tsr_completion(int compl_type, char_u *dict, int dict_f) : (compl_type == CTRL_X_THESAURUS ? (*curbuf->b_p_tsr == NUL ? p_tsr : curbuf->b_p_tsr) : (*curbuf->b_p_dict == NUL ? p_dict : curbuf->b_p_dict)), - compl_pattern, + compl_pattern.string, dict != NULL ? dict_f : 0, compl_type == CTRL_X_THESAURUS); } @@ -3513,12 +3546,12 @@ get_next_tag_completion(void) // set p_ic according to p_ic, p_scs and pat for find_tags(). save_p_ic = p_ic; - p_ic = ignorecase(compl_pattern); + p_ic = ignorecase(compl_pattern.string); // Find up to TAG_MANY matches. Avoids that an enormous number // of matches is found when compl_pattern is empty g_tag_at_cursor = TRUE; - if (find_tags(compl_pattern, &num_matches, &matches, + if (find_tags(compl_pattern.string, &num_matches, &matches, TAG_REGEXP | TAG_NAMES | TAG_NOIC | TAG_INS_COMP | (ctrl_x_mode_not_default() ? TAG_VERBOSE : 0), TAG_MANY, curbuf->b_ffname) == OK && num_matches > 0) @@ -3553,13 +3586,11 @@ get_next_filename_completion(void) int i; int score; char_u *leader = ins_compl_leader(); - size_t leader_len = STRLEN(leader); + size_t leader_len = ins_compl_leader_len();; int in_fuzzy = ((get_cot_flags() & COT_FUZZY) != 0 && leader_len > 0); char_u **sorted_matches; int *fuzzy_indices_data; char_u *last_sep = NULL; - size_t path_with_wildcard_len; - char_u *path_with_wildcard; #ifdef BACKSLASH_IN_FILENAME char pathsep = (curbuf->b_p_csl[0] == 's') ? @@ -3573,7 +3604,7 @@ get_next_filename_completion(void) #ifdef BACKSLASH_IN_FILENAME if (curbuf->b_p_csl[0] == 's') { - for (i = 0; i < leader_len; i++) + for (i = 0; i < (int)leader_len; i++) { if (leader[i] == '\\') leader[i] = '/'; @@ -3581,7 +3612,7 @@ get_next_filename_completion(void) } else if (curbuf->b_p_csl[0] == 'b') { - for (i = 0; i < leader_len; i++) + for (i = 0; i < (int)leader_len; i++) { if (leader[i] == '/') leader[i] = '\\'; @@ -3593,9 +3624,11 @@ get_next_filename_completion(void) { // No path separator or separator is the last character, // fuzzy match the whole leader - vim_free(compl_pattern); - compl_pattern = vim_strsave((char_u *)"*"); - compl_patternlen = STRLEN(compl_pattern); + VIM_CLEAR_STRING(compl_pattern); + compl_pattern.string = vim_strnsave((char_u *)"*", 1); + if (compl_pattern.string == NULL) + return; + compl_pattern.length = 1; } else if (*(last_sep + 1) == '\0') in_fuzzy = FALSE; @@ -3603,29 +3636,29 @@ get_next_filename_completion(void) { // Split leader into path and file parts int path_len = last_sep - leader + 1; - path_with_wildcard_len = path_len + 2; - path_with_wildcard = alloc(path_with_wildcard_len); + char_u *path_with_wildcard; + + path_with_wildcard = alloc(path_len + 2); if (path_with_wildcard != NULL) { - vim_strncpy(path_with_wildcard, leader, path_len); - vim_strcat(path_with_wildcard, (char_u *)"*", path_with_wildcard_len); - vim_free(compl_pattern); - compl_pattern = path_with_wildcard; - compl_patternlen = STRLEN(compl_pattern); + vim_snprintf((char *)path_with_wildcard, path_len + 2, "%*.*s*", path_len, path_len, leader); + VIM_CLEAR_STRING(compl_pattern); + compl_pattern.string = path_with_wildcard; + compl_pattern.length = path_len + 1; // Move leader to the file part leader = last_sep + 1; - leader_len = STRLEN(leader); + leader_len -= path_len; } } } - if (expand_wildcards(1, &compl_pattern, &num_matches, &matches, + if (expand_wildcards(1, &compl_pattern.string, &num_matches, &matches, EW_FILE|EW_DIR|EW_ADDSLASH|EW_SILENT) != OK) return; // May change home directory back to "~". - tilde_replace(compl_pattern, num_matches, matches); + tilde_replace(compl_pattern.string, num_matches, matches); #ifdef BACKSLASH_IN_FILENAME if (curbuf->b_p_csl[0] != NUL) { @@ -3701,8 +3734,8 @@ get_next_cmdline_completion(void) char_u **matches; int num_matches; - if (expand_cmdline(&compl_xp, compl_pattern, - (int)compl_patternlen, &num_matches, &matches) == EXPAND_OK) + if (expand_cmdline(&compl_xp, compl_pattern.string, + (int)compl_pattern.length, &num_matches, &matches) == EXPAND_OK) ins_compl_add_matches(num_matches, matches, FALSE); } @@ -3716,7 +3749,7 @@ get_next_spell_completion(linenr_T lnum UNUSED) char_u **matches; int num_matches; - num_matches = expand_spelling(lnum, compl_pattern, &matches); + num_matches = expand_spelling(lnum, compl_pattern.string, &matches); if (num_matches > 0) ins_compl_add_matches(num_matches, matches, p_ic); else @@ -3741,6 +3774,7 @@ ins_compl_get_next_word_or_line( *match_len = 0; ptr = ml_get_buf(ins_buf, cur_match_pos->lnum, FALSE) + cur_match_pos->col; + len = (int)ml_get_buf_len(ins_buf, cur_match_pos->lnum) - cur_match_pos->col; if (ctrl_x_mode_line_or_eval()) { if (compl_status_adding()) @@ -3748,16 +3782,21 @@ ins_compl_get_next_word_or_line( if (cur_match_pos->lnum >= ins_buf->b_ml.ml_line_count) return NULL; ptr = ml_get_buf(ins_buf, cur_match_pos->lnum + 1, FALSE); + len = ml_get_buf_len(ins_buf, cur_match_pos->lnum + 1); if (!p_paste) - ptr = skipwhite(ptr); + { + char_u *tmp_ptr = ptr; + + ptr = skipwhite(tmp_ptr); + len -= (int)(ptr - tmp_ptr); + } } - len = (int)STRLEN(ptr); } else { char_u *tmp_ptr = ptr; - if (compl_status_adding() && compl_length <= (int)STRLEN(tmp_ptr)) + if (compl_status_adding() && compl_length <= len) { tmp_ptr += compl_length; // Skip if already inside a word. @@ -3866,14 +3905,14 @@ get_next_default_completion(ins_compl_next_state_T *st, pos_T *start_pos) // has added a word that was at the beginning of the line if ((ctrl_x_mode_whole_line() && !in_fuzzy) || ctrl_x_mode_eval() || (compl_cont_status & CONT_SOL)) found_new_match = search_for_exact_line(st->ins_buf, - st->cur_match_pos, compl_direction, compl_pattern); + st->cur_match_pos, compl_direction, compl_pattern.string); else if (in_fuzzy) found_new_match = search_for_fuzzy_match(st->ins_buf, st->cur_match_pos, leader, compl_direction, start_pos, &len, &ptr, ctrl_x_mode_whole_line()); else found_new_match = searchit(NULL, st->ins_buf, st->cur_match_pos, - NULL, compl_direction, compl_pattern, compl_patternlen, + NULL, compl_direction, compl_pattern.string, (int)compl_pattern.length, 1L, SEARCH_KEEP + SEARCH_NFMSG, RE_LAST, NULL); --msg_silent; if (!compl_started || st->set_match_pos) @@ -3981,7 +4020,7 @@ get_next_completion_match(int type, ins_compl_next_state_T *st, pos_T *ini) #ifdef FEAT_COMPL_FUNC case CTRL_X_FUNCTION: case CTRL_X_OMNI: - expand_by_function(type, compl_pattern); + expand_by_function(type, compl_pattern.string); break; #endif @@ -4071,7 +4110,7 @@ ins_compl_get_exp(pos_T *ini) // If complete() was called then compl_pattern has been reset. The // following won't work then, bail out. - if (compl_pattern == NULL) + if (compl_pattern.string == NULL) break; // get the next set of completion matches @@ -4137,7 +4176,7 @@ ins_compl_get_exp(pos_T *ini) ins_compl_update_shown_match(void) { while (!ins_compl_equal(compl_shown_match, - compl_leader, (int)STRLEN(compl_leader)) + compl_leader.string, (int)compl_leader.length) && compl_shown_match->cp_next != NULL && !is_first_match(compl_shown_match->cp_next)) compl_shown_match = compl_shown_match->cp_next; @@ -4146,12 +4185,12 @@ ins_compl_update_shown_match(void) // backward, find the last match. if (compl_shows_dir_backward() && !ins_compl_equal(compl_shown_match, - compl_leader, (int)STRLEN(compl_leader)) + compl_leader.string, (int)compl_leader.length) && (compl_shown_match->cp_next == NULL || is_first_match(compl_shown_match->cp_next))) { while (!ins_compl_equal(compl_shown_match, - compl_leader, (int)STRLEN(compl_leader)) + compl_leader.string, (int)compl_leader.length) && compl_shown_match->cp_prev != NULL && !is_first_match(compl_shown_match->cp_prev)) compl_shown_match = compl_shown_match->cp_prev; @@ -4196,8 +4235,8 @@ ins_compl_insert(int in_compl_func) // Make sure we don't go over the end of the string, this can happen with // illegal bytes. - if (compl_len < (int)STRLEN(compl_shown_match->cp_str)) - ins_bytes(compl_shown_match->cp_str + compl_len); + if (compl_len < (int)compl_shown_match->cp_str.length) + ins_bytes(compl_shown_match->cp_str.string + compl_len); if (match_at_original_text(compl_shown_match)) compl_used_match = FALSE; else @@ -4277,7 +4316,7 @@ find_comp_when_fuzzy(void) comp = compl_first_match; do { - if (comp->cp_score == score && (str == comp->cp_str || str == comp->cp_text[CPT_ABBR])) + if (comp->cp_score == score && (str == comp->cp_str.string || str == comp->cp_text[CPT_ABBR])) return comp; comp = comp->cp_next; } while (comp != NULL && !is_first_match(comp)); @@ -4374,9 +4413,9 @@ find_next_completion_match( found_end = FALSE; } if (!match_at_original_text(compl_shown_match) - && compl_leader != NULL + && compl_leader.string != NULL && !ins_compl_equal(compl_shown_match, - compl_leader, (int)STRLEN(compl_leader)) + compl_leader.string, (int)compl_leader.length) && !(compl_fuzzy_match && compl_shown_match->cp_score > 0)) ++todo; else @@ -4436,7 +4475,7 @@ ins_compl_next( if (compl_shown_match == NULL) return -1; - if (compl_leader != NULL + if (compl_leader.string != NULL && !match_at_original_text(compl_shown_match) && !compl_fuzzy_match) // Update "compl_shown_match" to the actually shown match @@ -4474,7 +4513,7 @@ ins_compl_next( // Insert the text of the new completion, or the compl_leader. if (compl_no_insert && !started) { - ins_bytes(compl_orig_text + get_compl_len()); + ins_bytes(compl_orig_text.string + get_compl_len()); compl_used_match = FALSE; } else if (insert_match) @@ -4482,7 +4521,7 @@ ins_compl_next( if (!compl_get_longest || compl_used_match) ins_compl_insert(in_compl_func); else - ins_bytes(compl_leader + get_compl_len()); + ins_bytes(compl_leader.string + get_compl_len()); } else compl_used_match = FALSE; @@ -4662,8 +4701,7 @@ ins_compl_use_match(int c) /* * Get the pattern, column and length for normal completion (CTRL-N CTRL-P * completion) - * Sets the global variables: compl_col, compl_length, compl_pattern and - * compl_patternlen. + * Sets the global variables: compl_col, compl_length and compl_pattern. * Uses the global variables: compl_cont_status and ctrl_x_mode */ static int @@ -4679,29 +4717,33 @@ get_normal_compl_info(char_u *line, int startcol, colnr_T curs_col) compl_length = curs_col - startcol; } if (p_ic) - compl_pattern = str_foldcase(line + compl_col, + { + compl_pattern.string = str_foldcase(line + compl_col, compl_length, NULL, 0); + if (compl_pattern.string == NULL) + { + compl_pattern.length = 0; + return FAIL; + } + compl_pattern.length = STRLEN(compl_pattern.string); + } else - compl_pattern = vim_strnsave(line + compl_col, compl_length); - if (compl_pattern == NULL) { - compl_patternlen = 0; - return FAIL; + compl_pattern.string = vim_strnsave(line + compl_col, (size_t)compl_length); + if (compl_pattern.string == NULL) + { + compl_pattern.length = 0; + return FAIL; + } + compl_pattern.length = (size_t)compl_length; } } else if (compl_status_adding()) { char_u *prefix = (char_u *)"\\<"; size_t prefixlen = STRLEN_LITERAL("\\<"); + size_t n; - // we need up to 2 extra chars for the prefix - compl_pattern = alloc(quote_meta(NULL, line + compl_col, - compl_length) + prefixlen); - if (compl_pattern == NULL) - { - compl_patternlen = 0; - return FAIL; - } if (!vim_iswordp(line + compl_col) || (compl_col > 0 && (vim_iswordp(mb_prevptr(line, line + compl_col))))) @@ -4709,20 +4751,33 @@ get_normal_compl_info(char_u *line, int startcol, colnr_T curs_col) prefix = (char_u *)""; prefixlen = 0; } - STRCPY((char *)compl_pattern, prefix); - (void)quote_meta(compl_pattern + prefixlen, + + // we need up to 2 extra chars for the prefix + n = quote_meta(NULL, line + compl_col, compl_length) + prefixlen; + compl_pattern.string = alloc(n); + if (compl_pattern.string == NULL) + { + compl_pattern.length = 0; + return FAIL; + } + STRCPY((char *)compl_pattern.string, prefix); + (void)quote_meta(compl_pattern.string + prefixlen, line + compl_col, compl_length); + compl_pattern.length = n - 1; } else if (--startcol < 0 || !vim_iswordp(mb_prevptr(line, line + startcol + 1))) { + size_t len = STRLEN_LITERAL("\\<\\k\\k"); + // Match any word of at least two chars - compl_pattern = vim_strnsave((char_u *)"\\<\\k\\k", STRLEN_LITERAL("\\<\\k\\k")); - if (compl_pattern == NULL) + compl_pattern.string = vim_strnsave((char_u *)"\\<\\k\\k", len); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } + compl_pattern.length = len; compl_col += curs_col; compl_length = 0; } @@ -4756,32 +4811,34 @@ get_normal_compl_info(char_u *line, int startcol, colnr_T curs_col) // Only match word with at least two chars -- webb // there's no need to call quote_meta, // alloc(7) is enough -- Acevedo - compl_pattern = alloc(7); - if (compl_pattern == NULL) + compl_pattern.string = alloc(7); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } - STRCPY((char *)compl_pattern, "\\<"); - (void)quote_meta(compl_pattern + 2, line + compl_col, 1); - STRCAT((char *)compl_pattern, "\\k"); + STRCPY((char *)compl_pattern.string, "\\<"); + (void)quote_meta(compl_pattern.string + 2, line + compl_col, 1); + STRCAT((char *)compl_pattern.string, "\\k"); + compl_pattern.length = STRLEN(compl_pattern.string); } else { - compl_pattern = alloc(quote_meta(NULL, line + compl_col, - compl_length) + 2); - if (compl_pattern == NULL) + size_t n = quote_meta(NULL, line + compl_col, compl_length) + 2; + + compl_pattern.string = alloc(n); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } - STRCPY((char *)compl_pattern, "\\<"); - (void)quote_meta(compl_pattern + 2, line + compl_col, + STRCPY((char *)compl_pattern.string, "\\<"); + (void)quote_meta(compl_pattern.string + 2, line + compl_col, compl_length); + compl_pattern.length = n - 1; } } - compl_patternlen = STRLEN(compl_pattern); return OK; } @@ -4798,18 +4855,27 @@ get_wholeline_compl_info(char_u *line, colnr_T curs_col) if (compl_length < 0) // cursor in indent: empty pattern compl_length = 0; if (p_ic) - compl_pattern = str_foldcase(line + compl_col, compl_length, + { + compl_pattern.string = str_foldcase(line + compl_col, compl_length, NULL, 0); + if (compl_pattern.string == NULL) + { + compl_pattern.length = 0; + return FAIL; + } + compl_pattern.length = STRLEN(compl_pattern.string); + } else - compl_pattern = vim_strnsave(line + compl_col, compl_length); - if (compl_pattern == NULL) { - compl_patternlen = 0; - return FAIL; + compl_pattern.string = vim_strnsave(line + compl_col, (size_t)compl_length); + if (compl_pattern.string == NULL) + { + compl_pattern.length = 0; + return FAIL; + } + compl_pattern.length = (size_t)compl_length; } - compl_patternlen = STRLEN(compl_pattern); - return OK; } @@ -4836,14 +4902,14 @@ get_filename_compl_info(char_u *line, int startcol, colnr_T curs_col) compl_col += startcol; compl_length = (int)curs_col - startcol; - compl_pattern = addstar(line + compl_col, compl_length, EXPAND_FILES); - if (compl_pattern == NULL) + compl_pattern.string = addstar(line + compl_col, compl_length, EXPAND_FILES); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } - compl_patternlen = STRLEN(compl_pattern); + compl_pattern.length = STRLEN(compl_pattern.string); return OK; } @@ -4855,22 +4921,22 @@ get_filename_compl_info(char_u *line, int startcol, colnr_T curs_col) static int get_cmdline_compl_info(char_u *line, colnr_T curs_col) { - compl_pattern = vim_strnsave(line, curs_col); - if (compl_pattern == NULL) + compl_pattern.string = vim_strnsave(line, curs_col); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } - compl_patternlen = curs_col; - set_cmd_context(&compl_xp, compl_pattern, - (int)compl_patternlen, curs_col, FALSE); + compl_pattern.length = curs_col; + set_cmd_context(&compl_xp, compl_pattern.string, + (int)compl_pattern.length, curs_col, FALSE); if (compl_xp.xp_context == EXPAND_UNSUCCESSFUL || compl_xp.xp_context == EXPAND_NOTHING) // No completion possible, use an empty pattern to get a // "pattern not found" message. compl_col = curs_col; else - compl_col = (int)(compl_xp.xp_pattern - compl_pattern); + compl_col = (int)(compl_xp.xp_pattern - compl_pattern.string); compl_length = curs_col - compl_col; return OK; @@ -4959,14 +5025,14 @@ get_userdefined_compl_info(colnr_T curs_col UNUSED) // it may have become invalid. line = ml_get(curwin->w_cursor.lnum); compl_length = curs_col - compl_col; - compl_pattern = vim_strnsave(line + compl_col, compl_length); - if (compl_pattern == NULL) + compl_pattern.string = vim_strnsave(line + compl_col, (size_t)compl_length); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } - compl_patternlen = compl_length; + compl_pattern.length = (size_t)compl_length; ret = OK; #endif @@ -5001,14 +5067,14 @@ get_spell_compl_info(int startcol UNUSED, colnr_T curs_col UNUSED) } // Need to obtain "line" again, it may have become invalid. line = ml_get(curwin->w_cursor.lnum); - compl_pattern = vim_strnsave(line + compl_col, compl_length); - if (compl_pattern == NULL) + compl_pattern.string = vim_strnsave(line + compl_col, (size_t)compl_length); + if (compl_pattern.string == NULL) { - compl_patternlen = 0; + compl_pattern.length = 0; return FAIL; } - compl_patternlen = compl_length; + compl_pattern.length = (size_t)compl_length; ret = OK; #endif @@ -5227,16 +5293,16 @@ ins_compl_start(void) ins_compl_fixRedoBufForLeader(NULL); // Always add completion for the original text. - vim_free(compl_orig_text); - compl_orig_text = vim_strnsave(line + compl_col, compl_length); + VIM_CLEAR_STRING(compl_orig_text); + compl_orig_text.length = (size_t)compl_length; + compl_orig_text.string = vim_strnsave(line + compl_col, (size_t)compl_length); if (p_ic) flags |= CP_ICASE; - if (compl_orig_text == NULL || ins_compl_add(compl_orig_text, - -1, NULL, NULL, NULL, 0, flags, FALSE, NULL) != OK) + if (compl_orig_text.string == NULL || ins_compl_add(compl_orig_text.string, + (int)compl_orig_text.length, NULL, NULL, NULL, 0, flags, FALSE, NULL) != OK) { - VIM_CLEAR(compl_pattern); - compl_patternlen = 0; - VIM_CLEAR(compl_orig_text); + VIM_CLEAR_STRING(compl_pattern); + VIM_CLEAR_STRING(compl_orig_text); return FAIL; } @@ -5505,7 +5571,7 @@ quote_meta(char_u *dest, char_u *src, int len) void free_insexpand_stuff(void) { - VIM_CLEAR(compl_orig_text); + VIM_CLEAR_STRING(compl_orig_text); # ifdef FEAT_EVAL free_callback(&cfu_cb); free_callback(&ofu_cb); diff --git a/src/proto/insexpand.pro b/src/proto/insexpand.pro index dbd5ef7efa..4feab85854 100644 --- a/src/proto/insexpand.pro +++ b/src/proto/insexpand.pro @@ -31,6 +31,7 @@ unsigned int get_cot_flags(void); int pum_wanted(void); void ins_compl_show_pum(void); char_u *ins_compl_leader(void); +size_t ins_compl_leader_len(void); char_u *find_word_start(char_u *ptr); char_u *find_word_end(char_u *ptr); void ins_compl_clear(void); diff --git a/src/version.c b/src/version.c index 4eea94afc3..9adbf9ba80 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 882, /**/ 881, /**/ From d7745acbd8fe1e4feb356a6dc7fc185eeab17d67 Mon Sep 17 00:00:00 2001 From: GuyBrush Date: Sat, 23 Nov 2024 14:13:10 +0100 Subject: [PATCH 018/244] runtime(netrw): Fixing powershell execution issues on Windows closes: #16094 Signed-off-by: GuyBrush --- runtime/autoload/netrw.vim | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 629d35ea07..f920c64f8d 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -37,6 +37,7 @@ " 2024 Nov 10 by Vim Project: directory symlink not resolved in tree view (#16020) " 2024 Nov 14 by Vim Project: small fixes to netrw#BrowseX (#16056) " 2024 Nov 23 by Vim Project: update decompress defaults (#16104) +" 2024 Nov 23 by Vim Project: fix powershell escaping issues (#16094) " }}} " Former Maintainer: Charles E Campbell " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim @@ -11328,9 +11329,7 @@ endfun " --------------------------------------------------------------------- " s:NetrwExe: executes a string using "!" {{{2 fun! s:NetrwExe(cmd) -" call Dfunc("s:NetrwExe(a:cmd<".a:cmd.">)") - if has("win32") -" call Decho("using win32:",expand("")) + if has("win32") && exepath(&shell) !~? '\v[\/]?(cmd|pwsh|powershell)(\.exe)?$' && !g:netrw_cygwin let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] set shell& shellcmdflag& shellxquote& shellxescape& set shellquote& shellpipe& shellredir& shellslash& @@ -11340,13 +11339,11 @@ fun! s:NetrwExe(cmd) let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell endtry else -" call Decho("exe ".a:cmd,'~'.expand("")) exe a:cmd endif if v:shell_error call netrw#ErrorMsg(s:WARNING,"shell signalled an error",106) endif -" call Dret("s:NetrwExe : v:shell_error=".v:shell_error) endfun " --------------------------------------------------------------------- From a01148d2cb2f8d2820a5b95474d11db0d1802360 Mon Sep 17 00:00:00 2001 From: matveyt Date: Sat, 23 Nov 2024 14:19:58 +0100 Subject: [PATCH 019/244] runtime(doc): Expand docs on :! vs. :term fixes: #16071 closes: #16089 Signed-off-by: matveyt Signed-off-by: Christian Brabandt --- runtime/doc/tags | 2 ++ runtime/doc/terminal.txt | 15 ++++++++++++++- runtime/doc/various.txt | 18 ++++++++++++++++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/runtime/doc/tags b/runtime/doc/tags index cdb642e3dc..f339880208 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -10643,6 +10643,7 @@ template autocmd.txt /*template* tempname() builtin.txt /*tempname()* term++close terminal.txt /*term++close* term++open terminal.txt /*term++open* +term++shell terminal.txt /*term++shell* term-dependent-settings term.txt /*term-dependent-settings* term-list syntax.txt /*term-list* term.txt term.txt /*term.txt* @@ -10723,6 +10724,7 @@ terminal-job-index index.txt /*terminal-job-index* terminal-key-codes term.txt /*terminal-key-codes* terminal-mouse term.txt /*terminal-mouse* terminal-ms-windows terminal.txt /*terminal-ms-windows* +terminal-nospecial terminal.txt /*terminal-nospecial* terminal-options term.txt /*terminal-options* terminal-output-codes term.txt /*terminal-output-codes* terminal-resizing terminal.txt /*terminal-resizing* diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 593dec77c7..a0bfd6034e 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 9.1. Last change: 2024 Nov 19 +*terminal.txt* For Vim version 9.1. Last change: 2024 Nov 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -197,6 +197,13 @@ Command syntax ~ if [command] is NONE no job is started, the pty of the terminal can be used by a command like gdb. + *terminal-nospecial* + Vim itself only recognizes |cmdline-special| + characters inside [command]. Everything else will be + passed untouched. When needed to expand wildcards, + environment variables or other shell specials consider + |term++shell| option. + If [command] is missing the default behavior is to close the terminal when the shell exits. This can be changed with the ++noclose argument. @@ -241,10 +248,16 @@ Command syntax ~ no window will be used. ++norestore Do not include this terminal window in a session file. + + *term++shell* ++shell Instead of executing {command} directly, use a shell, like with `:!command` *E279* {only works on Unix and MS-Windows} + The resulting command will look like + 'shell' 'shellcmdflag' [command] + Other options related to `:!command` + have no effect. ++kill={how} When trying to close the terminal window kill the job with {how}. See |term_setkill()| for the values. diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 5f0ad0635c..0ebcd06841 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 9.1. Last change: 2024 Nov 12 +*various.txt* For Vim version 9.1. Last change: 2024 Nov 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -256,6 +256,17 @@ g8 Print the hex values of the bytes used in the :!{cmd} Execute {cmd} with the shell. See also the 'shell' and 'shelltype' option. For the filter command, see |:range!|. + + Vim builds command line using options 'shell', 'shcf', + 'sxq' and 'shq' in the following order: + `&sh &shcf &sxq &shq {cmd} &shq &sxq` + So setting both 'sxq' and 'shq' is possible but rarely + useful. Additional escaping inside `{cmd}` may also + be due to 'sxe' option. + + Also, all |cmdline-special| characters in {cmd} are + replaced by Vim before passing them to shell. + *E34* Any '!' in {cmd} is replaced with the previous external command (see also 'cpoptions'). But not when @@ -306,7 +317,10 @@ g8 Print the hex values of the bytes used in the CTRL-L or ":redraw!" if the command did display something. However, this depends on what the |t_ti| and |t_te| termcap entries are set to. - Also see |shell-window|. + + Hint: use |:terminal| command if you want to run {cmd} + in Vim window. `:term ++shell ++close {cmd}` could + serve as close approximation to what `:!{cmd}` does. *:!!* :!! Repeat last ":!{cmd}". From 9f860a14c308f7a9a27a6850d36790615717a710 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Sun, 24 Nov 2024 13:48:05 +0100 Subject: [PATCH 020/244] patch 9.1.0883: message history cleanup is missing some tests Problem: message history cleanup is missing some tests Solution: Add tests, refactor common code into did_set_msghistory() (Shougo Matsushita) closes: #16078 Co-authored-by: zeertzjq Co-authored-by: Milly Signed-off-by: Shougo Matsushita Signed-off-by: Christian Brabandt --- runtime/doc/options.txt | 4 +++- src/message.c | 14 ++++++++++---- src/option.c | 35 +++++++++++++++++++++++++---------- src/optiondefs.h | 2 +- src/proto/message.pro | 1 + src/proto/option.pro | 1 + src/testdir/test_cmdline.vim | 26 ++++++++++++++++++++++++++ src/version.c | 2 ++ 8 files changed, 69 insertions(+), 16 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 1aa5cccf7d..57d4af882f 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Nov 14 +*options.txt* For Vim version 9.1. Last change: 2024 Nov 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5923,6 +5923,8 @@ A jump table for the options with a short description can be found at |Q_op|. global Determines how many entries are remembered in the |:messages| history. The maximum value is 10000. + Setting it to zero clears the message history. + *'mzquantum'* *'mzq'* 'mzquantum' 'mzq' number (default 100) diff --git a/src/message.c b/src/message.c index 95bd7263a9..15eaaaeab7 100644 --- a/src/message.c +++ b/src/message.c @@ -1011,10 +1011,6 @@ add_msg_hist( if (msg_hist_off || msg_silent != 0) return; - // Don't let the message history get too big - while (msg_hist_len > p_mhi) - (void)delete_first_msg(); - // allocate an entry and add the message at the end of the history p = ALLOC_ONE(struct msg_hist); if (p == NULL) @@ -1039,6 +1035,8 @@ add_msg_hist( if (first_msg_hist == NULL) first_msg_hist = last_msg_hist; ++msg_hist_len; + + check_msg_hist(); } /* @@ -1062,6 +1060,14 @@ delete_first_msg(void) return OK; } + void +check_msg_hist(void) +{ + // Don't let the message history get too big + while (msg_hist_len > 0 && msg_hist_len > p_mhi) + (void)delete_first_msg(); +} + /* * ":messages" command. */ diff --git a/src/option.c b/src/option.c index 4616d63d36..226c31d453 100644 --- a/src/option.c +++ b/src/option.c @@ -3864,6 +3864,31 @@ did_set_number_relativenumber(optset_T *args UNUSED) return NULL; } +/* + * Process the updated 'msghistory' option value. + */ + char * +did_set_msghistory(optset_T *args UNUSED) +{ + char *errmsg = NULL; + + // 'msghistory' must be positive + if (p_mhi < 0) + { + errmsg = e_argument_must_be_positive; + p_mhi = 0; + } + else if (p_mhi > 10000) + { + errmsg = e_invalid_argument; + p_mhi = 10000; + } + + check_msg_hist(); + + return errmsg; +} + #if defined(FEAT_LINEBREAK) || defined(PROTO) /* * Process the new 'numberwidth' option value. @@ -4914,16 +4939,6 @@ check_num_option_bounds( errmsg = e_invalid_argument; p_hi = 10000; } - if (p_mhi < 0) - { - errmsg = e_argument_must_be_positive; - p_mhi = 0; - } - else if (p_mhi > 10000) - { - errmsg = e_invalid_argument; - p_mhi = 10000; - } if (p_re < 0 || p_re > 2) { errmsg = e_invalid_argument; diff --git a/src/optiondefs.h b/src/optiondefs.h index 81bb1db402..5df5fb75c2 100644 --- a/src/optiondefs.h +++ b/src/optiondefs.h @@ -1779,7 +1779,7 @@ static struct vimoption options[] = (char_u *)&p_mouset, PV_NONE, NULL, NULL, {(char_u *)500L, (char_u *)0L} SCTX_INIT}, {"msghistory","mhi", P_NUM|P_VI_DEF, - (char_u *)&p_mhi, PV_NONE, NULL, NULL, + (char_u *)&p_mhi, PV_NONE, did_set_msghistory, NULL, {(char_u *)500L, (char_u *)0L} SCTX_INIT}, {"mzquantum", "mzq", P_NUM, #ifdef FEAT_MZSCHEME diff --git a/src/proto/message.pro b/src/proto/message.pro index 54a0a77651..1c11444fcb 100644 --- a/src/proto/message.pro +++ b/src/proto/message.pro @@ -18,6 +18,7 @@ void emsg_namelen(char *msg, char_u *name, int len); char *msg_trunc_attr(char *s, int force, int attr); char_u *msg_may_trunc(int force, char_u *s); int delete_first_msg(void); +void check_msg_hist(void); void ex_messages(exarg_T *eap); void msg_end_prompt(void); void wait_return(int redraw); diff --git a/src/proto/option.pro b/src/proto/option.pro index 83f32aad61..8aa49c0186 100644 --- a/src/proto/option.pro +++ b/src/proto/option.pro @@ -56,6 +56,7 @@ char *did_set_maxcombine(optset_T *args); char *did_set_modifiable(optset_T *args); char *did_set_modified(optset_T *args); char *did_set_mousehide(optset_T *args); +char *did_set_msghistory(optset_T *args); char *did_set_number_relativenumber(optset_T *args); char *did_set_numberwidth(optset_T *args); char *did_set_paste(optset_T *args); diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 110be65cd9..9aec012ed8 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -4011,4 +4011,30 @@ func Test_cd_bslash_completion_windows() let &shellslash = save_shellslash endfunc +func Test_msghistory() + " After setting 'msghistory' to 2 and outputting a message 4 times with + " :echomsg, is the number of output lines of :messages 2? + set msghistory=2 + echomsg 'foo' + echomsg 'bar' + echomsg 'baz' + echomsg 'foobar' + call assert_equal(['baz', 'foobar'], GetMessages()) + + " When the number of messages is 10 and 'msghistory' is changed to 5, is the + " number of output lines of :messages 5? + set msghistory=10 + for num in range(1, 10) + echomsg num + endfor + set msghistory=5 + call assert_equal(5, len(GetMessages())) + + " Check empty list + set msghistory=0 + call assert_true(empty(GetMessages())) + + set msghistory& +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 9adbf9ba80..6f01f781be 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 883, /**/ 882, /**/ From f63449a5d184fcce4c4c3c18228c702ca478c3d7 Mon Sep 17 00:00:00 2001 From: RestorerZ Date: Sun, 24 Nov 2024 13:50:28 +0100 Subject: [PATCH 021/244] translation(ru): updated vimtutor translation, update MAINTAINERS file the translated man page is synchronized with the original English closes: #16113 Signed-off-by: RestorerZ Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 10 ++++ runtime/doc/vimtutor-ru.1 | 102 +++++++++++++++++++++++--------- runtime/doc/vimtutor-ru.UTF-8.1 | 102 +++++++++++++++++++++++--------- 3 files changed, 160 insertions(+), 54 deletions(-) diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index b899db3bd3..5bc45e78e5 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -111,6 +111,16 @@ runtime/compiler/yamllint.vim @romainl runtime/compiler/zsh.vim @dkearns runtime/doc/ft_hare.txt @selenebun runtime/doc/ps1.txt @heaths +runtime/doc/evim-ru.1 @RestorerZ +runtime/doc/evim-ru.UTF-8.1 @RestorerZ +runtime/doc/vim-ru.1 @RestorerZ +runtime/doc/vim-ru.UTF-8.1 @RestorerZ +runtime/doc/vimdiff-ru.1 @RestorerZ +runtime/doc/vimdiff-ru.UTF-8.1 @RestorerZ +runtime/doc/vimtutor-ru.1 @RestorerZ +runtime/doc/vimtutor-ru.UTF-8.1 @RestorerZ +runtime/doc/xxd-ru.1 @RestorerZ +runtime/doc/xxd-ru.UTF-8.1 @RestorerZ runtime/ftplugin/abaqus.vim @costerwi runtime/ftplugin/antlr4.vim @jiangyinzuo runtime/ftplugin/apache.vim @dubgeiser diff --git a/runtime/doc/vimtutor-ru.1 b/runtime/doc/vimtutor-ru.1 index ab865f234b..71bdf7ad0b 100644 --- a/runtime/doc/vimtutor-ru.1 +++ b/runtime/doc/vimtutor-ru.1 @@ -1,63 +1,111 @@ -.TH VIMTUTOR 1 "12 Á×ÇÕÓÔÁ 2024" +.TH VIMTUTOR 1 "04 ÎÏÑÂÒÑ 2024" .SH îáúîáþåîéå -ðÒÏÇÒÁÍÍÁ vimtutor \[em] ×ÙÐÏÌÎÑÅÔ ÚÁÐÕÓË ÕÞÅÂÎÉËÁ ÐÏ ÒÅÄÁËÔÏÒÕ Vim. +ðÒÏÇÒÁÍÍÁ vimtutor \[em] ×ÙÐÏÌÎÑÅÔ ÚÁÐÕÓË ÕÞÅÂÎÉËÁ ÐÏ ÒÅÄÁËÔÏÒÕ Vim .SH ëòáôëéê ïâúïò .br -.B vimtutor [\-g] [ÑÚÙË] +.B vimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter îïíåò] [\-g | \-\-gui] [ISO639] +.br +.B vimtutor [\-h | \-\-help] +.br +.B vimtutor [\-\-list] .SH ïðéóáîéå ðÏ ËÏÍÁÎÄÅ .B vimtutor ×ÙÐÏÌÎÑÅÔÓÑ ÚÁÐÕÓË ÒÅÄÁËÔÏÒÁ .B Vim. -Ó ÚÁÇÒÕÖÅÎÎÙÍ ÆÁÊÌÏÍ, ÓÏÄÅÒÖÁÝÅÍ ÔÅËÓÔ ÕÞÅÂÎÉËÁ. îÏ ÐÅÒÅÄ ÜÔÉÍ ÐÒÏÉÓÈÏÄÉÔ -ÓÏÚÄÁÎÉÅ ËÏÐÉÉ ÆÁÊÌÁ ÕÞÅÂÎÉËÁ, ÞÔÏÂÙ × Î£Í ÍÏÖÎÏ ÂÙÌÏ ×ÙÐÏÌÎÑÔØ ÐÒÁËÔÉÞÅÓËÉÅ -ÚÁÄÁÎÉÑ ÂÅÚ ÏÐÁÓÅÎÉÑ ÉÓÐÏÒÔÉÔØ ÉÓÈÏÄÎÙÊ ÆÁÊÌ. +Ó ÚÁÇÒÕÖÅÎÎÙÍ ÆÁÊÌÏÍ, ÓÏÄÅÒÖÁÝÅÍ ÔÅËÓÔ ÕÞÅÂÎÉËÁ. .PP ðÒÁËÔÉÞÅÓËÉÊ ËÕÒÓ, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÏÔËÒÙÔ ÐÏ ËÏÍÁÎÄÅ .B vimtutor ÐÏÌÅÚÅÎ ÄÌÑ ÎÏ×ÉÞËÏ×, ÖÅÌÁÀÝÉÈ ÎÁÕÞÉÔØÓÑ ÓÁÍÙÍ ÏÓÎÏ×ÎÙÍ ËÏÍÁÎÄÁÍ ÒÅÄÁËÔÏÒÁ .B Vim. .PP -þÅÒÅÚ ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ \-g ÄÁ£ÔÓÑ ÕËÁÚÁÎÉÅ ÎÁ ÚÁÐÕÓË -ÕÞÅÂÎÉËÁ × ÇÒÁÆÉÞÅÓËÏÍ ÉÎÔÅÒÆÅÊÓÅ ÒÅÄÁËÔÏÒÁ, ÅÓÌÉ ÜÔÏ, ËÏÎÅÞÎÏ, ×ÏÚÍÏÖÎÏ. -ðÒÉ ÎÅ ×ÏÚÍÏÖÎÏÓÔÉ ×ÙÐÏÌÎÉÔØ ÜÔÏ, ÂÕÄÅÔ ÚÁÐÕÝÅÎ ËÏÎÓÏÌØÎÙÊ ×ÁÒÉÁÎÔ ÒÅÄÁËÔÏÒÁ -.B Vim. +îÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ [ISO639] ÚÁÄÁ£ÔÓÑ ËÁË Ä×ÕÈ- ÉÌÉ ÔÒ£ÈÓÉÍ×ÏÌØÎÙÊ ËÏÄ ÑÚÙËÁ, +ÎÁÐÒÉÍÅÒ, "ru" ÉÌÉ "it", ÉÌÉ "bar". .PP -îÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ [ÑÚÙË] ÚÁÄÁ£ÔÓÑ ËÁË Ä×ÕÈÓÉÍ×ÏÌØÎÙÊ ËÏÄ ÑÚÙËÁ, ÎÁÐÒÉÍÅÒ, -"ru" ÉÌÉ "it". -åÓÌÉ ÁÒÇÕÍÅÎÔ [ÑÚÙË] ÎÅ ÕËÁÚÁÎ, ÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ ÑÚÙË, ÚÁÄÁÎÎÙÊ × ÄÅÊÓÔ×ÕÀÝÉÈ -× ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÒÅÇÉÏÎÁÌØÎÙÈ ÎÁÓÔÒÏÊËÁÈ. åÓÌÉ ÕÞÅÂÎÉËÁ ÎÁ ÜÔÏÍ ÑÚÙËÅ ÎÅ -ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ, ÐÏ ÕÍÏÌÞÁÎÉÀ, ÉÓÐÏÌØÚÕÅÔÓÑ ÕÞÅÂÎÉË ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ. +ðÏ ËÏÍÁÎÄÅ +.B Vimtutor +ÂÕÄÅÔ ÏÔËÒÙÔÁ ÓÏÚÄÁÎÎÁÑ ËÏÐÉÉ ÆÁÊÌÁ ÕÞÅÂÎÉËÁ, ÞÔÏÂÙ × Î£Í ÍÏÖÎÏ ÂÙÌÏ ×ÙÐÏÌÎÑÔØ +ÐÒÁËÔÉÞÅÓËÉÅ ÚÁÄÁÎÉÑ ÂÅÚ ÏÐÁÓÅÎÉÑ ÉÓÐÏÒÔÉÔØ ÉÓÈÏÄÎÙÊ ÆÁÊÌ. .PP ðÒÉ ÒÁÂÏÔÅ Ó ÕÞÅÂÎÉËÏÍ, ÒÅÄÁËÔÏÒ .B Vim -×ÓÅÇÄÁ ÚÁÐÕÓËÁÅÔÓÑ × ÒÅÖÉÍÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ÒÅÄÁËÔÏÒÏÍ Vi. +×ÓÅÇÄÁ ÚÁÐÕÓËÁÅÔÓÑ × ÒÅÖÉÍÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ÒÅÄÁËÔÏÒÏÍ +.B Vi. +.SH áòçõíåîôù ëïíáîäîïê óôòïëé +.TP +.BR \-l ", " \-\-language =\fIISO639\fR +úÁÄÁ£Ô Ä×ÕÈ- ÉÌÉ ÔÒ£ÈÓÉÍ×ÏÌÎÙÊ ËÏÄ ÑÚÙËÁ. îÁÐÒÉÍÅÒ, "ru", "es", "bar". ðÏ +ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ ÑÚÙË, ÚÁÄÁÎÎÙÊ × ÄÅÊÓÔ×ÕÀÝÉÈ ÒÅÇÉÏÎÁÌØÎÙÈ ÎÁÓÔÒÏÊËÁÈ, +ÅÓÌÉ ÔÁËÉÅ ÎÁÓÔÒÏÊËÉ ÅÓÔØ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÁÎÇÌÉÊÓËÉÊ ÑÚÙË. +.TP +.BR \-c ", " \-\-chapter =\fIîïíåò\fR +úÁÄÁ£Ô ÎÏÍÅÒ ÇÌÁ×Ù ÕÞÅÂÎÉËÁ. úÎÁÞÅÎÉÅÍ ÍÏÖÅÔ ÂÙÔØ 1 ÉÌÉ 2. ðÏ ÕÍÏÌÞÁÎÉÀ ÂÕÄÅÔ +ÏÔËÒÙÔÁ ÐÅÒ×ÁÑ ÇÌÁ×Á ÕÞÅÂÎÉËÁ. +.TP +.BR \-g ", " \-\-gui +õËÁÚÙ×ÁÅÔ ÎÁ ÚÁÐÕÓË ÕÞÅÂÎÉËÁ × ÇÒÁÆÉÞÅÓËÏÍ ÉÎÔÅÒÆÅÊÓÅ ÒÅÄÁËÔÏÒÁ, ÅÓÌÉ ÜÔÏ +×ÏÚÍÏÖÎÏ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÂÕÄÅÔ ÚÁÐÕÝÅÎ ËÏÎÓÏÌØÎÙÊ ×ÁÒÉÁÎÔ ÒÅÄÁËÔÏÒÁ +.B Vim. +.TP +.BR \-h ", " \-\-help +âÕÄÅÔ ÐÏËÁÚÁÎÁ ËÒÁÔËÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÁÒÇÕÍÅÎÔÁÈ É ÐÁÒÁÍÅÔÒÁÈ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ. +.TP +.BR \-\-list +âÕÄÅÔ ÐÏËÁÚÁÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ÄÏÓÔÕÐÎÙÈ ÇÌÁ×ÁÈ É ÑÚÙËÁÈ ÕÞÅÂÎÉËÁ. +.SH ðòéíåòù +þÔÏÂÙ ÏÔËÒÙÔØ ÐÅÒ×ÕÀ ÇÌÁ×Õ ÕÞÅÂÎÉËÁ ÎÁ ÎÅÍÅÃËÏÍ ÑÚÙËÅ, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ +.PP +.nf +.RS +vimtutor de +.RE +.fi +.PP +þÔÏÂÙ ÏÔËÒÙÔØ ×ÔÏÒÕÀ ÇÌÁ×Õ ÕÞÅÂÎÉËÁ ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ +.PP +.nf +.RS +vimtutor -c2 +.RE +.fi +.PP +ðÒÉÍÅÒ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÏÌÎÙÈ ÆÏÒÍ ÁÒÇÕÍÅÎÔÏ× ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ÄÌÑ ÂÁ×ÁÒÓËÏÇÏ +ÑÚÙËÁ Ó ÏÔËÒÙÔÉÅÍ ÐÅÒ×ÏÊ ÇÌÁ×Ù ÕÞÅÂÎÉËÁ × ÇÒÁÆÉÞÅÓËÏÍ ÉÎÔÅÒÆÅÊÓÅ ÒÅÄÁËÔÏÒÁ +.PP +.nf +.RS +vimtutor --language bar --chapter 1 --gui +.RE +.fi .SH æáêìù -úÄÅÓØ É ÄÁÌÅÅ -.I "vim??" -ÏÚÎÁÞÁÅÔ ÓÏËÒÁÝ£ÎÎÕÀ ÚÁÐÉÓØ ÎÏÍÅÒÁ ×ÅÒÓÉÉ, ÎÁÐÒÉÍÅÒ, vim91 ÄÌÑ ×ÅÒÓÉÉ ÒÅÄÁËÔÏÒÁ -.B Vim 9.1 .TP 15 -/usr/local/share/vim/vim??/tutor/tutor[.ÑÚÙË] -æÁÊÌÙ Ó ÔÅËÓÔÏÍ ÕÞÅÂÎÉËÁ +/usr/local/share/vim/vim??/tutor/tutor1[.ISO639] +æÁÊÌÙ Ó ÔÅËÓÔÏÍ ÐÅÒ×ÏÊ ÇÌÁ×Ù ÕÞÅÂÎÉËÁ +.B Vimtutor. +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor2[.ISO639] +æÁÊÌÙ Ó ÔÅËÓÔÏÍ ×ÔÏÒÏÊ ÇÌÁ×Ù ÕÞÅÂÎÉËÁ .B Vimtutor. .TP 15 /usr/local/share/vim/vim??/tutor/tutor.vim ëÏÍÁÎÄÎÙÊ ÆÁÊÌ ÒÅÄÁËÔÏÒÁ .B Vim, -ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÒÁÂÏÞÅÊ ËÏÐÉÉ ÔÅËÓÔÁ ÕÞÅÂÎÉËÁ +ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÓÏÚÄÁÎÉÑ ÒÁÂÏÞÅÊ ËÏÐÉÉ ÆÁÊÌÁ ÕÞÅÂÎÉËÁ .B Vimtutor. .SH á÷ôïòù õÞÅÂÎÉË .B Vimtutor ÂÙÌ ×ÐÅÒ×ÙÅ ÎÁÐÉÓÁÎ ÄÌÑ Vi íÁÊËÌÏÍ ë. ðÉÒÓÏÍ (Michael C. Pierce) É òÏÂÅÒÔÏÍ ë. õÜÁ (Robert K. Ware) ÉÚ Colorado School of Mines ÐÏ ÉÄÅÅ þÁÒÌØÚÁ óÍÉÔÁ (Charles -Smith) ÉÚ Colorado State University. E-mail: bware@mines.colorado.edu (ÔÅÐÅÒØ -ÎÅÄÏÓÔÕÐÅÎ). -.br +Smith) ÉÚ Colorado State University. +.B E-mail: bware@mines.colorado.edu +(ÔÅÐÅÒØ ÎÅÄÏÓÔÕÐÅÎ). +.PP ÷ÐÏÓÌÅÄÓÔ×ÉÉ ÕÞÅÂÎÉË ÂÙÌ ÄÏÒÁÂÏÔÁÎ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ÒÅÄÁËÔÏÒÅ .B Vim âÒÁÍÏÍ íÏÌÅÎÁÒÏÍ (Bram Moolenaar). -éÍÅÎÁ ÐÅÒÅ×ÏÄÞÉËÏ× ÕÞÅÂÎÉËÁ ÕÐÏÍÉÎÁÀÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÆÁÊÌÁÈ. +.PP +éÍÅÎÁ ÐÅÒÅ×ÏÄÞÉËÏ× ÕËÁÚÁÎÙ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÆÁÊÌÁÈ Ó ÐÅÒÅ×ÏÄÁÍÉ ÕÞÅÂÎÉËÁ. .SH óíïôòéôå ôáëöå vim(1) diff --git a/runtime/doc/vimtutor-ru.UTF-8.1 b/runtime/doc/vimtutor-ru.UTF-8.1 index 27ec88268e..ca6922d099 100644 --- a/runtime/doc/vimtutor-ru.UTF-8.1 +++ b/runtime/doc/vimtutor-ru.UTF-8.1 @@ -1,63 +1,111 @@ -.TH VIMTUTOR 1 "12 авгуÑта 2024" +.TH VIMTUTOR 1 "04 ноÑÐ±Ñ€Ñ 2024" .SH ÐÐЗÐÐЧЕÐИЕ -Программа vimtutor \[em] выполнÑет запуÑк учебника по редактору Vim. +Программа vimtutor \[em] выполнÑет запуÑк учебника по редактору Vim .SH КРÐТКИЙ ОБЗОР .br -.B vimtutor [\-g] [Ñзык] +.B vimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter ÐОМЕР] [\-g | \-\-gui] [ISO639] +.br +.B vimtutor [\-h | \-\-help] +.br +.B vimtutor [\-\-list] .SH ОПИСÐÐИЕ По команде .B vimtutor выполнÑетÑÑ Ð·Ð°Ð¿ÑƒÑк редактора .B Vim. -Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼ файлом, Ñодержащем текÑÑ‚ учебника. Ðо перед Ñтим проиÑходит -Ñоздание копии файла учебника, чтобы в нём можно было выполнÑÑ‚ÑŒ практичеÑкие -Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð±ÐµÐ· опаÑÐµÐ½Ð¸Ñ Ð¸Ñпортить иÑходный файл. +Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼ файлом, Ñодержащем текÑÑ‚ учебника. .PP ПрактичеÑкий курÑ, который будет открыт по команде .B vimtutor полезен Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ‡ÐºÐ¾Ð², желающих научитьÑÑ Ñамым оÑновным командам редактора .B Vim. .PP -Через необÑзательный аргумент командной Ñтроки \-g даётÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ на запуÑк -учебника в графичеÑком интерфейÑе редактора, еÑли Ñто, конечно, возможно. -При не возможноÑти выполнить Ñто, будет запущен конÑольный вариант редактора -.B Vim. +ÐеобÑзательный аргумент [ISO639] задаётÑÑ ÐºÐ°Ðº двух- или трёхÑимвольный код Ñзыка, +например, "ru" или "it", или "bar". .PP -ÐеобÑзательный аргумент [Ñзык] задаётÑÑ ÐºÐ°Ðº двухÑимвольный код Ñзыка, например, -"ru" или "it". -ЕÑли аргумент [Ñзык] не указан, то иÑпользуетÑÑ Ñзык, заданный в дейÑтвующих -в наÑтоÑщий момент региональных наÑтройках. ЕÑли учебника на Ñтом Ñзыке не -ÑущеÑтвует, то, по умолчанию, иÑпользуетÑÑ ÑƒÑ‡ÐµÐ±Ð½Ð¸Ðº на английÑком Ñзыке. +По команде +.B Vimtutor +будет открыта ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ð¸ файла учебника, чтобы в нём можно было выполнÑÑ‚ÑŒ +практичеÑкие Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð±ÐµÐ· опаÑÐµÐ½Ð¸Ñ Ð¸Ñпортить иÑходный файл. .PP При работе Ñ ÑƒÑ‡ÐµÐ±Ð½Ð¸ÐºÐ¾Ð¼, редактор .B Vim -вÑегда запуÑкаетÑÑ Ð² режиме ÑовмеÑтимоÑти Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ Vi. +вÑегда запуÑкаетÑÑ Ð² режиме ÑовмеÑтимоÑти Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ +.B Vi. +.SH ÐРГУМЕÐТЫ КОМÐÐДÐОЙ СТРОКИ +.TP +.BR \-l ", " \-\-language =\fIISO639\fR +Задаёт двух- или трёхÑимволный код Ñзыка. Ðапример, "ru", "es", "bar". По +умолчанию иÑпользуетÑÑ Ñзык, заданный в дейÑтвующих региональных наÑтройках, +еÑли такие наÑтройки еÑÑ‚ÑŒ. Ð’ противном Ñлучае иÑпользуетÑÑ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкий Ñзык. +.TP +.BR \-c ", " \-\-chapter =\fIÐОМЕР\fR +Задаёт номер главы учебника. Значением может быть 1 или 2. По умолчанию будет +открыта Ð¿ÐµÑ€Ð²Ð°Ñ Ð³Ð»Ð°Ð²Ð° учебника. +.TP +.BR \-g ", " \-\-gui +Указывает на запуÑк учебника в графичеÑком интерфейÑе редактора, еÑли Ñто +возможно. Ð’ противном Ñлучае будет запущен конÑольный вариант редактора +.B Vim. +.TP +.BR \-h ", " \-\-help +Будет показана ÐºÑ€Ð°Ñ‚ÐºÐ°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± аргументах и параметрах командной Ñтроки. +.TP +.BR \-\-list +Будет показана Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ доÑтупных главах и Ñзыках учебника. +.SH ПРИМЕРЫ +Чтобы открыть первую главу учебника на немецком Ñзыке, наберите команду +.PP +.nf +.RS +vimtutor de +.RE +.fi +.PP +Чтобы открыть вторую главу учебника на английÑком Ñзыке, наберите команду +.PP +.nf +.RS +vimtutor -c2 +.RE +.fi +.PP +Пример Ñ Ð¸Ñпользованием полных форм аргументов командной Ñтроки Ð´Ð»Ñ Ð±Ð°Ð²Ð°Ñ€Ñкого +Ñзыка Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸ÐµÐ¼ первой главы учебника в графичеÑком интерфейÑе редактора +.PP +.nf +.RS +vimtutor --language bar --chapter 1 --gui +.RE +.fi .SH ФÐЙЛЫ -ЗдеÑÑŒ и далее -.I "vim??" -означает Ñокращённую запиÑÑŒ номера верÑии, например, vim91 Ð´Ð»Ñ Ð²ÐµÑ€Ñии редактора -.B Vim 9.1 .TP 15 -/usr/local/share/vim/vim??/tutor/tutor[.Ñзык] -Файлы Ñ Ñ‚ÐµÐºÑтом учебника +/usr/local/share/vim/vim??/tutor/tutor1[.ISO639] +Файлы Ñ Ñ‚ÐµÐºÑтом первой главы учебника +.B Vimtutor. +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor2[.ISO639] +Файлы Ñ Ñ‚ÐµÐºÑтом второй главы учебника .B Vimtutor. .TP 15 /usr/local/share/vim/vim??/tutor/tutor.vim Командный файл редактора .B Vim, -который иÑпользуетÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹ копии текÑта учебника +который иÑпользуетÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹ копии файла учебника .B Vimtutor. .SH ÐВТОРЫ Учебник .B Vimtutor был впервые напиÑан Ð´Ð»Ñ Vi Майклом К. ПирÑом (Michael C. Pierce) и Робертом К. УÑа (Robert K. Ware) из Colorado School of Mines по идее Чарльза Смита (Charles -Smith) из Colorado State University. E-mail: bware@mines.colorado.edu (теперь -недоÑтупен). -.br +Smith) из Colorado State University. +.B E-mail: bware@mines.colorado.edu +(теперь недоÑтупен). +.PP ВпоÑледÑтвии учебник был доработан Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² редакторе .B Vim Брамом Моленаром (Bram Moolenaar). -Имена переводчиков учебника упоминаютÑÑ Ð² ÑоответÑтвующих файлах. +.PP +Имена переводчиков указаны в ÑоответÑтвующих файлах Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°Ð¼Ð¸ учебника. .SH СМОТРИТЕ ТÐКЖЕ vim(1) From ccc024f3a7978b82b4c3c249a9fda1337f1a1468 Mon Sep 17 00:00:00 2001 From: nisbet-hubbard <87453615+nisbet-hubbard@users.noreply.github.com> Date: Sun, 24 Nov 2024 14:07:31 +0100 Subject: [PATCH 022/244] runtime(apache): Update syntax directives for apache server 2.4.62 closes: #16109 Signed-off-by: nisbet-hubbard <87453615+nisbet-hubbard@users.noreply.github.com> Signed-off-by: Christian Brabandt --- runtime/syntax/apache.vim | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim index d2b8be733b..65317fd36a 100644 --- a/runtime/syntax/apache.vim +++ b/runtime/syntax/apache.vim @@ -3,8 +3,8 @@ " Maintainer: David Necas (Yeti) " License: This file can be redistribued and/or modified under the same terms " as Vim itself. -" Last Change: 2024 Nov 23 -" Notes: Last synced with apache-2.2.3, version 1.x is no longer supported +" Last Change: 2024 Nov 24 +" Notes: Last synced with apache-2.4.62, version 1.x is no longer supported " TODO: see particular FIXME's scattered through the file " make it really linewise? " + add `display' where appropriate @@ -46,9 +46,9 @@ syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH P " Added as suggested by Mikko Koivunalho syn keyword apacheMethodOption BASELINE-CONTROL CHECKIN CHECKOUT LABEL MERGE MKACTIVITY MKWORKSPACE REPORT UNCHECKOUT UPDATE VERSION-CONTROL contained syn case ignore -syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything +syn match apacheSection "<\/\=\(Directory\|Files\|If\|Else\|Location\|VirtualHost\)[^>]*>" contains=apacheAnything syn match apacheSection "<\/\=\(RequireAll\|RequireAny\|RequireNone\)>" contains=apacheAnything -syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError +syn match apacheLimitSection "<\/\=Limit[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError syn keyword apacheLimitSectionKeyword Limit LimitExcept contained syn match apacheAuthType "AuthType\s.*$" contains=apacheAuthTypeValue syn keyword apacheAuthTypeValue Basic Digest @@ -69,7 +69,7 @@ syn keyword apacheDeclaration AuthAuthoritative AuthGroupFile AuthUserFile syn keyword apacheDeclaration AuthBasicAuthoritative AuthBasicProvider syn keyword apacheDeclaration AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize syn keyword apacheOption none auth auth-int MD5 MD5-sess -syn match apacheSection "<\/\=\(]*>" contains=apacheAnything +syn match apacheSection "<\/\=Auth[ntz]ProviderAlias[^>]*>" contains=apacheAnything syn keyword apacheDeclaration Anonymous Anonymous_Authoritative Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail syn keyword apacheDeclaration AuthDBDUserPWQuery AuthDBDUserRealmQuery syn keyword apacheDeclaration AuthDBMGroupFile AuthDBMAuthoritative @@ -156,7 +156,7 @@ syn keyword apacheDeclaration PerlCleanupHandler PerlChildInitHandler PerlChildE syn keyword apacheDeclaration PerlRestartHandler PerlDispatchHandler syn keyword apacheDeclaration PerlFreshRestart PerlSendHeader syn keyword apacheDeclaration php_value php_flag php_admin_value php_admin_flag -syn match apacheSection "<\/\=\(Proxy\|ProxyMatch\)[^>]*>" contains=apacheAnything +syn match apacheSection "<\/\=\(Macro\|MDomain\|Proxy\)[^>]*>" contains=apacheAnything syn keyword apacheDeclaration AllowCONNECT NoProxy ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize ProxyMaxForwards ProxyPass ProxyPassMatch ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia syn keyword apacheDeclaration RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule syn keyword apacheOption inherit @@ -174,8 +174,8 @@ syn keyword apacheDeclaration SuexecUserGroup syn keyword apacheDeclaration UserDir syn keyword apacheDeclaration CookieDomain CookieExpires CookieName CookieStyle CookieTracking syn keyword apacheOption Netscape Cookie Cookie2 RFC2109 RFC2965 -syn match apacheSection "<\/\=\(]*>" contains=apacheAnything syn keyword apacheDeclaration VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP +syn keyword apacheDeclaration AcceptErrorsNonFatal AsyncFilter AsyncRequestWorkerFactor AuthBasicFake AuthBasicUseDigestAlgorithm AuthBearerAuthoritative AuthBearerProvider AuthBearerProxy AuthDBMType AuthDBMUserFile AuthFormAuthoritative AuthFormBody AuthFormDisableNoStore AuthFormFakeBasicAuth AuthFormLocation AuthFormLoginRequiredLocation AuthFormLoginSuccessLocation AuthFormLogoutLocation AuthFormMethod AuthFormMimetype AuthFormPassword AuthFormProvider AuthFormSitePassphrase AuthFormSize AuthFormUsername AuthLDAPAuthorizePrefix AuthLDAPBindAuthoritative AuthLDAPCompareAsUser AuthLDAPInitialBindAsUser AuthLDAPInitialBindPattern AuthLDAPMaxSubGroupDepth AuthLDAPRemoteUserAttribute AuthLDAPSearchAsUser AuthLDAPSubGroupAttribute AuthLDAPSubGroupClass AuthLDAPURL AuthMerging AuthnCacheContext AuthnCacheEnable AuthnCacheProvideFor AuthnCacheSOCache AuthnCacheTimeout AuthnzFcgiCheckAuthnProvider AuthnzFcgiDefineProvider AuthtJwtClaim AuthtJwtDriver AuthtJwtSign AuthtJwtVerify AuthzDBDLoginToReferer AuthzDBDQuery AuthzDBDRedirectQuery AuthzSendForbiddenOnFailure BalancerGrowth BalancerInherit BalancerMember BalancerPersist BrotliAlterETag BrotliCompressionMaxInputBlock BrotliCompressionQuality BrotliCompressionWindow BrotliFilterNote BufferSize CacheDetailHeader CacheHeader CacheIgnoreQueryString CacheIgnoreURLSessionIdentifiers CacheKeyBaseURL CacheLock CacheLockMaxAge CacheLockPath CacheMinExpire CacheQuickHandler CacheReadSize CacheReadTime CacheSocache CacheSocacheMaxSize CacheSocacheMaxTime CacheSocacheMinTime CacheSocacheReadSize CacheSocacheReadTime CacheStaleOnError CacheStoreExpired CGIDScriptTimeout CGIPassAuth CGIScriptTimeout CGIVar CheckBasenameMatch ChrootDir CookieHTTPOnly CookieSameSite CookieSecure CryptoCipher CryptoDriver CryptoIV CryptoKey CryptoSize CTAuditStorage CTLogClient CTLogConfigDB CTMaxSCTAge CTProxyAwareness CTSCTStorage CTServerHelloSCTLimit CTStaticLogConfig CTStaticSCTs DBDInitSQL DefaultRuntimeDir DefaultStateDir DeflateAlterETag DeflateInflateLimitRequestBody DeflateInflateRatioBurst DeflateInflateRatioLimit DirectoryCheckHandler DTracePrivileges FallbackResource Files FilesMatch FirehoseConnectionInput FirehoseConnectionOutput FirehoseProxyConnectionInput FirehoseProxyConnectionOutput FirehoseRequestInput FirehoseRequestOutput FlushMaxPipelined FlushMaxThreshold GlobalLog GprofDir H2CopyFiles H2Direct H2EarlyHint H2EarlyHints H2MaxDataFrameLen H2MaxSessionStreams H2MaxWorkerIdleSeconds H2MaxWorkers H2MinWorkers H2ModernTLSOnly H2OutputBuffering H2Padding H2ProxyRequests H2Push H2PushDiarySize H2PushPriority H2PushResource H2SerializeHeaders H2StreamMaxMemSize H2StreamTimeout H2TLSCoolDownSecs H2TLSWarmUpSize H2Upgrade H2WebSockets H2WindowSize HeartbeatAddress HeartbeatListen HeartbeatMaxServers HeartbeatStorage HeartbeatStorage HostnameLookups HttpProtocolOptions IndexForbiddenReturn404 IndexHeadInsert InputSed ISAPIFakeAsync KeptBodySize LDAPConnectionPoolTTL LDAPLibraryDebug LDAPReferralHopLimit LDAPReferrals LDAPRetries LDAPRetryDelay LDAPTimeout Location LocationMatch LogIOTrackTTFB LogIOTrackTTFU LogMessage LuaAuthzProvider LuaCodeCache LuaHookAccessChecker LuaHookAuthChecker LuaHookCheckUserID LuaHookFixups LuaHookInsertFilter LuaHookLog LuaHookMapToStorage LuaHookPreTranslate LuaHookTranslateName LuaHookTypeChecker LuaInherit LuaInputFilter LuaMapHandler LuaOutputFilter LuaPackageCPath LuaPackagePath LuaQuickHandler LuaRoot LuaScope MacroIgnoreBadNesting MacroIgnoreEmptyArgs MaxConnectionsPerChild MaxRangeOverlaps MaxRangeReversals MaxRanges MaxRequestWorkers MDActivationDelay MDBaseServer MDCAChallenges MDCertificateAgreement MDCertificateAuthority MDCertificateCheck MDCertificateFile MDCertificateKeyFile MDCertificateMonitor MDCertificateProtocol MDCertificateStatus MDChallengeDns01 MDChallengeDns01Version MDCheckInterval MDContactEmail MDDriveMode MDExternalAccountBinding MDHttpProxy MDMatchNames MDMember MDMembers MDMessageCmd MDMustStaple MDNotifyCmd MDomain MDPortMap MDPrivateKeys MDRenewMode MDRenewWindow MDRequireHttps MDRetryDelay MDRetryFailover MDServerStatus MDStapleOthers MDStapling MDStaplingKeepResponse MDStaplingRenewWindow MDStoreDir MDStoreLocks MDWarnWindow MemcacheConnTTL MergeSlashes MergeTrailers MimeOptions ModemStandard Mutex Order OutputSed PolicyConditional PolicyConditionalURL PolicyEnvironment PolicyFilter PolicyKeepalive PolicyKeepaliveURL PolicyLength PolicyLengthURL PolicyMaxage PolicyMaxageURL PolicyNocache PolicyNocacheURL PolicyType PolicyTypeURL PolicyValidation PolicyValidationURL PolicyVary PolicyVaryURL PolicyVersion PolicyVersionURL PrivilegesMode Protocol Protocols ProtocolsHonorOrder Proxy100Continue ProxyAddHeaders ProxyExpressDBMFile ProxyExpressDBMType ProxyExpressEnable ProxyFCGIBackendType ProxyFCGISetEnvIf ProxyFtpDirCharset ProxyFtpEscapeWildcards ProxyFtpListOnWildcard ProxyHCExpr ProxyHCTemplate ProxyHCTPsize ProxyHTMLBufSize ProxyHTMLCharsetOut ProxyHTMLDocType ProxyHTMLEnable ProxyHTMLEvents ProxyHTMLExtended ProxyHTMLFixups ProxyHTMLInterp ProxyHTMLLinks ProxyHTMLMeta ProxyHTMLStripComments ProxyHTMLURLMap ProxySCGIInternalRedirect ProxySCGISendfile ProxySet ProxySourceAddress ProxyStatus ProxyWebsocketAsync ProxyWebsocketAsyncDelay ProxyWebsocketFallbackToProxyHttp ProxyWebsocketIdleTimeout QualifyRedirectURL ReadBufferSize ReceiveBufferSize RedisConnPoolTTL RedisTimeout ReflectorHeader RegexDefaultOptions RegisterHttpMethod RemoteIPHeader RemoteIPInternalProxy RemoteIPInternalProxyList RemoteIPProxiesHeader RemoteIPProxyProtocol RemoteIPProxyProtocolExceptions RemoteIPTrustedProxy RemoteIPTrustedProxyList RemoveLanguage RequestReadTimeout SeeRequestTail Session SessionCookieMaxAge SessionCookieName SessionCookieName2 SessionCookieRemove SessionCryptoCipher SessionCryptoDriver SessionCryptoPassphrase SessionCryptoPassphraseFile SessionDBDCookieName SessionDBDCookieName2 SessionDBDCookieRemove SessionDBDDeleteLabel SessionDBDInsertLabel SessionDBDPerUser SessionDBDSelectLabel SessionDBDUpdateLabel SessionEnv SessionExclude SessionExpiryUpdateInterval SessionHeader SessionInclude SessionMaxAge SSIETag SSILastModified SSILegacyExprParser SSLCARevocationCheck SSLClientHelloVars SSLOCSPDefaultResponder SSLOCSPEnable SSLOCSPNoverify SSLOCSPOverrideResponder SSLOCSPProxyURL SSLOCSPResponderCertificateFile SSLOCSPResponderTimeout SSLOCSPResponseMaxAge SSLOCSPResponseTimeSkew SSLOCSPUseRequestNonce SSLOpenSSLConfCmd SSLPolicy SSLProxyCARevocationCheck SSLProxyCheckPeerName SSLSRPUnknownUserSeed SSLSRPVerifierFile SSLStaplingCache SSLStaplingErrorCacheTimeout SSLStaplingFakeTryLater SSLStaplingForceURL SSLStaplingResponderTimeout SSLStaplingResponseMaxAge SSLStaplingResponseTimeSkew SSLStaplingReturnResponderErrors SSLStaplingStandardCacheTimeout SSLUseStapling StrictHostCheck Substitute SubstituteInheritBefore SubstituteMaxLineLength Suexec UNCList UnDefine UndefMacro Use UseCanonicalPhysicalPort VHostCGIMode VHostCGIPrivs VHostGroup VHostPrivs VHostSecure VHostUser Warning WatchdogInterval xml2EncAlias xml2EncDefault xml2StartParse " Define the default highlighting From c847c12cddcd3943f6a23235dd2f749edc72c997 Mon Sep 17 00:00:00 2001 From: John Marriott Date: Sun, 24 Nov 2024 14:09:40 +0100 Subject: [PATCH 023/244] patch 9.1.0884: gcc warns about uninitialized variable Problem: gcc warns about uninitialized variable in vim_strnicmp_asc() Solution: initialize variable to 1 (John Marriott) closes: #16108 Signed-off-by: John Marriott Signed-off-by: Christian Brabandt --- src/strings.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings.c b/src/strings.c index a586d8a370..cd75bc371d 100644 --- a/src/strings.c +++ b/src/strings.c @@ -597,7 +597,7 @@ vim_strnicmp(char *s1, char *s2, size_t len) int vim_strnicmp_asc(char *s1, char *s2, size_t len) { - int i; + int i = 0; int save_cmp_flags = cmp_flags; cmp_flags |= CMP_KEEPASCII; // compare by ASCII value, ignoring locale diff --git a/src/version.c b/src/version.c index 6f01f781be..f81cf12bee 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 884, /**/ 883, /**/ From 78ca80f856d671a778e3d133b6fc252658dfd896 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Sun, 24 Nov 2024 14:25:06 +0100 Subject: [PATCH 024/244] patch 9.1.0885: style of sign.c can be improved Problem: style of sign.c can be improved Solution: Refactor code (Luca Saccarola) Purpose of this commit is: - separate clearly sections of code - declare variables at the lowest scope possible - initialize all variables closes: #16092 Signed-off-by: Luca Saccarola Signed-off-by: Christian Brabandt --- src/sign.c | 661 ++++++++++++++++++++++++++++---------------------- src/version.c | 2 + 2 files changed, 367 insertions(+), 296 deletions(-) diff --git a/src/sign.c b/src/sign.c index e225909506..2ae74e4ddf 100644 --- a/src/sign.c +++ b/src/sign.c @@ -81,18 +81,17 @@ init_signs(void) static signgroup_T * sign_group_ref(char_u *groupname) { - hash_T hash; - hashitem_T *hi; - signgroup_T *group; + hash_T hash = hash_hash(groupname); + hashitem_T *hi = hash_lookup(&sg_table, groupname, hash); + signgroup_T *group = NULL; - hash = hash_hash(groupname); - hi = hash_lookup(&sg_table, groupname, hash); if (HASHITEM_EMPTY(hi)) { // new group group = alloc(offsetof(signgroup_T, sg_name) + STRLEN(groupname) + 1); if (group == NULL) return NULL; + STRCPY(group->sg_name, groupname); group->sg_refcount = 1; group->sg_next_sign_id = 1; @@ -115,14 +114,11 @@ sign_group_ref(char_u *groupname) static void sign_group_unref(char_u *groupname) { - hashitem_T *hi; - signgroup_T *group; - - hi = hash_find(&sg_table, groupname); + hashitem_T *hi = hash_find(&sg_table, groupname); if (HASHITEM_EMPTY(hi)) return; - group = HI2SG(hi); + signgroup_T *group = HI2SG(hi); group->sg_refcount--; if (group->sg_refcount == 0) { @@ -167,19 +163,18 @@ sign_group_get_next_signid(buf_T *buf, char_u *groupname) { int id = 1; signgroup_T *group = NULL; - sign_entry_T *sign; - hashitem_T *hi; - int found = FALSE; + sign_entry_T *sign = NULL; if (groupname != NULL) { - hi = hash_find(&sg_table, groupname); + hashitem_T *hi = hash_find(&sg_table, groupname); if (HASHITEM_EMPTY(hi)) return id; group = HI2SG(hi); } // Search for the next usable sign identifier + int found = FALSE; while (!found) { if (group == NULL) @@ -216,15 +211,15 @@ insert_sign(buf_T *buf, // buffer to store sign in linenr_T lnum, // line number which gets the mark int typenr) // typenr of sign we are adding { - sign_entry_T *newsign; - - newsign = lalloc_id(sizeof(sign_entry_T), FALSE, aid_insert_sign); + sign_entry_T *newsign = + lalloc_id(sizeof(sign_entry_T), FALSE, aid_insert_sign); if (newsign == NULL) return; newsign->se_id = id; newsign->se_lnum = lnum; newsign->se_typenr = typenr; + if (group != NULL) { newsign->se_group = sign_group_ref(group); @@ -235,7 +230,10 @@ insert_sign(buf_T *buf, // buffer to store sign in } } else + { newsign->se_group = NULL; + } + newsign->se_priority = prio; newsign->se_next = next; newsign->se_prev = prev; @@ -260,7 +258,9 @@ insert_sign(buf_T *buf, // buffer to store sign in # endif } else + { prev->se_next = newsign; + } } /* @@ -275,16 +275,12 @@ insert_sign_by_lnum_prio(buf_T *buf, // buffer to store sign in linenr_T lnum, // line number which gets the mark int typenr) // typenr of sign we are adding { - sign_entry_T *sign; - // keep signs sorted by lnum and by priority: insert new sign at // the proper position in the list for this lnum. while (prev != NULL && prev->se_lnum == lnum && prev->se_priority <= prio) prev = prev->se_prev; - if (prev == NULL) - sign = buf->b_signlist; - else - sign = prev->se_next; + + sign_entry_T *sign = (prev == NULL) ? buf->b_signlist : prev->se_next; insert_sign(buf, prev, sign, id, group, prio, lnum, typenr); } @@ -295,8 +291,7 @@ insert_sign_by_lnum_prio(buf_T *buf, // buffer to store sign in static sign_T * find_sign_by_typenr(int typenr) { - sign_T *sp; - + sign_T *sp = NULL; FOR_ALL_SIGNS(sp) if (sp->sn_typenr == typenr) return sp; @@ -309,8 +304,7 @@ find_sign_by_typenr(int typenr) static char_u * sign_typenr2name(int typenr) { - sign_T *sp; - + sign_T *sp = NULL; FOR_ALL_SIGNS(sp) if (sp->sn_typenr == typenr) return sp->sn_name; @@ -323,10 +317,10 @@ sign_typenr2name(int typenr) static dict_T * sign_get_info(sign_entry_T *sign) { - dict_T *d; - - if ((d = dict_alloc_id(aid_sign_getinfo)) == NULL) + dict_T *d = dict_alloc_id(aid_sign_getinfo); + if (d == NULL) return NULL; + dict_add_number(d, "id", sign->se_id); dict_add_string(d, "group", (sign->se_group == NULL) ? (char_u *)"" @@ -346,8 +340,6 @@ sign_get_info(sign_entry_T *sign) static void sign_sort_by_prio_on_line(buf_T *buf, sign_entry_T *sign) { - sign_entry_T *p = NULL; - // If there is only one sign in the buffer or only one sign on the line or // the sign is already sorted by priority, then return. if ((sign->se_prev == NULL || sign->se_prev->se_lnum != sign->se_lnum || @@ -360,7 +352,7 @@ sign_sort_by_prio_on_line(buf_T *buf, sign_entry_T *sign) // Find a sign after which 'sign' should be inserted // First search backward for a sign with higher priority on the same line - p = sign; + sign_entry_T *p = sign; while (p->se_prev != NULL && p->se_prev->se_lnum == sign->se_lnum && p->se_prev->se_priority <= sign->se_priority) p = p->se_prev; @@ -378,10 +370,13 @@ sign_sort_by_prio_on_line(buf_T *buf, sign_entry_T *sign) // Remove 'sign' from the list if (buf->b_signlist == sign) buf->b_signlist = sign->se_next; + if (sign->se_prev != NULL) sign->se_prev->se_next = sign->se_next; + if (sign->se_next != NULL) sign->se_next->se_prev = sign->se_prev; + sign->se_prev = NULL; sign->se_next = NULL; @@ -394,6 +389,7 @@ sign_sort_by_prio_on_line(buf_T *buf, sign_entry_T *sign) p->se_prev = sign; if (sign->se_prev != NULL) sign->se_prev->se_next = sign; + if (buf->b_signlist == p) buf->b_signlist = sign; } @@ -419,10 +415,8 @@ buf_addsign(buf_T *buf, // buffer to store sign in linenr_T lnum, // line number which gets the mark int typenr) // typenr of sign we are adding { - sign_entry_T *sign; // a sign in the signlist - sign_entry_T *prev; // the previous sign - - prev = NULL; + sign_entry_T *sign = NULL; // a sign in the signlist + sign_entry_T *prev = NULL; // the previous sign FOR_ALL_SIGNS_IN_BUF(buf, sign) { if (lnum == sign->se_lnum && id == sign->se_id && @@ -444,7 +438,6 @@ buf_addsign(buf_T *buf, // buffer to store sign in } insert_sign_by_lnum_prio(buf, prev, id, groupname, prio, lnum, typenr); - return; } /* @@ -458,8 +451,7 @@ buf_change_sign_type(buf_T *buf, // buffer to store sign in int typenr, // typenr of sign we are adding int prio) // sign priority { - sign_entry_T *sign; // a sign in the signlist - + sign_entry_T *sign = NULL; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { if (sign->se_id == markId && sign_in_group(sign, group)) @@ -482,17 +474,15 @@ buf_change_sign_type(buf_T *buf, // buffer to store sign in int buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr) { - sign_entry_T *sign; - sign_T *sp; - buf_T *buf = wp->w_buffer; - CLEAR_POINTER(sattr); + buf_T *buf = wp->w_buffer; + sign_entry_T *sign = NULL; FOR_ALL_SIGNS_IN_BUF(buf, sign) { + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. break; if (sign->se_lnum == lnum @@ -502,7 +492,7 @@ buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr) ) { sattr->sat_typenr = sign->se_typenr; - sp = find_sign_by_typenr(sign->se_typenr); + sign_T *sp = find_sign_by_typenr(sign->se_typenr); if (sp == NULL) return FALSE; @@ -510,14 +500,19 @@ buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr) sattr->sat_icon = sp->sn_image; # endif sattr->sat_text = sp->sn_text; + if (sattr->sat_text != NULL && sp->sn_text_hl > 0) sattr->sat_texthl = syn_id2attr(sp->sn_text_hl); + if (sp->sn_line_hl > 0) sattr->sat_linehl = syn_id2attr(sp->sn_line_hl); + if (sp->sn_cul_hl > 0) sattr->sat_culhl = syn_id2attr(sp->sn_cul_hl); + if (sp->sn_num_hl > 0) sattr->sat_numhl = syn_id2attr(sp->sn_num_hl); + sattr->sat_priority = sign->se_priority; // If there is another sign next with the same priority, may @@ -527,25 +522,28 @@ buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr) sign->se_next->se_lnum == sign->se_lnum) { sign_T *next_sp = find_sign_by_typenr(sign->se_next->se_typenr); + if (next_sp == NULL) + return FALSE; - if (next_sp != NULL) + if (sattr->sat_icon == NULL && sattr->sat_text == NULL) { - if (sattr->sat_icon == NULL && sattr->sat_text == NULL) - { # ifdef FEAT_SIGN_ICONS - sattr->sat_icon = next_sp->sn_image; + sattr->sat_icon = next_sp->sn_image; # endif - sattr->sat_text = next_sp->sn_text; - } - if (sp->sn_text_hl <= 0 && next_sp->sn_text_hl > 0) - sattr->sat_texthl = syn_id2attr(next_sp->sn_text_hl); - if (sp->sn_line_hl <= 0 && next_sp->sn_line_hl > 0) - sattr->sat_linehl = syn_id2attr(next_sp->sn_line_hl); - if (sp->sn_cul_hl <= 0 && next_sp->sn_cul_hl > 0) - sattr->sat_culhl = syn_id2attr(next_sp->sn_cul_hl); - if (sp->sn_num_hl <= 0 && next_sp->sn_num_hl > 0) - sattr->sat_numhl = syn_id2attr(next_sp->sn_num_hl); + sattr->sat_text = next_sp->sn_text; } + + if (sp->sn_text_hl <= 0 && next_sp->sn_text_hl > 0) + sattr->sat_texthl = syn_id2attr(next_sp->sn_text_hl); + + if (sp->sn_line_hl <= 0 && next_sp->sn_line_hl > 0) + sattr->sat_linehl = syn_id2attr(next_sp->sn_line_hl); + + if (sp->sn_cul_hl <= 0 && next_sp->sn_cul_hl > 0) + sattr->sat_culhl = syn_id2attr(next_sp->sn_cul_hl); + + if (sp->sn_num_hl <= 0 && next_sp->sn_num_hl > 0) + sattr->sat_numhl = syn_id2attr(next_sp->sn_num_hl); } return TRUE; } @@ -569,27 +567,28 @@ buf_delsign(buf_T *buf, // buffer sign is stored in int id, // sign id char_u *group) // sign group { - sign_entry_T **lastp; // pointer to pointer to current sign - sign_entry_T *sign; // a sign in a b_signlist - sign_entry_T *next; // the next sign in a b_signlist - linenr_T lnum; // line number whose sign was deleted + // pointer to pointer to current sign + sign_entry_T **lastp = &buf->b_signlist; + sign_entry_T *next = NULL; // the next sign in a b_signlist + linenr_T lnum = 0; // line number whose sign was deleted - lastp = &buf->b_signlist; - lnum = 0; - for (sign = buf->b_signlist; sign != NULL; sign = next) + for (sign_entry_T *sign = buf->b_signlist; sign != NULL; sign = next) { next = sign->se_next; + if ((id == 0 || sign->se_id == id) && (atlnum == 0 || sign->se_lnum == atlnum) && sign_in_group(sign, group)) - { *lastp = next; if (next != NULL) next->se_prev = sign->se_prev; + lnum = sign->se_lnum; + if (sign->se_group != NULL) sign_group_unref(sign->se_group->sg_name); + vim_free(sign); redraw_buf_line_later(buf, lnum); @@ -602,7 +601,9 @@ buf_delsign(buf_T *buf, // buffer sign is stored in break; } else + { lastp = &sign->se_next; + } } // When deleting the last sign the cursor position may change, because the @@ -626,8 +627,7 @@ buf_findsign(buf_T *buf, // buffer to store sign in int id, // sign ID char_u *group) // sign group { - sign_entry_T *sign; // a sign in the signlist - + sign_entry_T *sign = NULL; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) if (sign->se_id == id && sign_in_group(sign, group)) return sign->se_lnum; @@ -644,13 +644,12 @@ buf_getsign_at_line(buf_T *buf, // buffer whose sign we are searching for linenr_T lnum, // line number of sign char_u *groupname) // sign group name { - sign_entry_T *sign; // a sign in the signlist - + sign_entry_T *sign = NULL; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. break; if (sign->se_lnum == lnum && sign_in_group(sign, groupname)) @@ -668,9 +667,8 @@ buf_findsign_id(buf_T *buf, // buffer whose sign we are searching for linenr_T lnum, // line number of sign char_u *groupname) // sign group name { - sign_entry_T *sign; // a sign in the signlist - - sign = buf_getsign_at_line(buf, lnum, groupname); + // a sign in the signlist + sign_entry_T *sign = buf_getsign_at_line(buf, lnum, groupname); if (sign != NULL) return sign->se_id; @@ -686,13 +684,12 @@ buf_findsigntype_id(buf_T *buf, // buffer whose sign we are searching for linenr_T lnum, // line number of sign int typenr) // sign type number { - sign_entry_T *sign; // a sign in the signlist - + sign_entry_T *sign = NULL; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. break; if (sign->se_lnum == lnum && sign->se_typenr == typenr) @@ -709,19 +706,17 @@ buf_findsigntype_id(buf_T *buf, // buffer whose sign we are searching for int buf_signcount(buf_T *buf, linenr_T lnum) { - sign_entry_T *sign; // a sign in the signlist int count = 0; - + sign_entry_T *sign = NULL; // a sign in the signlist FOR_ALL_SIGNS_IN_BUF(buf, sign) { + // Signs are sorted by line number in the buffer. No need to check + // for signs after the specified line number 'lnum'. if (sign->se_lnum > lnum) - // Signs are sorted by line number in the buffer. No need to check - // for signs after the specified line number 'lnum'. break; - if (sign->se_lnum == lnum) - if (sign_get_image(sign->se_typenr) != NULL) - count++; + if (sign->se_lnum == lnum && sign_get_image(sign->se_typenr) != NULL) + count++; } return count; @@ -736,10 +731,6 @@ buf_signcount(buf_T *buf, linenr_T lnum) void buf_delete_signs(buf_T *buf, char_u *group) { - sign_entry_T *sign; - sign_entry_T **lastp; // pointer to pointer to current sign - sign_entry_T *next; - // When deleting the last sign need to redraw the windows to remove the // sign column. Not when curwin is NULL (this means we're exiting). if (buf->b_signlist != NULL && curwin != NULL) @@ -748,21 +739,29 @@ buf_delete_signs(buf_T *buf, char_u *group) changed_line_abv_curs(); } - lastp = &buf->b_signlist; - for (sign = buf->b_signlist; sign != NULL; sign = next) + // pointer to pointer to current sign + sign_entry_T **lastp = &buf->b_signlist; + sign_entry_T *next = NULL; + + for (sign_entry_T *sign = buf->b_signlist; sign != NULL; sign = next) { next = sign->se_next; if (sign_in_group(sign, group)) { *lastp = next; + if (next != NULL) next->se_prev = sign->se_prev; + if (sign->se_group != NULL) sign_group_unref(sign->se_group->sg_name); + vim_free(sign); } else + { lastp = &sign->se_next; + } } } @@ -772,17 +771,13 @@ buf_delete_signs(buf_T *buf, char_u *group) static void sign_list_placed(buf_T *rbuf, char_u *sign_group) { - buf_T *buf; - sign_entry_T *sign; char lbuf[MSG_BUF_LEN]; char group[MSG_BUF_LEN]; msg_puts_title(_("\n--- Signs ---")); msg_putchar('\n'); - if (rbuf == NULL) - buf = firstbuf; - else - buf = rbuf; + + buf_T *buf = (rbuf == NULL) ? firstbuf : rbuf; while (buf != NULL && !got_int) { if (buf->b_signlist != NULL) @@ -791,26 +786,34 @@ sign_list_placed(buf_T *rbuf, char_u *sign_group) msg_puts_attr(lbuf, HL_ATTR(HLF_D)); msg_putchar('\n'); } + + sign_entry_T *sign = NULL; FOR_ALL_SIGNS_IN_BUF(buf, sign) { if (got_int) break; + if (!sign_in_group(sign, sign_group)) continue; + if (sign->se_group != NULL) vim_snprintf(group, MSG_BUF_LEN, _(" group=%s"), sign->se_group->sg_name); else group[0] = '\0'; + vim_snprintf(lbuf, MSG_BUF_LEN, _(" line=%ld id=%d%s name=%s priority=%d"), (long)sign->se_lnum, sign->se_id, group, sign_typenr2name(sign->se_typenr), sign->se_priority); + msg_puts(lbuf); msg_putchar('\n'); } + if (rbuf != NULL) break; + buf = buf->b_next; } } @@ -821,23 +824,25 @@ sign_list_placed(buf_T *rbuf, char_u *sign_group) void sign_mark_adjust(linenr_T line1, linenr_T line2, long amount, long amount_after) { - sign_entry_T *sign; // a sign in a b_signlist - linenr_T new_lnum; - + sign_entry_T *sign = NULL; // a sign in a b_signlist FOR_ALL_SIGNS_IN_BUF(curbuf, sign) { // Ignore changes to lines after the sign if (sign->se_lnum < line1) continue; - new_lnum = sign->se_lnum; + + linenr_T new_lnum = sign->se_lnum; + if (sign->se_lnum <= line2) { if (amount != MAXLNUM) new_lnum += amount; } else if (sign->se_lnum > line2) + { // Lines inserted or deleted before the sign new_lnum += amount_after; + } // If the new sign line number is past the last line in the buffer, // then don't adjust the line number. Otherwise, it will always be past @@ -855,13 +860,13 @@ static int sign_cmd_idx(char_u *begin_cmd, // begin of sign subcmd char_u *end_cmd) // just after sign subcmd { - int idx; + int idx = 0; char save = *end_cmd; - *end_cmd = NUL; - for (idx = 0;; ++idx) - if (cmds[idx] == NULL || STRCMP(begin_cmd, cmds[idx]) == 0) - break; + + while (cmds[idx] != NULL && STRCMP(begin_cmd, cmds[idx]) != 0) + ++idx; + *end_cmd = save; return idx; } @@ -872,14 +877,15 @@ sign_cmd_idx(char_u *begin_cmd, // begin of sign subcmd static sign_T * sign_find(char_u *name, sign_T **sp_prev) { - sign_T *sp; - if (sp_prev != NULL) *sp_prev = NULL; + + sign_T *sp = NULL; FOR_ALL_SIGNS(sp) { if (STRCMP(sp->sn_name, name) == 0) break; + if (sp_prev != NULL) *sp_prev = sp; } @@ -893,31 +899,33 @@ sign_find(char_u *name, sign_T **sp_prev) static sign_T * alloc_new_sign(char_u *name) { - sign_T *sp; - sign_T *lp; int start = next_sign_typenr; // Allocate a new sign. - sp = alloc_clear_id(sizeof(sign_T), aid_sign_define_by_name); + sign_T *sp = alloc_clear_id(sizeof(sign_T), aid_sign_define_by_name); if (sp == NULL) return NULL; // Check that next_sign_typenr is not already being used. // This only happens after wrapping around. Hopefully // another one got deleted and we can use its number. - for (lp = first_sign; lp != NULL;) + sign_T *lp = first_sign; + while (lp != NULL) { if (lp->sn_typenr == next_sign_typenr) { ++next_sign_typenr; + if (next_sign_typenr == MAX_TYPENR) next_sign_typenr = 1; + if (next_sign_typenr == start) { vim_free(sp); emsg(_(e_too_many_signs_defined)); return NULL; } + lp = first_sign; // start all over continue; } @@ -925,6 +933,7 @@ alloc_new_sign(char_u *name) } sp->sn_typenr = next_sign_typenr; + if (++next_sign_typenr == MAX_TYPENR) next_sign_typenr = 1; // wrap around @@ -964,37 +973,38 @@ sign_define_init_icon(sign_T *sp, char_u *icon) static int sign_define_init_text(sign_T *sp, char_u *text) { - char_u *s; - char_u *endp; - int cells; - int len; - - endp = text + (int)STRLEN(text); + char_u *s = NULL; + char_u *endp = text + (int)STRLEN(text); + int cells = 0; // Remove backslashes so that it is possible to use a space. for (s = text; s + 1 < endp; ++s) + { if (*s == '\\') { STRMOVE(s, s + 1); --endp; } + } // Count cells and check for non-printable chars if (has_mbyte) { - cells = 0; for (s = text; s < endp; s += (*mb_ptr2len)(s)) { if (!vim_isprintc((*mb_ptr2char)(s))) break; + cells += (*mb_ptr2cells)(s); } } else { for (s = text; s < endp; ++s) + { if (!vim_isprintc(*s)) break; + } cells = (int)(s - text); } @@ -1008,7 +1018,7 @@ sign_define_init_text(sign_T *sp, char_u *text) vim_free(sp->sn_text); // Allocate one byte more if we need to pad up // with a space. - len = (int)(endp - text + ((cells == 1) ? 1 : 0)); + int len = (int)(endp - text + ((cells == 1) ? 1 : 0)); sp->sn_text = vim_strnsave(text, len); // For single character sign text, pad with a space. @@ -1031,10 +1041,8 @@ sign_define_by_name(char_u *name, char_u *numhl, int prio) { - sign_T *sp_prev; - sign_T *sp; - - sp = sign_find(name, &sp_prev); + sign_T *sp_prev = NULL; + sign_T *sp = sign_find(name, &sp_prev); if (sp == NULL) { sp = alloc_new_sign(name); @@ -1049,13 +1057,14 @@ sign_define_by_name(char_u *name, } else { - win_T *wp; - + win_T *wp = NULL; // Signs may already exist, a redraw is needed in windows with a // non-empty sign list. FOR_ALL_WINDOWS(wp) + { if (wp->w_buffer->b_signlist != NULL) redraw_buf_later(wp->w_buffer, UPD_NOT_VALID); + } } // set values for a defined sign. @@ -1117,10 +1126,8 @@ sign_exists_by_name(char_u *name) int sign_undefine_by_name(char_u *name, int give_error) { - sign_T *sp_prev; - sign_T *sp; - - sp = sign_find(name, &sp_prev); + sign_T *sp_prev = NULL; + sign_T *sp = sign_find(name, &sp_prev); if (sp == NULL) { if (give_error) @@ -1138,9 +1145,7 @@ sign_undefine_by_name(char_u *name, int give_error) static void sign_list_by_name(char_u *name) { - sign_T *sp; - - sp = sign_find(name, NULL); + sign_T *sp = sign_find(name, NULL); if (sp != NULL) sign_list_defined(sp); else @@ -1150,14 +1155,16 @@ sign_list_by_name(char_u *name) static void may_force_numberwidth_recompute(buf_T *buf, int unplace) { - tabpage_T *tp; - win_T *wp; + tabpage_T *tp = NULL; + win_T *wp = NULL; FOR_ALL_TAB_WINDOWS(tp, wp) + { if (wp->w_buffer == buf && (wp->w_p_nu || wp->w_p_rnu) && (unplace || wp->w_nrwidth_width < 2) && (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u')) wp->w_nrwidth_line_count = 0; + } } /* @@ -1171,20 +1178,23 @@ sign_place(int *sign_id, linenr_T lnum, int prio) { - sign_T *sp; - // Check for reserved character '*' in group name if (sign_group != NULL && (*sign_group == '*' || *sign_group == '\0')) return FAIL; + sign_T *sp = NULL; FOR_ALL_SIGNS(sp) + { if (STRCMP(sp->sn_name, sign_name) == 0) break; + } + if (sp == NULL) { semsg(_(e_unknown_sign_str), sign_name); return FAIL; } + if (*sign_id == 0) *sign_id = sign_group_get_next_signid(buf, sign_group); @@ -1193,13 +1203,18 @@ sign_place(int *sign_id, prio = (sp->sn_priority != -1) ? sp->sn_priority : SIGN_DEF_PRIO; if (lnum > 0) + { // ":sign place {id} line={lnum} name={name} file={fname}": // place a sign buf_addsign(buf, *sign_id, sign_group, prio, lnum, sp->sn_typenr); + } else + { // ":sign place {id} file={fname}": change sign type and/or priority lnum = buf_change_sign_type(buf, *sign_id, sign_group, sp->sn_typenr, prio); + } + if (lnum > 0) { redraw_buf_line_later(buf, lnum); @@ -1234,10 +1249,8 @@ sign_unplace(int sign_id, char_u *sign_group, buf_T *buf, linenr_T atlnum) } else { - linenr_T lnum; - // Delete only the specified signs - lnum = buf_delsign(buf, atlnum, sign_id, sign_group); + linenr_T lnum = buf_delsign(buf, atlnum, sign_id, sign_group); if (lnum == 0) return FAIL; } @@ -1257,9 +1270,9 @@ sign_unplace(int sign_id, char_u *sign_group, buf_T *buf, linenr_T atlnum) static void sign_unplace_at_cursor(char_u *groupname) { - int id = -1; + int id = + buf_findsign_id(curwin->w_buffer, curwin->w_cursor.lnum, groupname); - id = buf_findsign_id(curwin->w_buffer, curwin->w_cursor.lnum, groupname); if (id > 0) sign_unplace(id, groupname, curwin->w_buffer, curwin->w_cursor.lnum); else @@ -1272,9 +1285,8 @@ sign_unplace_at_cursor(char_u *groupname) static linenr_T sign_jump(int sign_id, char_u *sign_group, buf_T *buf) { - linenr_T lnum; - - if ((lnum = buf_findsign(buf, sign_id, sign_group)) <= 0) + linenr_T lnum = buf_findsign(buf, sign_id, sign_group); + if (lnum <= 0) { semsg(_(e_invalid_sign_id_nr), sign_id); return -1; @@ -1289,16 +1301,15 @@ sign_jump(int sign_id, char_u *sign_group, buf_T *buf) } else { // ... not currently in a window - char_u *cmd; - if (buf->b_fname == NULL) { emsg(_(e_cannot_jump_to_buffer_that_does_not_have_name)); return -1; } - cmd = alloc(STRLEN(buf->b_fname) + 25); + char_u *cmd = alloc(STRLEN(buf->b_fname) + 25); if (cmd == NULL) return -1; + sprintf((char *)cmd, "e +%ld %s", (long)lnum, buf->b_fname); do_cmdline_cmd(cmd); vim_free(cmd); @@ -1316,7 +1327,7 @@ sign_jump(int sign_id, char_u *sign_group, buf_T *buf) static void sign_define_cmd(char_u *sign_name, char_u *cmdline) { - char_u *arg; + char_u *arg = NULL; char_u *p = cmdline; char_u *icon = NULL; char_u *text = NULL; @@ -1328,11 +1339,12 @@ sign_define_cmd(char_u *sign_name, char_u *cmdline) int failed = FALSE; // set values for a defined sign. - for (;;) + while (TRUE) { arg = skipwhite(p); if (*arg == NUL) break; + p = skiptowhite_esc(arg); if (STRNCMP(arg, "icon=", 5) == 0) { @@ -1450,6 +1462,7 @@ sign_unplace_cmd(buf_T *buf, if (id == -2) { if (buf != NULL) + { // :sign unplace * file={fname} // :sign unplace * group={group} file={fname} // :sign unplace * group=* file={fname} @@ -1457,17 +1470,23 @@ sign_unplace_cmd(buf_T *buf, // :sign unplace * group={group} buffer={nr} // :sign unplace * group=* buffer={nr} sign_unplace(0, group, buf, 0); + } else + { // :sign unplace * // :sign unplace * group={group} // :sign unplace * group=* FOR_ALL_BUFFERS(buf) + { if (buf->b_signlist != NULL) buf_delete_signs(buf, group); + } + } } else { if (buf != NULL) + { // :sign unplace {id} file={fname} // :sign unplace {id} group={group} file={fname} // :sign unplace {id} group=* file={fname} @@ -1475,6 +1494,7 @@ sign_unplace_cmd(buf_T *buf, // :sign unplace {id} group={group} buffer={nr} // :sign unplace {id} group=* buffer={nr} sign_unplace(id, group, buf, 0); + } else { if (id == -1) @@ -1523,6 +1543,7 @@ sign_jump_cmd(buf_T *buf, emsg(_(e_invalid_argument)); return; } + (void)sign_jump(id, group, buf); } @@ -1542,13 +1563,11 @@ parse_sign_cmd_args(int cmd, buf_T **buf, linenr_T *lnum) { - char_u *arg1; - char_u *name; + char_u *arg1 = arg; char_u *filename = NULL; int lnum_arg = FALSE; // first arg could be placed sign id - arg1 = arg; if (VIM_ISDIGIT(*arg)) { *signid = getdigits(&arg); @@ -1558,7 +1577,9 @@ parse_sign_cmd_args(int cmd, arg = arg1; } else + { arg = skipwhite(arg); + } } while (*arg != NUL) @@ -1583,12 +1604,14 @@ parse_sign_cmd_args(int cmd, else if (STRNCMP(arg, "name=", 5) == 0) { arg += 5; - name = arg; + char_u *name = arg; arg = skiptowhite(arg); if (*arg != NUL) *arg++ = NUL; + while (name[0] == '0' && name[1] != NUL) ++name; + *sign_name = name; } else if (STRNCMP(arg, "group=", 6) == 0) @@ -1617,8 +1640,10 @@ parse_sign_cmd_args(int cmd, arg += 7; filename = arg; *buf = buflist_findnr((int)getdigits(&arg)); + if (*skipwhite(arg) != NUL) semsg(_(e_trailing_characters_str), arg); + break; } else @@ -1626,6 +1651,7 @@ parse_sign_cmd_args(int cmd, emsg(_(e_invalid_argument)); return FAIL; } + arg = skipwhite(arg); } @@ -1651,14 +1677,10 @@ void ex_sign(exarg_T *eap) { char_u *arg = eap->arg; - char_u *p; - int idx; - sign_T *sp; - buf_T *buf = NULL; // Parse the subcommand. - p = skiptowhite(arg); - idx = sign_cmd_idx(arg, p); + char_u *p = skiptowhite(arg); + int idx = sign_cmd_idx(arg, p); if (idx == SIGNCMD_LAST) { semsg(_(e_unknown_sign_command_str), arg); @@ -1666,50 +1688,14 @@ ex_sign(exarg_T *eap) } arg = skipwhite(p); - if (idx <= SIGNCMD_LIST) + if (idx > SIGNCMD_LIST) { - // Define, undefine or list signs. - if (idx == SIGNCMD_LIST && *arg == NUL) - { - // ":sign list": list all defined signs - for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next) - sign_list_defined(sp); - } - else if (*arg == NUL) - emsg(_(e_missing_sign_name)); - else - { - char_u *name; - - // Isolate the sign name. If it's a number skip leading zeroes, - // so that "099" and "99" are the same sign. But keep "0". - p = skiptowhite(arg); - if (*p != NUL) - *p++ = NUL; - while (arg[0] == '0' && arg[1] != NUL) - ++arg; - name = vim_strsave(arg); - - if (idx == SIGNCMD_DEFINE) - sign_define_cmd(name, p); - else if (idx == SIGNCMD_LIST) - // ":sign list {name}" - sign_list_by_name(name); - else - // ":sign undefine {name}" - sign_undefine_by_name(name, TRUE); - - vim_free(name); - return; - } - } - else - { - int id = -1; - linenr_T lnum = -1; char_u *sign_name = NULL; + int id = -1; char_u *group = NULL; int prio = -1; + buf_T *buf = NULL; + linenr_T lnum = -1; // Parse command line arguments if (parse_sign_cmd_args(idx, arg, &sign_name, &id, &group, &prio, &buf, @@ -1722,6 +1708,45 @@ ex_sign(exarg_T *eap) sign_unplace_cmd(buf, lnum, sign_name, id, group); else if (idx == SIGNCMD_JUMP) sign_jump_cmd(buf, lnum, sign_name, id, group); + + return; + } + + // Define, undefine or list signs. + if (idx == SIGNCMD_LIST && *arg == NUL) + { + // ":sign list": list all defined signs + for (sign_T *sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next) + sign_list_defined(sp); + } + else if (*arg == NUL) + { + emsg(_(e_missing_sign_name)); + } + else + { + + // Isolate the sign name. If it's a number skip leading zeroes, + // so that "099" and "99" are the same sign. But keep "0". + p = skiptowhite(arg); + if (*p != NUL) + *p++ = NUL; + + while (arg[0] == '0' && arg[1] != NUL) + ++arg; + + char_u *name = vim_strsave(arg); + + if (idx == SIGNCMD_DEFINE) + sign_define_cmd(name, p); + else if (idx == SIGNCMD_LIST) + // ":sign list {name}" + sign_list_by_name(name); + else + // ":sign undefine {name}" + sign_undefine_by_name(name, TRUE); + + vim_free(name); } } @@ -1731,39 +1756,44 @@ ex_sign(exarg_T *eap) static void sign_getinfo(sign_T *sp, dict_T *retdict) { - char_u *p; - dict_add_string(retdict, "name", sp->sn_name); + if (sp->sn_icon != NULL) dict_add_string(retdict, "icon", sp->sn_icon); + if (sp->sn_text != NULL) dict_add_string(retdict, "text", sp->sn_text); + if (sp->sn_priority > 0) dict_add_number(retdict, "priority", sp->sn_priority); + if (sp->sn_line_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); + char_u *p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); if (p == NULL) p = (char_u *)"NONE"; dict_add_string(retdict, "linehl", p); } + if (sp->sn_text_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); + char_u *p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); if (p == NULL) p = (char_u *)"NONE"; dict_add_string(retdict, "texthl", p); } + if (sp->sn_cul_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); + char_u *p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); if (p == NULL) p = (char_u *)"NONE"; dict_add_string(retdict, "culhl", p); } + if (sp->sn_num_hl > 0) { - p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); + char_u *p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); if (p == NULL) p = (char_u *)"NONE"; dict_add_string(retdict, "numhl", p); @@ -1778,7 +1808,6 @@ static void sign_getlist(char_u *name, list_T *retlist) { sign_T *sp = first_sign; - dict_T *dict; if (name != NULL) { @@ -1789,10 +1818,13 @@ sign_getlist(char_u *name, list_T *retlist) for (; sp != NULL && !got_int; sp = sp->sn_next) { - if ((dict = dict_alloc_id(aid_sign_getlist)) == NULL) + dict_T *dict = dict_alloc_id(aid_sign_getlist); + if (dict == NULL) return; + if (list_append_dict(retlist, dict) == FAIL) return; + sign_getinfo(sp, dict); if (name != NULL) // handle only the specified sign @@ -1806,12 +1838,11 @@ sign_getlist(char_u *name, list_T *retlist) void get_buffer_signs(buf_T *buf, list_T *l) { - sign_entry_T *sign; - dict_T *d; - + sign_entry_T *sign = NULL; FOR_ALL_SIGNS_IN_BUF(buf, sign) { - if ((d = sign_get_info(sign)) != NULL) + dict_T *d = sign_get_info(sign); + if (d != NULL) list_append_dict(l, d); } } @@ -1826,31 +1857,33 @@ sign_get_placed_in_buf(buf_T *buf, char_u *sign_group, list_T *retlist) { - dict_T *d; - list_T *l; - sign_entry_T *sign; - dict_T *sdict; - - if ((d = dict_alloc_id(aid_sign_getplaced_dict)) == NULL) + dict_T *d = dict_alloc_id(aid_sign_getplaced_dict); + if (d == NULL) return; + list_append_dict(retlist, d); dict_add_number(d, "bufnr", (long)buf->b_fnum); - if ((l = list_alloc_id(aid_sign_getplaced_list)) == NULL) + list_T *l = list_alloc_id(aid_sign_getplaced_list); + if (l == NULL) return; + dict_add_list(d, "signs", l); + sign_entry_T *sign = NULL; FOR_ALL_SIGNS_IN_BUF(buf, sign) { if (!sign_in_group(sign, sign_group)) continue; + if ((lnum == 0 && sign_id == 0) || (sign_id == 0 && lnum == sign->se_lnum) || (lnum == 0 && sign_id == sign->se_id) || (lnum == sign->se_lnum && sign_id == sign->se_id)) { - if ((sdict = sign_get_info(sign)) != NULL) + dict_T *sdict = sign_get_info(sign); + if (sdict != NULL) list_append_dict(l, sdict); } } @@ -1869,12 +1902,16 @@ sign_get_placed(buf_T *buf, list_T *retlist) { if (buf != NULL) + { sign_get_placed_in_buf(buf, lnum, sign_id, sign_group, retlist); + } else { FOR_ALL_BUFFERS(buf) + { if (buf->b_signlist != NULL) sign_get_placed_in_buf(buf, 0, sign_id, sign_group, retlist); + } } } @@ -1886,11 +1923,12 @@ sign_get_placed(buf_T *buf, void sign_gui_started(void) { - sign_T *sp; - + sign_T *sp = NULL; FOR_ALL_SIGNS(sp) + { if (sp->sn_icon != NULL) sp->sn_image = gui_mch_register_sign(sp->sn_icon); + } } # endif @@ -1900,10 +1938,10 @@ sign_gui_started(void) static void sign_list_defined(sign_T *sp) { - char_u *p; char lbuf[MSG_BUF_LEN]; smsg("sign %s", sp->sn_name); + if (sp->sn_icon != NULL) { msg_puts(" icon="); @@ -1915,47 +1953,57 @@ sign_list_defined(sign_T *sp) msg_puts(_(" (not supported)")); # endif } + if (sp->sn_text != NULL) { msg_puts(" text="); msg_outtrans(sp->sn_text); } + if (sp->sn_priority > 0) { vim_snprintf(lbuf, MSG_BUF_LEN, " priority=%d", sp->sn_priority); msg_puts(lbuf); } + if (sp->sn_line_hl > 0) { msg_puts(" linehl="); - p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); + + char_u *p = get_highlight_name_ext(NULL, sp->sn_line_hl - 1, FALSE); if (p == NULL) msg_puts("NONE"); else msg_puts((char *)p); } + if (sp->sn_text_hl > 0) { msg_puts(" texthl="); - p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); + + char_u *p = get_highlight_name_ext(NULL, sp->sn_text_hl - 1, FALSE); if (p == NULL) msg_puts("NONE"); else msg_puts((char *)p); } + if (sp->sn_cul_hl > 0) { msg_puts(" culhl="); - p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); + + char_u *p = get_highlight_name_ext(NULL, sp->sn_cul_hl - 1, FALSE); if (p == NULL) msg_puts("NONE"); else msg_puts((char *)p); } + if (sp->sn_num_hl > 0) { msg_puts(" numhl="); - p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); + + char_u *p = get_highlight_name_ext(NULL, sp->sn_num_hl - 1, FALSE); if (p == NULL) msg_puts("NONE"); else @@ -1979,10 +2027,12 @@ sign_undefine(sign_T *sp, sign_T *sp_prev) } # endif vim_free(sp->sn_text); + if (sp_prev == NULL) first_sign = sp->sn_next; else sp_prev->sn_next = sp->sn_next; + vim_free(sp); } @@ -1990,11 +2040,12 @@ sign_undefine(sign_T *sp, sign_T *sp_prev) void * sign_get_image(int typenr) // the attribute which may have a sign { - sign_T *sp; - + sign_T *sp = NULL; FOR_ALL_SIGNS(sp) + { if (sp->sn_typenr == typenr) return sp->sn_image; + } return NULL; } # endif @@ -2026,14 +2077,15 @@ static enum static char_u * get_nth_sign_name(int idx) { - int current_idx; - sign_T *sp; + int current_idx = 0; + sign_T *sp = NULL; // Complete with name of signs already defined - current_idx = 0; FOR_ALL_SIGNS(sp) + { if (current_idx++ == idx) return sp->sn_name; + } return NULL; } @@ -2043,14 +2095,11 @@ get_nth_sign_name(int idx) static char_u * get_nth_sign_group_name(int idx) { - int current_idx; - int todo; - hashitem_T *hi; - signgroup_T *group; + int current_idx = 0; + int todo = (int)sg_table.ht_used; + hashitem_T *hi = NULL; // Complete with name of sign groups already defined - current_idx = 0; - todo = (int)sg_table.ht_used; FOR_ALL_HASHTAB_ITEMS(&sg_table, hi, todo) { if (!HASHITEM_EMPTY(hi)) @@ -2058,7 +2107,7 @@ get_nth_sign_group_name(int idx) --todo; if (current_idx++ == idx) { - group = HI2SG(hi); + signgroup_T *group = HI2SG(hi); return group->sg_name; } } @@ -2126,9 +2175,9 @@ set_context_in_sign_cmd(expand_T *xp, char_u *arg) xp->xp_pattern = arg; end_subcmd = skiptowhite(arg); + // expand subcmd name + // :sign {subcmd} if (*end_subcmd == NUL) - // expand subcmd name - // :sign {subcmd} return; cmd_idx = sign_cmd_idx(arg, end_subcmd); @@ -2250,16 +2299,17 @@ sign_define_from_dict(char_u *name_arg, dict_T *dict) int prio = -1; int retval = -1; + if (name_arg == NULL && dict == NULL) + return retval; + if (name_arg == NULL) - { - if (dict == NULL) - return -1; name = dict_get_string(dict, "name", TRUE); - } else name = vim_strsave(name_arg); + if (name == NULL || name[0] == NUL) goto cleanup; + if (dict != NULL) { icon = dict_get_string(dict, "icon", TRUE); @@ -2294,16 +2344,16 @@ sign_define_from_dict(char_u *name_arg, dict_T *dict) static void sign_define_multiple(list_T *l, list_T *retlist) { - listitem_T *li; - int retval; - + listitem_T *li = NULL; FOR_ALL_LIST_ITEMS(l, li) { - retval = -1; + int retval = -1; + if (li->li_tv.v_type == VAR_DICT) retval = sign_define_from_dict(NULL, li->li_tv.vval.v_dict); else emsg(_(e_dictionary_required)); + list_append_number(retlist, retval); } } @@ -2314,8 +2364,6 @@ sign_define_multiple(list_T *l, list_T *retlist) void f_sign_define(typval_T *argvars, typval_T *rettv) { - char_u *name; - if (in_vim9script() && (check_for_string_or_list_arg(argvars, 0) == FAIL || check_for_opt_dict_arg(argvars, 1) == FAIL)) return; @@ -2333,7 +2381,7 @@ f_sign_define(typval_T *argvars, typval_T *rettv) // Define a single sign rettv->vval.v_number = -1; - name = tv_get_string_chk(&argvars[0]); + char_u *name = tv_get_string_chk(&argvars[0]); if (name == NULL) return; @@ -2350,14 +2398,13 @@ f_sign_define(typval_T *argvars, typval_T *rettv) void f_sign_getdefined(typval_T *argvars, typval_T *rettv) { - char_u *name = NULL; - if (rettv_list_alloc_id(rettv, aid_sign_getdefined) == FAIL) return; if (in_vim9script() && check_for_opt_string_arg(argvars, 0) == FAIL) return; + char_u *name = NULL; if (argvars[0].v_type != VAR_UNKNOWN) name = tv_get_string(&argvars[0]); @@ -2371,12 +2418,9 @@ void f_sign_getplaced(typval_T *argvars, typval_T *rettv) { buf_T *buf = NULL; - dict_T *dict; - dictitem_T *di; linenr_T lnum = 0; int sign_id = 0; char_u *group = NULL; - int notanum = FALSE; if (rettv_list_alloc_id(rettv, aid_sign_getplaced) == FAIL) return; @@ -2397,27 +2441,36 @@ f_sign_getplaced(typval_T *argvars, typval_T *rettv) { if (check_for_nonnull_dict_arg(argvars, 1) == FAIL) return; - dict = argvars[1].vval.v_dict; + + dictitem_T *di = NULL; + dict_T *dict = argvars[1].vval.v_dict; + if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) { // get signs placed at this line - (void)tv_get_number_chk(&di->di_tv, ¬anum); + int notanum = FALSE; + tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) return; + lnum = tv_get_lnum(&di->di_tv); } + if ((di = dict_find(dict, (char_u *)"id", -1)) != NULL) { // get sign placed with this identifier + int notanum = FALSE; sign_id = (int)tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) return; } + if ((di = dict_find(dict, (char_u *)"group", -1)) != NULL) { group = tv_get_string_chk(&di->di_tv); if (group == NULL) return; + if (*group == '\0') // empty string means global group group = NULL; } @@ -2433,11 +2486,7 @@ f_sign_getplaced(typval_T *argvars, typval_T *rettv) void f_sign_jump(typval_T *argvars, typval_T *rettv) { - int sign_id; char_u *sign_group = NULL; - buf_T *buf; - int notanum = FALSE; - rettv->vval.v_number = -1; if (in_vim9script() && (check_for_number_arg(argvars, 0) == FAIL || @@ -2445,10 +2494,12 @@ f_sign_jump(typval_T *argvars, typval_T *rettv) check_for_buffer_arg(argvars, 2) == FAIL)) return; + int notanum = FALSE; // Sign identifier - sign_id = (int)tv_get_number_chk(&argvars[0], ¬anum); + int sign_id = (int)tv_get_number_chk(&argvars[0], ¬anum); if (notanum) return; + if (sign_id <= 0) { emsg(_(e_invalid_argument)); @@ -2459,8 +2510,11 @@ f_sign_jump(typval_T *argvars, typval_T *rettv) sign_group = tv_get_string_chk(&argvars[1]); if (sign_group == NULL) return; + if (sign_group[0] == '\0') + { sign_group = NULL; // global sign group + } else { sign_group = vim_strsave(sign_group); @@ -2469,7 +2523,7 @@ f_sign_jump(typval_T *argvars, typval_T *rettv) } // Buffer to place the sign - buf = get_buf_arg(&argvars[2]); + buf_T *buf = get_buf_arg(&argvars[2]); if (buf == NULL) goto cleanup; @@ -2494,10 +2548,9 @@ sign_place_from_dict(typval_T *id_tv, char_u *group = NULL; char_u *sign_name = NULL; buf_T *buf = NULL; - dictitem_T *di; + dictitem_T *di = NULL; linenr_T lnum = 0; int prio = -1; - int notanum = FALSE; int ret_sign_id = -1; // sign identifier @@ -2507,13 +2560,19 @@ sign_place_from_dict(typval_T *id_tv, if (di != NULL) id_tv = &di->di_tv; } + if (id_tv == NULL) + { sign_id = 0; + } else { + int notanum = FALSE; sign_id = tv_get_number_chk(id_tv, ¬anum); + if (notanum) return -1; + if (sign_id < 0) { emsg(_(e_invalid_argument)); @@ -2528,15 +2587,21 @@ sign_place_from_dict(typval_T *id_tv, if (di != NULL) group_tv = &di->di_tv; } + if (group_tv == NULL) + { group = NULL; // global group + } else { group = tv_get_string_chk(group_tv); if (group == NULL) goto cleanup; + if (group[0] == '\0') // global sign group + { group = NULL; + } else { group = vim_strsave(group); @@ -2552,8 +2617,10 @@ sign_place_from_dict(typval_T *id_tv, if (di != NULL) name_tv = &di->di_tv; } + if (name_tv == NULL) goto cleanup; + sign_name = tv_get_string_chk(name_tv); if (sign_name == NULL) goto cleanup; @@ -2565,8 +2632,10 @@ sign_place_from_dict(typval_T *id_tv, if (di != NULL) buf_tv = &di->di_tv; } + if (buf_tv == NULL) goto cleanup; + buf = get_buf_arg(buf_tv); if (buf == NULL) goto cleanup; @@ -2587,6 +2656,7 @@ sign_place_from_dict(typval_T *id_tv, di = dict_find(dict, (char_u *)"priority", -1); if (di != NULL) { + int notanum = FALSE; prio = (int)tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) goto cleanup; @@ -2608,7 +2678,6 @@ void f_sign_place(typval_T *argvars, typval_T *rettv) { dict_T *dict = NULL; - rettv->vval.v_number = -1; if (in_vim9script() && (check_for_number_arg(argvars, 0) == FAIL || @@ -2635,9 +2704,6 @@ f_sign_place(typval_T *argvars, typval_T *rettv) void f_sign_placelist(typval_T *argvars, typval_T *rettv) { - listitem_T *li; - int sign_id; - if (rettv_list_alloc(rettv) == FAIL) return; @@ -2648,14 +2714,17 @@ f_sign_placelist(typval_T *argvars, typval_T *rettv) return; // Process the List of sign attributes + listitem_T *li = NULL; FOR_ALL_LIST_ITEMS(argvars[0].vval.v_list, li) { - sign_id = -1; + int sign_id = -1; + if (li->li_tv.v_type == VAR_DICT) sign_id = sign_place_from_dict(NULL, NULL, NULL, NULL, li->li_tv.vval.v_dict); else emsg(_(e_dictionary_required)); + list_append_number(rettv->vval.v_list, sign_id); } } @@ -2666,16 +2735,14 @@ f_sign_placelist(typval_T *argvars, typval_T *rettv) static void sign_undefine_multiple(list_T *l, list_T *retlist) { - char_u *name; - listitem_T *li; - int retval; - + listitem_T *li = NULL; FOR_ALL_LIST_ITEMS(l, li) { - retval = -1; - name = tv_get_string_chk(&li->li_tv); + int retval = -1; + char_u *name = tv_get_string_chk(&li->li_tv); if (name != NULL && (sign_undefine_by_name(name, TRUE) == OK)) retval = 0; + list_append_number(retlist, retval); } } @@ -2686,7 +2753,6 @@ sign_undefine_multiple(list_T *l, list_T *retlist) void f_sign_undefine(typval_T *argvars, typval_T *rettv) { - char_u *name; if (in_vim9script() && check_for_opt_string_or_list_arg(argvars, 0) == FAIL) return; @@ -2712,7 +2778,7 @@ f_sign_undefine(typval_T *argvars, typval_T *rettv) else { // Free only the specified sign - name = tv_get_string_chk(&argvars[0]); + char_u *name = tv_get_string_chk(&argvars[0]); if (name == NULL) return; @@ -2728,37 +2794,39 @@ f_sign_undefine(typval_T *argvars, typval_T *rettv) static int sign_unplace_from_dict(typval_T *group_tv, dict_T *dict) { - dictitem_T *di; int sign_id = 0; buf_T *buf = NULL; char_u *group = NULL; int retval = -1; // sign group - if (group_tv != NULL) - group = tv_get_string(group_tv); - else - group = dict_get_string(dict, "group", FALSE); + group = (group_tv != NULL) ? tv_get_string(group_tv) + : dict_get_string(dict, "group", FALSE); + if (group != NULL) { if (group[0] == '\0') // global sign group + { group = NULL; + } else { group = vim_strsave(group); if (group == NULL) - return -1; + return retval; } } if (dict != NULL) { - if ((di = dict_find(dict, (char_u *)"buffer", -1)) != NULL) + dictitem_T *di = di = dict_find(dict, (char_u *)"buffer", -1); + if (di != NULL) { buf = get_buf_arg(&di->di_tv); if (buf == NULL) goto cleanup; } + if (dict_has_key(dict, "id")) { sign_id = dict_get_number(dict, "id"); @@ -2813,8 +2881,10 @@ signcolumn_on(win_T *wp) if (*wp->w_p_scl == 'n') return FALSE; + if (*wp->w_p_scl == 'y') return TRUE; + return (get_first_valid_sign(wp) != NULL # ifdef FEAT_NETBEANS_INTG || wp->w_buffer->b_has_sign_column @@ -2829,7 +2899,6 @@ void f_sign_unplace(typval_T *argvars, typval_T *rettv) { dict_T *dict = NULL; - rettv->vval.v_number = -1; if ((check_for_string_arg(argvars, 0) == FAIL || @@ -2848,9 +2917,6 @@ f_sign_unplace(typval_T *argvars, typval_T *rettv) void f_sign_unplacelist(typval_T *argvars, typval_T *rettv) { - listitem_T *li; - int retval; - if (rettv_list_alloc(rettv) == FAIL) return; @@ -2860,13 +2926,16 @@ f_sign_unplacelist(typval_T *argvars, typval_T *rettv) if (check_for_list_arg(argvars, 0) == FAIL) return; + listitem_T *li = NULL; FOR_ALL_LIST_ITEMS(argvars[0].vval.v_list, li) { - retval = -1; + int retval = -1; + if (li->li_tv.v_type == VAR_DICT) retval = sign_unplace_from_dict(NULL, li->li_tv.vval.v_dict); else emsg(_(e_dictionary_required)); + list_append_number(rettv->vval.v_list, retval); } } diff --git a/src/version.c b/src/version.c index f81cf12bee..b569807722 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 885, /**/ 884, /**/ From c1e6621a59ab6351fef24c1b28fb30ff34191b04 Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Sun, 24 Nov 2024 14:30:43 +0100 Subject: [PATCH 025/244] runtime(c3): include c3 filetype plugin closes: #16090 Signed-off-by: Turiiya <34311583+ttytm@users.noreply.github.com> Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 1 + runtime/ftplugin/c3.vim | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 runtime/ftplugin/c3.vim diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 5bc45e78e5..4c5ee6d2b2 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -131,6 +131,7 @@ runtime/ftplugin/autohotkey.vim @telemachus runtime/ftplugin/awk.vim @dkearns runtime/ftplugin/basic.vim @dkearns runtime/ftplugin/bst.vim @tpope +runtime/ftplugin/c3.vim @ttytm runtime/ftplugin/cabal.vim @ribru17 runtime/ftplugin/cedar.vim @ribru17 runtime/ftplugin/cfg.vim @chrisbra diff --git a/runtime/ftplugin/c3.vim b/runtime/ftplugin/c3.vim new file mode 100644 index 0000000000..6db665a03a --- /dev/null +++ b/runtime/ftplugin/c3.vim @@ -0,0 +1,14 @@ +" Vim filetype plugin +" Language: C3 +" Maintainer: Turiiya <34311583+ttytm@users.noreply.github.com> +" Last Change: 2024 Nov 24 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setl comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// +setl commentstring=//\ %s + +let b:undo_ftplugin = 'setl com< cms<' From 57b947e3c3b8d52b914158979263855d785445d5 Mon Sep 17 00:00:00 2001 From: "Wu, Zhenyu" Date: Sun, 24 Nov 2024 14:34:01 +0100 Subject: [PATCH 026/244] patch 9.1.0886: filetype: debian control file not detected Problem: filetype: debian control file not detected Solution: detect 'debian/control' files as debcontrol filetype (author) closes: #16067 Signed-off-by: Wu, Zhenyu Signed-off-by: James McCoy Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 6 +++--- src/testdir/test_filetype.vim | 2 +- src/version.c | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index ef8c0e922e..08290d0b87 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: The Vim Project -" Last Change: 2024 Nov 19 +" Last Change: 2024 Nov 24 " Former Maintainer: Bram Moolenaar " Listen very carefully, I will say this only once @@ -646,9 +646,9 @@ au BufNewFile,BufRead *.dfy setf dafny au BufRead,BufNewfile *.dart,*.drt setf dart " Debian Control -au BufNewFile,BufRead */debian/control setf debcontrol +au BufNewFile,BufRead */{debian,DEBIAN}/control setf debcontrol au BufNewFile,BufRead control - \ if getline(1) =~ '^Source:' + \ if getline(1) =~ '^Source:\|^Package:' \| setf debcontrol \| endif diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 001a970aeb..4a905a889a 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -211,7 +211,7 @@ def s:GetFilenameChecks(): dict> datascript: ['file.ds'], dcd: ['file.dcd'], debchangelog: ['changelog.Debian', 'changelog.dch', 'NEWS.Debian', 'NEWS.dch', '/debian/changelog'], - debcontrol: ['/debian/control', 'any/debian/control'], + debcontrol: ['/debian/control', 'any/debian/control', 'any/DEBIAN/control'], debcopyright: ['/debian/copyright', 'any/debian/copyright'], debsources: ['/etc/apt/sources.list', '/etc/apt/sources.list.d/file.list', 'any/etc/apt/sources.list', 'any/etc/apt/sources.list.d/file.list'], deb822sources: ['/etc/apt/sources.list.d/file.sources', 'any/etc/apt/sources.list.d/file.sources'], diff --git a/src/version.c b/src/version.c index b569807722..6f5c7a4984 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 886, /**/ 885, /**/ From 5757a2054702a7f15f1bdbde6d32834bc4f2faf6 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Mon, 25 Nov 2024 09:59:20 +0100 Subject: [PATCH 027/244] patch 9.1.0887: Wrong expression in sign.c Problem: Wrong expression in sign.c (after v9.1.0885) Solution: remove the duplicate expression Signed-off-by: Christian Brabandt --- src/sign.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sign.c b/src/sign.c index 2ae74e4ddf..e997a770ab 100644 --- a/src/sign.c +++ b/src/sign.c @@ -2819,7 +2819,7 @@ sign_unplace_from_dict(typval_T *group_tv, dict_T *dict) if (dict != NULL) { - dictitem_T *di = di = dict_find(dict, (char_u *)"buffer", -1); + dictitem_T *di = dict_find(dict, (char_u *)"buffer", -1); if (di != NULL) { buf = get_buf_arg(&di->di_tv); diff --git a/src/version.c b/src/version.c index 6f5c7a4984..9b6dd41986 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 887, /**/ 886, /**/ From ea49002acacd4467d7d68f605ebe5c0e85ec973b Mon Sep 17 00:00:00 2001 From: "Philip H." <47042125+pheiduck@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:03:34 +0100 Subject: [PATCH 028/244] CI: update FreeBSD runner to 14.2 closes: #16115 Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com> Signed-off-by: Christian Brabandt --- .cirrus.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index e81ed84d75..8b44a156b3 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -5,9 +5,9 @@ env: freebsd_task: name: FreeBSD matrix: - - name: FreeBSD 14.1 + - name: FreeBSD 14.2 freebsd_instance: - image_family: freebsd-14-1 + image_family: freebsd-14-2 timeout_in: 20m install_script: - pkg install -y gettext From 0a850673e3d4193d55f47bcbbc0b0da5f155307d Mon Sep 17 00:00:00 2001 From: glepnir Date: Mon, 25 Nov 2024 19:39:04 +0100 Subject: [PATCH 029/244] patch 9.1.0888: leftcol property not available in getwininfo() Problem: leftcol property not available in getwininfo() Solution: add leftcol property property (glepnir) closes: #16119 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- runtime/doc/builtin.txt | 4 +++- src/evalwindow.c | 1 + src/testdir/test_bufwintabinfo.vim | 12 ++++++++++++ src/version.c | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index e763da065f..d0f0c7b030 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2024 Nov 18 +*builtin.txt* For Vim version 9.1. Last change: 2024 Nov 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5086,6 +5086,8 @@ getwininfo([{winid}]) *getwininfo()* botline last complete displayed buffer line bufnr number of buffer in the window height window height (excluding winbar) + leftcol first column displayed; only used when + 'wrap' is off loclist 1 if showing a location list {only with the +quickfix feature} quickfix 1 if quickfix or location list window diff --git a/src/evalwindow.c b/src/evalwindow.c index ceca2c9ff1..f8b903d505 100644 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -426,6 +426,7 @@ get_win_info(win_T *wp, short tpnr, short winnr) dict_add_number(dict, "wincol", wp->w_wincol + 1); dict_add_number(dict, "textoff", win_col_off(wp)); dict_add_number(dict, "bufnr", wp->w_buffer->b_fnum); + dict_add_number(dict, "leftcol", wp->w_leftcol); #ifdef FEAT_TERMINAL dict_add_number(dict, "terminal", bt_terminal(wp->w_buffer)); diff --git a/src/testdir/test_bufwintabinfo.vim b/src/testdir/test_bufwintabinfo.vim index 403b98a365..1517a9b730 100644 --- a/src/testdir/test_bufwintabinfo.vim +++ b/src/testdir/test_bufwintabinfo.vim @@ -115,6 +115,18 @@ func Test_getbufwintabinfo() wincmd t | only endfunc +function Test_get_wininfo_leftcol() + set nowrap + set winwidth=10 + vsp + call setline(1, ['abcdefghijklmnopqrstuvwxyz']) + norm! 5zl + call assert_equal(5, getwininfo()[0].leftcol) + bwipe! + set wrap& + set winwidth& +endfunc + function Test_get_buf_options() let opts = bufnr()->getbufvar('&') call assert_equal(v:t_dict, type(opts)) diff --git a/src/version.c b/src/version.c index 9b6dd41986..53cfc6c1c5 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 888, /**/ 887, /**/ From 9f25a3a237156889df3df78dbd8f12ee6059e332 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 26 Nov 2024 15:08:02 +0100 Subject: [PATCH 030/244] patch 9.1.0889: Possible unnecessary redraw after adding/deleting lines Problem: Possible unnecessary redraw after adding/deleting lines. Solution: Check b_mod_set before using b_mod_xlines to avoid using stale b_mod_xlines value (zeertzjq). closes: #16124 Signed-off-by: zeertzjq Signed-off-by: Christian Brabandt --- src/drawscreen.c | 5 +++-- src/version.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/drawscreen.c b/src/drawscreen.c index cf2e4c15ab..778cda4d4f 100644 --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -2255,6 +2255,7 @@ win_update(win_T *wp) // match in fixed position might need redraw // if lines were inserted or deleted || (wp->w_match_head != NULL + && buf->b_mod_set && buf->b_mod_xlines != 0) #endif )))) @@ -2536,8 +2537,8 @@ win_update(win_T *wp) // - 'number' is set and below inserted/deleted lines, or // - 'relativenumber' is set and cursor moved vertically, // the text doesn't need to be redrawn, but the number column does. - if ((wp->w_p_nu && mod_top != 0 - && lnum >= mod_bot && buf->b_mod_xlines != 0) + if ((wp->w_p_nu && mod_top != 0 && lnum >= mod_bot + && buf->b_mod_set && buf->b_mod_xlines != 0) || (wp->w_p_rnu && wp->w_last_cursor_lnum_rnu != wp->w_cursor.lnum)) { diff --git a/src/version.c b/src/version.c index 53cfc6c1c5..2416ad19d6 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 889, /**/ 888, /**/ From 7e501f4d9986866382888e67d8f11faf5767c8f4 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 26 Nov 2024 15:10:33 +0100 Subject: [PATCH 031/244] runtime(gzip): load undofile if there exists one fixes: #16102 closes: #16122 Signed-off-by: Christian Brabandt --- runtime/autoload/gzip.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/runtime/autoload/gzip.vim b/runtime/autoload/gzip.vim index 26b1cda034..a6fbe2c336 100644 --- a/runtime/autoload/gzip.vim +++ b/runtime/autoload/gzip.vim @@ -1,6 +1,6 @@ " Vim autoload file for editing compressed files. " Maintainer: The Vim Project -" Last Change: 2023 Aug 10 +" Last Change: 2024 Nov 25 " Former Maintainer: Bram Moolenaar " These functions are used by the gzip plugin. @@ -148,6 +148,9 @@ fun gzip#read(cmd) else let fname = escape(expand("%:r"), " \t\n*?[{`$\\%#'\"|!<") endif + if filereadable(undofile(expand("%"))) + exe "sil rundo " . fnameescape(undofile(expand("%"))) + endif if &verbose >= 8 execute "doau BufReadPost " . fname else From ac023e8baae65584537aa3c11494dad6f71770af Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Wed, 27 Nov 2024 20:55:45 +0100 Subject: [PATCH 032/244] patch 9.1.0890: %! item not allowed for 'rulerformat' Problem: %! item not allowed for 'rulerformat' (yatinlala) Solution: also allow to use %! for rulerformat option (Yegappan Lakshmanan) fixes: #16091 closes: #16118 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- runtime/doc/options.txt | 3 ++- runtime/doc/tags | 1 + runtime/doc/version9.txt | 4 +++- src/optionstr.c | 7 ++++++- .../dumps/Test_rulerformat_function.dump | 2 ++ src/testdir/test_cmdline.vim | 21 +++++++++++++++++++ src/version.c | 2 ++ 7 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/testdir/dumps/Test_rulerformat_function.dump diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 57d4af882f..e9f35e4f31 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Nov 24 +*options.txt* For Vim version 9.1. Last change: 2024 Nov 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -7870,6 +7870,7 @@ A jump table for the options with a short description can be found at |Q_op|. All fields except the {item} are optional. A single percent sign can be given as "%%". + *stl-%!* When the option starts with "%!" then it is used as an expression, evaluated and the result is used as the option value. Example: > :set statusline=%!MyStatusLine() diff --git a/runtime/doc/tags b/runtime/doc/tags index f339880208..68465cc091 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -10222,6 +10222,7 @@ state() builtin.txt /*state()* static-tag tagsrch.txt /*static-tag* status-line windows.txt /*status-line* statusmsg-variable eval.txt /*statusmsg-variable* +stl-%! options.txt /*stl-%!* stl-%{ options.txt /*stl-%{* str2float() builtin.txt /*str2float()* str2list() builtin.txt /*str2list()* diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 10e13f846a..04d1a92bda 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Nov 14 +*version9.txt* For Vim version 9.1. Last change: 2024 Nov 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41607,6 +41607,8 @@ Changed~ started via |:Tutor| - improve the |vimtutor| and add a second chapter for more advanced tips - allow to pass local Vim script variables to python interpreter |py3eval()| +- |getwininfo()| now also returns the "leftcol" property for a window +- 'rulerformat' now supports the |stl-%!| item *added-9.2* Added ~ diff --git a/src/optionstr.c b/src/optionstr.c index 7c589e9173..d7cb38a3aa 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -3330,7 +3330,12 @@ parse_statustabline_rulerformat(optset_T *args, int rulerformat) if (wid && *s == '(' && (errmsg = check_stl_option(p_ruf)) == NULL) ru_wid = wid; else - errmsg = check_stl_option(p_ruf); + { + // Validate the flags in 'rulerformat' only if it doesn't point to + // a custom function ("%!" flag). + if ((*varp)[1] != '!') + errmsg = check_stl_option(p_ruf); + } } // check 'statusline' or 'tabline' only if it doesn't start with "%!" else if (rulerformat || s[0] != '%' || s[1] != '!') diff --git a/src/testdir/dumps/Test_rulerformat_function.dump b/src/testdir/dumps/Test_rulerformat_function.dump new file mode 100644 index 0000000000..a93fd32033 --- /dev/null +++ b/src/testdir/dumps/Test_rulerformat_function.dump @@ -0,0 +1,2 @@ +> +0&#ffffff0@39 +@22|1|0|,|2|0| @8|3|0|%| diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 9aec012ed8..2fbce74ce0 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -3867,6 +3867,27 @@ func Test_rulerformat_position() call StopVimInTerminal(buf) endfunc +" Test for using "%!" in 'rulerformat' to use a function +func Test_rulerformat_function() + CheckScreendump + + let lines =<< trim END + func TestRulerFn() + return '10,20%=30%%' + endfunc + END + call writefile(lines, 'Xrulerformat_function', 'D') + + let buf = RunVimInTerminal('-S Xrulerformat_function', #{rows: 2, cols: 40}) + call term_sendkeys(buf, ":set ruler rulerformat=%!TestRulerFn()\") + call term_sendkeys(buf, ":redraw!\") + call term_wait(buf) + call VerifyScreenDump(buf, 'Test_rulerformat_function', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + func Test_getcompletion_usercmd() command! -nargs=* -complete=command TestCompletion echo diff --git a/src/version.c b/src/version.c index 2416ad19d6..243e348e95 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 890, /**/ 889, /**/ From 80b662009c0fe8f1728a3f3a2c8013b7eebf6745 Mon Sep 17 00:00:00 2001 From: glepnir Date: Wed, 27 Nov 2024 21:53:53 +0100 Subject: [PATCH 033/244] patch 9.1.0891: building the completion list array is inefficient Problem: building the completion list array is inefficient Solution: refactor and improve ins_compl_build_pum() func (glepnir) current time complexity is O(n^2). I guess garray is not used here to save memory and avoid efficiency is caused by heap memory allocation. A simple way is to add an extra pointer as a single linked list to store the matching compl_T, and traverse this single linked list to generate compl_match_array. The time complexity is O(n x m). The worst case is m=n, but we can still get a little improvement. Because the if condition does not need to be run at one time. This should be a good solution for now. Later we may be able to complete it in O(lgn) time. But this requires more reconstruction. So this is the first step. closes: #16125 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/insexpand.c | 158 +++++++++++++++++++++++++----------------------- src/version.c | 2 + 2 files changed, 85 insertions(+), 75 deletions(-) diff --git a/src/insexpand.c b/src/insexpand.c index 6bc5075cbd..ba5f919a9b 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -95,6 +95,7 @@ struct compl_S { compl_T *cp_next; compl_T *cp_prev; + compl_T *cp_match_next; // matched next compl_T string_T cp_str; // matched text char_u *(cp_text[CPT_COUNT]); // text for the menu #ifdef FEAT_EVAL @@ -197,7 +198,7 @@ static int compl_selected_item = -1; static int *compl_fuzzy_scores; -static int ins_compl_add(char_u *str, int len, char_u *fname, char_u **cptext, typval_T *user_data, int cdir, int flags, int adup, int *extra_hl); +static int ins_compl_add(char_u *str, int len, char_u *fname, char_u **cptext, typval_T *user_data, int cdir, int flags, int adup, int *user_hl); static void ins_compl_longest_match(compl_T *match); static void ins_compl_del_pum(void); static void ins_compl_files(int count, char_u **files, int thesaurus, int flags, regmatch_T *regmatch, char_u *buf, int *dir); @@ -754,7 +755,7 @@ ins_compl_add_infercase( * cdir - match direction. If 0, use "compl_direction". * flags_arg - match flags (cp_flags) * adup - accept this match even if it is already present. - * *extra_hl - list of extra highlight attributes for abbr kind. + * *user_hl - list of extra highlight attributes for abbr kind. * If "cdir" is FORWARD, then the match is added after the current match. * Otherwise, it is added before the current match. * @@ -772,7 +773,7 @@ ins_compl_add( int cdir, int flags_arg, int adup, // accept duplicate match - int *extra_hl) // user abbr/kind hlattr + int *user_hl) // user abbr/kind hlattr { compl_T *match; int dir = (cdir == 0 ? compl_direction : cdir); @@ -838,8 +839,8 @@ ins_compl_add( else match->cp_fname = NULL; match->cp_flags = flags; - match->cp_user_abbr_hlattr = extra_hl ? extra_hl[0] : -1; - match->cp_user_kind_hlattr = extra_hl ? extra_hl[1] : -1; + match->cp_user_abbr_hlattr = user_hl ? user_hl[0] : -1; + match->cp_user_kind_hlattr = user_hl ? user_hl[1] : -1; if (cptext != NULL) { @@ -1233,6 +1234,9 @@ ins_compl_build_pum(void) unsigned int cur_cot_flags = get_cot_flags(); int compl_no_select = (cur_cot_flags & COT_NOSELECT) != 0; int compl_fuzzy_match = (cur_cot_flags & COT_FUZZY) != 0; + compl_T *match_head = NULL; + compl_T *match_tail = NULL; + compl_T *match_next = NULL; // Need to build the popup menu list. compl_match_arraysize = 0; @@ -1249,7 +1253,14 @@ ins_compl_build_pum(void) && (compl_leader.string == NULL || ins_compl_equal(compl, compl_leader.string, (int)compl_leader.length) || (compl_fuzzy_match && compl->cp_score > 0))) + { ++compl_match_arraysize; + if (match_head == NULL) + match_head = compl; + else + match_tail->cp_match_next = compl; + match_tail = compl; + } compl = compl->cp_next; } while (compl != NULL && !is_first_match(compl)); @@ -1270,81 +1281,76 @@ ins_compl_build_pum(void) && shown_match_ok == FALSE) compl_shown_match = compl_no_select ? compl_first_match : compl_first_match->cp_next; - i = 0; - compl = compl_first_match; - do + compl = match_head; + if (match_tail == match_head) + did_find_shown_match = TRUE; + while (compl != NULL) { - if (!match_at_original_text(compl) - && (compl_leader.string == NULL - || ins_compl_equal(compl, compl_leader.string, (int)compl_leader.length) - || (compl_fuzzy_match && compl->cp_score > 0))) + if (!shown_match_ok && !compl_fuzzy_match) { - if (!shown_match_ok && !compl_fuzzy_match) + if (compl == compl_shown_match || did_find_shown_match) { - if (compl == compl_shown_match || did_find_shown_match) - { - // This item is the shown match or this is the - // first displayed item after the shown match. - compl_shown_match = compl; - did_find_shown_match = TRUE; - shown_match_ok = TRUE; - } - else - // Remember this displayed match for when the - // shown match is just below it. - shown_compl = compl; - cur = i; + // This item is the shown match or this is the + // first displayed item after the shown match. + compl_shown_match = compl; + did_find_shown_match = TRUE; + shown_match_ok = TRUE; } - else if (compl_fuzzy_match) + else + // Remember this displayed match for when the + // shown match is just below it. + shown_compl = compl; + cur = i; + } + else if (compl_fuzzy_match) + { + if (i == 0) + shown_compl = compl; + // Update the maximum fuzzy score and the shown match + // if the current item's score is higher + if (compl->cp_score > max_fuzzy_score) { - if (i == 0) - shown_compl = compl; - // Update the maximum fuzzy score and the shown match - // if the current item's score is higher - if (compl->cp_score > max_fuzzy_score) - { - did_find_shown_match = TRUE; - max_fuzzy_score = compl->cp_score; - if (!compl_no_select) - compl_shown_match = compl; - } - - if (!shown_match_ok && compl == compl_shown_match && !compl_no_select) - { - cur = i; - shown_match_ok = TRUE; - } + did_find_shown_match = TRUE; + max_fuzzy_score = compl->cp_score; + if (!compl_no_select) + compl_shown_match = compl; + } - // If there is no "no select" condition and the max fuzzy - // score is positive, or there is no completion leader or the - // leader length is zero, mark the shown match as valid and - // reset the current index. - if (!compl_no_select - && (max_fuzzy_score > 0 - || (compl_leader.string == NULL || compl_leader.length == 0))) - { - if (match_at_original_text(compl_shown_match)) - compl_shown_match = shown_compl; - } + if (!shown_match_ok && compl == compl_shown_match && !compl_no_select) + { + cur = i; + shown_match_ok = TRUE; } - if (compl->cp_text[CPT_ABBR] != NULL) - compl_match_array[i].pum_text = compl->cp_text[CPT_ABBR]; - else - compl_match_array[i].pum_text = compl->cp_str.string; - compl_match_array[i].pum_kind = compl->cp_text[CPT_KIND]; - compl_match_array[i].pum_info = compl->cp_text[CPT_INFO]; - compl_match_array[i].pum_score = compl->cp_score; - compl_match_array[i].pum_user_abbr_hlattr = compl->cp_user_abbr_hlattr; - compl_match_array[i].pum_user_kind_hlattr = compl->cp_user_kind_hlattr; - if (compl->cp_text[CPT_MENU] != NULL) - compl_match_array[i++].pum_extra = - compl->cp_text[CPT_MENU]; - else - compl_match_array[i++].pum_extra = compl->cp_fname; + // If there is no "no select" condition and the max fuzzy + // score is positive, or there is no completion leader or the + // leader length is zero, mark the shown match as valid and + // reset the current index. + if (!compl_no_select + && (max_fuzzy_score > 0 + || (compl_leader.string == NULL || compl_leader.length == 0))) + { + if (match_at_original_text(compl_shown_match)) + compl_shown_match = shown_compl; + } } + if (compl->cp_text[CPT_ABBR] != NULL) + compl_match_array[i].pum_text = compl->cp_text[CPT_ABBR]; + else + compl_match_array[i].pum_text = compl->cp_str.string; + compl_match_array[i].pum_kind = compl->cp_text[CPT_KIND]; + compl_match_array[i].pum_info = compl->cp_text[CPT_INFO]; + compl_match_array[i].pum_score = compl->cp_score; + compl_match_array[i].pum_user_abbr_hlattr = compl->cp_user_abbr_hlattr; + compl_match_array[i].pum_user_kind_hlattr = compl->cp_user_kind_hlattr; + if (compl->cp_text[CPT_MENU] != NULL) + compl_match_array[i++].pum_extra = + compl->cp_text[CPT_MENU]; + else + compl_match_array[i++].pum_extra = compl->cp_fname; + if (compl == compl_shown_match && !compl_fuzzy_match) { did_find_shown_match = TRUE; @@ -1362,8 +1368,10 @@ ins_compl_build_pum(void) shown_match_ok = TRUE; } } - compl = compl->cp_next; - } while (compl != NULL && !is_first_match(compl)); + match_next = compl->cp_match_next; + compl->cp_match_next = NULL; + compl = match_next; + } if (compl_fuzzy_match && compl_leader.string != NULL && compl_leader.length > 0) { @@ -2893,7 +2901,7 @@ ins_compl_add_tv(typval_T *tv, int dir, int fast) int status; char_u *user_abbr_hlname; char_u *user_kind_hlname; - int extra_hl[2] = { -1, -1 }; + int user_hl[2] = { -1, -1 }; user_data.v_type = VAR_UNKNOWN; if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL) @@ -2905,10 +2913,10 @@ ins_compl_add_tv(typval_T *tv, int dir, int fast) cptext[CPT_INFO] = dict_get_string(tv->vval.v_dict, "info", FALSE); user_abbr_hlname = dict_get_string(tv->vval.v_dict, "abbr_hlgroup", FALSE); - extra_hl[0] = get_user_highlight_attr(user_abbr_hlname); + user_hl[0] = get_user_highlight_attr(user_abbr_hlname); user_kind_hlname = dict_get_string(tv->vval.v_dict, "kind_hlgroup", FALSE); - extra_hl[1] = get_user_highlight_attr(user_kind_hlname); + user_hl[1] = get_user_highlight_attr(user_kind_hlname); dict_get_tv(tv->vval.v_dict, "user_data", &user_data); if (dict_get_string(tv->vval.v_dict, "icase", FALSE) != NULL @@ -2933,7 +2941,7 @@ ins_compl_add_tv(typval_T *tv, int dir, int fast) return FAIL; } status = ins_compl_add(word, -1, NULL, cptext, - &user_data, dir, flags, dup, extra_hl); + &user_data, dir, flags, dup, user_hl); if (status != OK) clear_tv(&user_data); return status; diff --git a/src/version.c b/src/version.c index 243e348e95..7edc79fb95 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 891, /**/ 890, /**/ From 511eb84c08ea28a0a1363a4e780ee4311818f459 Mon Sep 17 00:00:00 2001 From: Eisuke Kawashima Date: Thu, 28 Nov 2024 18:00:09 +0100 Subject: [PATCH 034/244] runtime(po): remove poDiffOld/New, add po-format flags to syntax file fixes: #16120 closes: #16132 Signed-off-by: Eisuke Kawashima Signed-off-by: Christian Brabandt --- runtime/syntax/po.vim | 56 +++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/runtime/syntax/po.vim b/runtime/syntax/po.vim index 08d6baec27..6da27f639d 100644 --- a/runtime/syntax/po.vim +++ b/runtime/syntax/po.vim @@ -1,10 +1,11 @@ " Vim syntax file " Language: po (gettext) " Maintainer: Dwayne Bailey -" Last Change: 2015 Jun 07 +" Last Change: 2024 Nov 28 " Contributors: Dwayne Bailey (Most advanced syntax highlighting) " Leonardo Fontenelle (Spell checking) " Nam SungHyun (Original maintainer) +" Eisuke Kawashima (add format-flags: #16132) " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -32,9 +33,9 @@ syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained +syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable -syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained +syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable " Header and Copyright @@ -45,13 +46,43 @@ syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR / contained +syn match poFlagFormat /\<\%(no-\)\?boost-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?c++-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?c-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?csharp-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?elisp-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?gcc-internal-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?gfc-internal-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?java-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?java-printf-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?javascript-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?kde-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?librep-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?lisp-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?lua-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?objc-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?object-pascal-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?perl-brace-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?perl-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?php-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?python-brace-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?python-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?qt-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?qt-plural-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?ruby-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?scheme-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?sh-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?smalltalk-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?tcl-format\>/ contained +syn match poFlagFormat /\<\%(no-\)\?ycp-format\>/ contained + syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset -syn match poCommentAutomatic "^#\..*$" +syn match poCommentAutomatic "^#\..*$" syn match poCommentSources "^#:.*$" -syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy -syn match poDiffOld '\(^#| "[^{]*+}\|{+[^}]*+}\|{+[^}]*\|"$\)' contained -syn match poDiffNew '\(^#| "[^{]*-}\|{-[^}]*-}\|{-[^}]*\|"$\)' contained -syn match poCommentDiff "^#|.*$" contains=poDiffOld,poDiffNew +syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy,poFlagFormat +syn match poCommentPrevious "^#|.*$" " Translations (also includes header fields as they appear in a translation msgstr) syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained @@ -66,13 +97,13 @@ syn match poFormat "%%" contained syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained " Obsolete messages -syn match poObsolete "^#\~.*$" +syn match poObsolete "^#\~.*$" " KDE Name= handling syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1 " Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char -syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 +syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell " Variables simple @@ -86,11 +117,10 @@ hi def link poComment Comment hi def link poCommentAutomatic Comment hi def link poCommentTranslator Comment hi def link poCommentFlags Special -hi def link poCommentDiff Comment +hi def link poCommentPrevious Comment hi def link poCopyrightUnset Todo hi def link poFlagFuzzy Todo -hi def link poDiffOld Todo -hi def link poDiffNew Special +hi def link poFlagFormat Todo hi def link poObsolete Comment hi def link poStatementMsgid Statement From 2cddf0e85a7f8304476397e1c51dcd0e41835ac3 Mon Sep 17 00:00:00 2001 From: Milly Date: Thu, 28 Nov 2024 18:16:55 +0100 Subject: [PATCH 035/244] patch 9.1.0892: the max value of 'tabheight' is limited by other tabpages Problem: the max value of 'tabheight' is limited by other tabpages Solution: Limit the maximum value of 'cmdheight' to the current tabpage only. (Milly) The Help says that cmdheight is local to the tab page, but says nothing about the maximum value depending on the state of all tab pages. Users may wonder why they can't increase cmdheight when there are still rows available on the current tab page. This PR changes the behavior of cmdheight so that its maximum value depends only on the state of the current tab page. Also, since magic numbers were embedded in various places with the minimum value of cmdheight being 1, we defined a constant to make it easier to understand. closes: #16131 Signed-off-by: Milly Signed-off-by: Christian Brabandt --- src/option.c | 14 ++++++------- src/proto/window.pro | 1 + src/term.c | 5 +++-- src/testdir/test_options.vim | 35 ++++++++++++++++++++++++++++++++- src/testdir/test_window_cmd.vim | 2 +- src/version.c | 2 ++ src/vim.h | 1 + src/window.c | 20 ++++++++++++++++--- 8 files changed, 66 insertions(+), 14 deletions(-) diff --git a/src/option.c b/src/option.c index 226c31d453..31b00be7b0 100644 --- a/src/option.c +++ b/src/option.c @@ -3417,13 +3417,13 @@ did_set_cmdheight(optset_T *args) char *errmsg = NULL; // if p_ch changed value, change the command line height - if (p_ch < 1) + if (p_ch < MIN_CMDHEIGHT) { errmsg = e_argument_must_be_positive; - p_ch = 1; + p_ch = MIN_CMDHEIGHT; } - if (p_ch > Rows - min_rows() + 1) - p_ch = Rows - min_rows() + 1; + if (p_ch > Rows - min_rows() + MIN_CMDHEIGHT) + p_ch = Rows - min_rows() + MIN_CMDHEIGHT; // Only compute the new window layout when startup has been // completed. Otherwise the frame sizes may be wrong. @@ -4859,15 +4859,15 @@ check_num_option_bounds( size_t errbuflen, char *errmsg) { - if (Rows < min_rows() && full_screen) + if (Rows < min_rows_for_all_tabpages() && full_screen) { if (errbuf != NULL) { vim_snprintf(errbuf, errbuflen, - _(e_need_at_least_nr_lines), min_rows()); + _(e_need_at_least_nr_lines), min_rows_for_all_tabpages()); errmsg = errbuf; } - Rows = min_rows(); + Rows = min_rows_for_all_tabpages(); } if (Columns < MIN_COLUMNS && full_screen) { diff --git a/src/proto/window.pro b/src/proto/window.pro index 4ab7103101..9a2661d96e 100644 --- a/src/proto/window.pro +++ b/src/proto/window.pro @@ -89,6 +89,7 @@ void last_status(int morewin); int tabline_height(void); int last_stl_height(int morewin); int min_rows(void); +int min_rows_for_all_tabpages(void); int only_one_window(void); void check_lnums(int do_curwin); void check_lnums_nested(int do_curwin); diff --git a/src/term.c b/src/term.c index 7e39b037c4..755d5c7109 100644 --- a/src/term.c +++ b/src/term.c @@ -3564,8 +3564,9 @@ get_bytes_from_buf(char_u *buf, char_u *bytes, int num_bytes) void check_shellsize(void) { - if (Rows < min_rows()) // need room for one window and command line - Rows = min_rows(); + // need room for one window and command line + if (Rows < min_rows_for_all_tabpages()) + Rows = min_rows_for_all_tabpages(); limit_screen_size(); // make sure these values are not invalid diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index 09a41f7dab..fa75204cfc 100644 --- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -2262,13 +2262,46 @@ func Test_opt_default() endfunc " Test for the 'cmdheight' option -func Test_cmdheight() +func Test_opt_cmdheight() %bw! let ht = &lines set cmdheight=9999 call assert_equal(1, winheight(0)) call assert_equal(ht - 1, &cmdheight) set cmdheight& + + " The status line should be taken into account. + set laststatus=2 + set cmdheight=9999 + call assert_equal(ht - 2, &cmdheight) + set cmdheight& laststatus& + + " The tabline should be taken into account only non-GUI. + set showtabline=2 + set cmdheight=9999 + if has('gui_running') + call assert_equal(ht - 1, &cmdheight) + else + call assert_equal(ht - 2, &cmdheight) + endif + set cmdheight& showtabline& + + " The 'winminheight' should be taken into account. + set winheight=3 winminheight=3 + split + set cmdheight=9999 + call assert_equal(ht - 8, &cmdheight) + %bw! + set cmdheight& winminheight& winheight& + + " Only the windows in the current tabpage are taken into account. + set winheight=3 winminheight=3 showtabline=0 + split + tabnew + set cmdheight=9999 + call assert_equal(ht - 3, &cmdheight) + %bw! + set cmdheight& winminheight& winheight& showtabline& endfunc " To specify a control character as an option value, '^' can be used diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim index c8afab325f..75b37ecdac 100644 --- a/src/testdir/test_window_cmd.vim +++ b/src/testdir/test_window_cmd.vim @@ -68,7 +68,7 @@ func Test_cmdheight_not_changed() tabonly! only - set winminwidth& cmdheight& + set winminheight& cmdheight& augroup Maximize au! augroup END diff --git a/src/version.c b/src/version.c index 7edc79fb95..d5a7899d71 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 892, /**/ 891, /**/ diff --git a/src/vim.h b/src/vim.h index 2878541941..f8090bf7d9 100644 --- a/src/vim.h +++ b/src/vim.h @@ -1625,6 +1625,7 @@ typedef UINT32_TYPEDEF UINT32_T; */ #define MIN_COLUMNS 12 // minimal columns for screen #define MIN_LINES 2 // minimal lines for screen +#define MIN_CMDHEIGHT 1 // minimal height for command line #define STATUS_HEIGHT 1 // height of a status line under a window #ifdef FEAT_MENU // height of a status line under a window # define WINBAR_HEIGHT(wp) (wp)->w_winbar_height diff --git a/src/window.c b/src/window.c index f8a6907ec8..23a52ef8db 100644 --- a/src/window.c +++ b/src/window.c @@ -6667,7 +6667,7 @@ win_setminheight(void) while (p_wmh > 0) { room = Rows - p_ch; - needed = min_rows() - 1; // 1 was added for the cmdline + needed = min_rows_for_all_tabpages() - 1; // 1 was added for the cmdline if (room >= needed) break; --p_wmh; @@ -6826,7 +6826,7 @@ win_drag_status_line(win_T *dragwin, int offset) row = win_comp_pos(); screen_fill(row, cmdline_row, 0, (int)Columns, ' ', ' ', 0); cmdline_row = row; - p_ch = MAX(Rows - cmdline_row, 1); + p_ch = MAX(Rows - cmdline_row, MIN_CMDHEIGHT); curtab->tp_ch_used = p_ch; win_fix_scroll(TRUE); @@ -7496,6 +7496,20 @@ last_stl_height( */ int min_rows(void) +{ + if (firstwin == NULL) // not initialized yet + return MIN_LINES; + + return frame_minheight(curtab->tp_topframe, NULL) + tabline_height() + + MIN_CMDHEIGHT; +} + +/* + * Return the minimal number of rows that is needed on the screen to display + * the current number of windows for all tab pages. + */ + int +min_rows_for_all_tabpages(void) { int total; tabpage_T *tp; @@ -7512,7 +7526,7 @@ min_rows(void) total = n; } total += tabline_height(); - total += 1; // count the room for the command line + total += MIN_CMDHEIGHT; return total; } From 65311c6f472de67b368d83441ca5e93da86161f4 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Thu, 28 Nov 2024 21:06:09 +0100 Subject: [PATCH 036/244] runtime(compiler): include spotbugs Java linter closes: #16001 Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Konfekt Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt --- runtime/autoload/spotbugs.vim | 250 ++++++++++++++++++++++++++++++++++ runtime/compiler/javac.vim | 8 +- runtime/compiler/maven.vim | 2 +- runtime/compiler/spotbugs.vim | 189 +++++++++++++++++++++++++ runtime/doc/quickfix.txt | 113 ++++++++++++++- runtime/doc/tags | 2 + runtime/ftplugin/java.vim | 138 ++++++++++++++++++- 7 files changed, 688 insertions(+), 14 deletions(-) create mode 100644 runtime/autoload/spotbugs.vim create mode 100644 runtime/compiler/spotbugs.vim diff --git a/runtime/autoload/spotbugs.vim b/runtime/autoload/spotbugs.vim new file mode 100644 index 0000000000..9161395794 --- /dev/null +++ b/runtime/autoload/spotbugs.vim @@ -0,0 +1,250 @@ +" Default pre- and post-compiler actions for SpotBugs +" Maintainers: @konfekt and @zzzyxwvut +" Last Change: 2024 Nov 27 + +let s:save_cpo = &cpo +set cpo&vim + +if v:version > 900 + + function! spotbugs#DeleteClassFiles() abort + if !exists('b:spotbugs_class_files') + return + endif + + for pathname in b:spotbugs_class_files + let classname = pathname =~# "^'.\\+\\.class'$" + \ ? eval(pathname) + \ : pathname + + if classname =~# '\.class$' && filereadable(classname) + " Since v9.0.0795. + let octad = readblob(classname, 0, 8) + + " Test the magic number and the major version number (45 for v1.0). + " Since v9.0.2027. + if len(octad) == 8 && octad[0 : 3] == 0zcafe.babe && + \ or((octad[6] << 8), octad[7]) >= 45 + echomsg printf('Deleting %s: %d', classname, delete(classname)) + endif + endif + endfor + + let b:spotbugs_class_files = [] + endfunction + +else + + function! s:DeleteClassFilesWithNewLineCodes(classname) abort + " The distribution of "0a"s in class file versions 2560 and 2570: + " + " 0zca.fe.ba.be.00.00.0a.00 0zca.fe.ba.be.00.00.0a.0a + " 0zca.fe.ba.be.00.0a.0a.00 0zca.fe.ba.be.00.0a.0a.0a + " 0zca.fe.ba.be.0a.00.0a.00 0zca.fe.ba.be.0a.00.0a.0a + " 0zca.fe.ba.be.0a.0a.0a.00 0zca.fe.ba.be.0a.0a.0a.0a + let numbers = [0, 0, 0, 0, 0, 0, 0, 0] + let offset = 0 + let lines = readfile(a:classname, 'b', 4) + + " Track NL byte counts to handle files of less than 8 bytes. + let nl_cnt = len(lines) + " Track non-NL byte counts for "0zca.fe.ba.be.0a.0a.0a.0a". + let non_nl_cnt = 0 + + for line in lines + for idx in range(strlen(line)) + " Remap NLs to Nuls. + let numbers[offset] = (line[idx] == "\n") ? 0 : char2nr(line[idx]) % 256 + let non_nl_cnt += 1 + let offset += 1 + + if offset > 7 + break + endif + endfor + + let nl_cnt -= 1 + + if offset > 7 || (nl_cnt < 1 && non_nl_cnt > 4) + break + endif + + " Reclaim NLs. + let numbers[offset] = 10 + let offset += 1 + + if offset > 7 + break + endif + endfor + + " Test the magic number and the major version number (45 for v1.0). + if offset > 7 && numbers[0] == 0xca && numbers[1] == 0xfe && + \ numbers[2] == 0xba && numbers[3] == 0xbe && + \ (numbers[6] * 256 + numbers[7]) >= 45 + echomsg printf('Deleting %s: %d', a:classname, delete(a:classname)) + endif + endfunction + + function! spotbugs#DeleteClassFiles() abort + if !exists('b:spotbugs_class_files') + return + endif + + let encoding = &encoding + + try + set encoding=latin1 + + for pathname in b:spotbugs_class_files + let classname = pathname =~# "^'.\\+\\.class'$" + \ ? eval(pathname) + \ : pathname + + if classname =~# '\.class$' && filereadable(classname) + let line = get(readfile(classname, 'b', 1), 0, '') + let length = strlen(line) + + " Test the magic number and the major version number (45 for v1.0). + if length > 3 && line[0 : 3] == "\xca\xfe\xba\xbe" + if length > 7 && ((line[6] == "\n" ? 0 : char2nr(line[6]) % 256) * 256 + + \ (line[7] == "\n" ? 0 : char2nr(line[7]) % 256)) >= 45 + echomsg printf('Deleting %s: %d', classname, delete(classname)) + else + call s:DeleteClassFilesWithNewLineCodes(classname) + endif + endif + endif + endfor + finally + let &encoding = encoding + endtry + + let b:spotbugs_class_files = [] + endfunction + +endif + +function! spotbugs#DefaultPostCompilerAction() abort + " Since v7.4.191. + make %:S +endfunction + +" Look for "spotbugs#compiler" in "ftplugin/java.vim". +let s:compiler = exists('spotbugs#compiler') ? spotbugs#compiler : '' +let s:readable = filereadable($VIMRUNTIME . '/compiler/' . s:compiler . '.vim') + +if s:readable && s:compiler ==# 'maven' && executable('mvn') + + function! spotbugs#DefaultPreCompilerAction() abort + call spotbugs#DeleteClassFiles() + compiler maven + make compile + endfunction + + function! spotbugs#DefaultPreCompilerTestAction() abort + call spotbugs#DeleteClassFiles() + compiler maven + make test-compile + endfunction + + function! spotbugs#DefaultProperties() abort + return { + \ 'PreCompilerAction': + \ function('spotbugs#DefaultPreCompilerAction'), + \ 'PreCompilerTestAction': + \ function('spotbugs#DefaultPreCompilerTestAction'), + \ 'PostCompilerAction': + \ function('spotbugs#DefaultPostCompilerAction'), + \ 'sourceDirPath': 'src/main/java', + \ 'classDirPath': 'target/classes', + \ 'testSourceDirPath': 'src/test/java', + \ 'testClassDirPath': 'target/test-classes', + \ } + endfunction + + unlet s:readable s:compiler +elseif s:readable && s:compiler ==# 'ant' && executable('ant') + + function! spotbugs#DefaultPreCompilerAction() abort + call spotbugs#DeleteClassFiles() + compiler ant + make compile + endfunction + + function! spotbugs#DefaultPreCompilerTestAction() abort + call spotbugs#DeleteClassFiles() + compiler ant + make compile-test + endfunction + + function! spotbugs#DefaultProperties() abort + return { + \ 'PreCompilerAction': + \ function('spotbugs#DefaultPreCompilerAction'), + \ 'PreCompilerTestAction': + \ function('spotbugs#DefaultPreCompilerTestAction'), + \ 'PostCompilerAction': + \ function('spotbugs#DefaultPostCompilerAction'), + \ 'sourceDirPath': 'src', + \ 'classDirPath': 'build/classes', + \ 'testSourceDirPath': 'test', + \ 'testClassDirPath': 'build/test/classes', + \ } + endfunction + + unlet s:readable s:compiler +elseif s:readable && s:compiler ==# 'javac' && executable('javac') + + function! spotbugs#DefaultPreCompilerAction() abort + call spotbugs#DeleteClassFiles() + compiler javac + + if get(b:, 'javac_makeprg_params', get(g:, 'javac_makeprg_params', '')) =~ '\s@\S' + " Read options and filenames from @options [@sources ...]. + make + else + " Let Javac figure out what files to compile. + execute 'make ' . join(map(filter(copy(v:argv), + \ "v:val =~# '\\.java\\=$'"), + \ 'shellescape(v:val)'), ' ') + endif + endfunction + + function! spotbugs#DefaultPreCompilerTestAction() abort + call spotbugs#DefaultPreCompilerAction() + endfunction + + function! spotbugs#DefaultProperties() abort + return { + \ 'PreCompilerAction': + \ function('spotbugs#DefaultPreCompilerAction'), + \ 'PreCompilerTestAction': + \ function('spotbugs#DefaultPreCompilerTestAction'), + \ 'PostCompilerAction': + \ function('spotbugs#DefaultPostCompilerAction'), + \ } + endfunction + + unlet s:readable s:compiler +else + + function! spotbugs#DefaultPreCompilerAction() abort + echomsg printf('Not supported: "%s"', s:compiler) + endfunction + + function! spotbugs#DefaultPreCompilerTestAction() abort + call spotbugs#DefaultPreCompilerAction() + endfunction + + function! spotbugs#DefaultProperties() abort + return {} + endfunction + + unlet s:readable +endif + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: set foldmethod=syntax shiftwidth=2 expandtab: diff --git a/runtime/compiler/javac.vim b/runtime/compiler/javac.vim index 9bd4cdf270..53cd772ed8 100644 --- a/runtime/compiler/javac.vim +++ b/runtime/compiler/javac.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Java Development Kit Compiler " Maintainer: Doug Kearns -" Last Change: 2024 Jun 14 +" Last Change: 2024 Nov 19 (enable local javac_makeprg_params) if exists("current_compiler") finish @@ -11,11 +11,7 @@ let current_compiler = "javac" let s:cpo_save = &cpo set cpo&vim -if exists("g:javac_makeprg_params") - execute $'CompilerSet makeprg=javac\ {escape(g:javac_makeprg_params, ' \|"')}' -else - CompilerSet makeprg=javac -endif +execute $'CompilerSet makeprg=javac\ {escape(get(b:, 'javac_makeprg_params', get(g:, 'javac_makeprg_params', '')), ' \|"')}' CompilerSet errorformat=%E%f:%l:\ error:\ %m, \%W%f:%l:\ warning:\ %m, diff --git a/runtime/compiler/maven.vim b/runtime/compiler/maven.vim index ef8d8a6fb2..72e74e301d 100644 --- a/runtime/compiler/maven.vim +++ b/runtime/compiler/maven.vim @@ -14,7 +14,7 @@ if exists("current_compiler") endif let current_compiler = "maven" -CompilerSet makeprg=mvn\ --batch-mode +execute $'CompilerSet makeprg=mvn\ --batch-mode\ {escape(get(b:, 'maven_makeprg_params', get(g:, 'maven_makeprg_params', '')), ' \|"')}' " Error message for POM CompilerSet errorformat=[FATAL]\ Non-parseable\ POM\ %f:\ %m%\\s%\\+@%.%#line\ %l\\,\ column\ %c%.%#, diff --git a/runtime/compiler/spotbugs.vim b/runtime/compiler/spotbugs.vim new file mode 100644 index 0000000000..72a5084976 --- /dev/null +++ b/runtime/compiler/spotbugs.vim @@ -0,0 +1,189 @@ +" Vim compiler file +" Compiler: Spotbugs (Java static checker; needs javac compiled classes) +" Maintainer: @konfekt and @zzzyxwvut +" Last Change: 2024 Nov 27 + +if exists('g:current_compiler') || bufname() !~# '\.java\=$' || wordcount().chars < 9 + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Unfortunately Spotbugs does not output absolute paths, so you need to +" pass the directory of the files being checked as `-sourcepath` parameter. +" The regex, auxpath and glob try to include all dependent classes of the +" current buffer. See https://github.com/spotbugs/spotbugs/issues/856 + +" FIXME: When "search()" is used with the "e" flag, it makes no _further_ +" progress after claiming an EOL match (i.e. "\_" or "\n", but not "$"). +" XXX: Omit anonymous class declarations +let s:keywords = '\C\<\%(\.\@1' +" Capture ";" for counting a class file directory (see s:package_dir_heads below) +let s:package_names = '\C\ 0 + let name_attr = synIDattr(synID(lnum, (col('.') - 1), 0), 'name') + if name_attr ==# 'javaClassDecl' + let tokens = matchlist(getline(lnum)..getline(lnum + 1), s:type_names) + if !empty(tokens) | call add(type_names, tokens[1]) | endif + elseif name_attr ==# 'javaExternal' + let tokens = matchlist(getline(lnum)..getline(lnum + 1), s:package_names) + if !empty(tokens) | let s:package = tokens[1] | endif + endif + let lnum = search(s:keywords, 'eW') + endwhile + return type_names + endfunction + +else + function! s:GetDeclaredTypeNames() abort + if bufname() =~# '\<\%(module\|package\)-info\.java\=$' + return [expand('%:t:r')] + endif + " Undo the unsetting of &hls, see below + if &hls + defer execute('set hls') + endif + " Possibly restore the current values for registers '"' and "y", see below + defer call('setreg', ['"', getreg('"'), getregtype('"')]) + defer call('setreg', ['y', getreg('y'), getregtype('y')]) + defer execute('silent bwipeout') + " Copy buffer contents for modification + silent %y y + new + " Apply ":help scratch-buffer" effects and match "$" in Java (generated) + " type names (see s:type_names) + setlocal iskeyword+=$ buftype=nofile bufhidden=hide noswapfile nohls + 0put y + " Discard text blocks and strings + silent keeppatterns %s/\\\@ 0 + let line = getline(lnum) + if line =~# '\' + let tokens = matchlist(line..getline(lnum + 1), s:package_names) + if !empty(tokens) | let s:package = tokens[1] | endif + else + let tokens = matchlist(line..getline(lnum + 1), s:type_names) + if !empty(tokens) | call add(type_names, tokens[1]) | endif + endif + let lnum = search(s:keywords, 'eW') + endwhile + return type_names + endfunction +endif + +if has('win32') + + function! s:GlobClassFiles(src_type_name) abort + return glob(a:src_type_name..'$*.class', 1, 1) + endfunction + +else + function! s:GlobClassFiles(src_type_name) abort + return glob(a:src_type_name..'\$*.class', 1, 1) + endfunction +endif + +if exists('g:spotbugs_properties') && + \ (has_key(g:spotbugs_properties, 'sourceDirPath') && + \ has_key(g:spotbugs_properties, 'classDirPath')) || + \ (has_key(g:spotbugs_properties, 'testSourceDirPath') && + \ has_key(g:spotbugs_properties, 'testClassDirPath')) + +function! s:FindClassFiles(src_type_name) abort + let class_files = [] + " Match pairwise the components of source and class pathnames + for [src_dir, bin_dir] in filter([ + \ [get(g:spotbugs_properties, 'sourceDirPath', ''), + \ get(g:spotbugs_properties, 'classDirPath', '')], + \ [get(g:spotbugs_properties, 'testSourceDirPath', ''), + \ get(g:spotbugs_properties, 'testClassDirPath', '')]], + \ '!(empty(v:val[0]) || empty(v:val[1]))') + " Since only the rightmost "src" is sought, while there can be any number of + " such filenames, no "fnamemodify(a:src_type_name, ':p:s?src?bin?')" is used + let tail_idx = strridx(a:src_type_name, src_dir) + " No such directory or no such inner type (i.e. without "$") + if tail_idx < 0 | continue | endif + " Substitute "bin_dir" for the rightmost "src_dir" + let candidate_type_name = strpart(a:src_type_name, 0, tail_idx).. + \ bin_dir.. + \ strpart(a:src_type_name, (tail_idx + strlen(src_dir))) + for candidate in insert(s:GlobClassFiles(candidate_type_name), + \ candidate_type_name..'.class') + if filereadable(candidate) | call add(class_files, shellescape(candidate)) | endif + endfor + if !empty(class_files) | break | endif + endfor + return class_files +endfunction + +else +function! s:FindClassFiles(src_type_name) abort + let class_files = [] + for candidate in insert(s:GlobClassFiles(a:src_type_name), + \ a:src_type_name..'.class') + if filereadable(candidate) | call add(class_files, shellescape(candidate)) | endif + endfor + return class_files +endfunction +endif + +function! s:CollectClassFiles() abort + " Get a platform-independent pathname prefix, cf. "expand('%:p:h')..'/'" + let pathname = expand('%:p') + let tail_idx = strridx(pathname, expand('%:t')) + let src_pathname = strpart(pathname, 0, tail_idx) + let all_class_files = [] + " Get all type names in the current buffer and let the filename globbing + " discover inner type names from arbitrary type names + for type_name in s:GetDeclaredTypeNames() + call extend(all_class_files, s:FindClassFiles(src_pathname..type_name)) + endfor + return all_class_files +endfunction + +" Expose class files for removal etc. +let b:spotbugs_class_files = s:CollectClassFiles() +let s:package_dir_heads = repeat(':h', (1 + strlen(substitute(s:package, '[^.;]', '', 'g')))) +let g:current_compiler = 'spotbugs' +" CompilerSet makeprg=spotbugs +let &l:makeprg = 'spotbugs'..(has('win32') ? '.bat' : '')..' '.. + \ get(b:, 'spotbugs_makeprg_params', get(g:, 'spotbugs_makeprg_params', '-workHard -experimental')).. + \ ' -textui -emacs -auxclasspath %:p'..s:package_dir_heads..':S -sourcepath %:p'..s:package_dir_heads..':S '.. + \ join(b:spotbugs_class_files, ' ') +" Emacs expects doubled line numbers +setlocal errorformat=%f:%l:%*[0-9]\ %m,%f:-%*[0-9]:-%*[0-9]\ %m + +" " This compiler is meant to be used for a single buffer only +" exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') +" exe 'CompilerSet errorformat='..escape(&l:errorformat, ' \|"') + +delfunction s:CollectClassFiles +delfunction s:FindClassFiles +delfunction s:GlobClassFiles +delfunction s:GetDeclaredTypeNames +let &cpo = s:cpo_save +unlet s:package_dir_heads s:package s:package_names s:type_names s:keywords s:cpo_save + +" vim: set foldmethod=syntax shiftwidth=2 expandtab: diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 671630d667..5d97f793f2 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 9.1. Last change: 2024 Nov 12 +*quickfix.txt* For Vim version 9.1. Last change: 2024 Nov 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1331,10 +1331,117 @@ g:compiler_gcc_ignore_unmatched_lines JAVAC *compiler-javac* Commonly used compiler options can be added to 'makeprg' by setting the -g:javac_makeprg_params variable. For example: > +b/g:javac_makeprg_params variable. For example: > let g:javac_makeprg_params = "-Xlint:all -encoding utf-8" -< + +MAVEN *compiler-maven* + +Commonly used compiler options can be added to 'makeprg' by setting the +b/g:maven_makeprg_params variable. For example: > + + let g:maven_makeprg_params = "-DskipTests -U -X" + +SPOTBUGS *compiler-spotbugs* + +SpotBugs is a static analysis tool that can be used to find bugs in Java. +It scans the Java bytecode of all classes in the currently open buffer. +(Therefore, `:compiler! spotbugs` is not supported.) + +Commonly used compiler options can be added to 'makeprg' by setting the +"b:" or "g:spotbugs_makeprg_params" variable. For example: > + + let b:spotbugs_makeprg_params = "-longBugCodes -effort:max -low" + +The global default is "-workHard -experimental". + +By default, the class files are searched in the directory where the source +files are placed. However, typical Java projects use distinct directories +for source files and class files. To make both known to SpotBugs, assign +their paths (distinct and relative to their common root directory) to the +following properties (using the example of a common Maven project): > + + let g:spotbugs_properties = { + \ 'sourceDirPath': 'src/main/java', + \ 'classDirPath': 'target/classes', + \ 'testSourceDirPath': 'src/test/java', + \ 'testClassDirPath': 'target/test-classes', + \ } + +Note that values for the path keys describe only for SpotBugs where to look +for files; refer to the documentation for particular compiler plugins for more +information. + +The default pre- and post-compiler actions are provided for Ant, Maven, and +Javac compiler plugins and can be selected by assigning the name of a compiler +plugin to the "compiler" key: > + + let g:spotbugs_properties = { + \ 'compiler': 'maven', + \ } + +This single setting is essentially equivalent to all the settings below, with +the exception made for the "PreCompilerAction" and "PreCompilerTestAction" +values: their listed |Funcref|s will obtain no-op implementations whereas the +implicit Funcrefs of the "compiler" key will obtain the requested defaults if +available. > + + let g:spotbugs_properties = { + \ 'PreCompilerAction': + \ function('spotbugs#DefaultPreCompilerAction'), + \ 'PreCompilerTestAction': + \ function('spotbugs#DefaultPreCompilerTestAction'), + \ 'PostCompilerAction': + \ function('spotbugs#DefaultPostCompilerAction'), + \ 'sourceDirPath': 'src/main/java', + \ 'classDirPath': 'target/classes', + \ 'testSourceDirPath': 'src/test/java', + \ 'testClassDirPath': 'target/test-classes', + \ } + +With default actions, the compiler of choice will attempt to rebuild the class +files for the buffer (and possibly for the whole project) as soon as a Java +syntax file is loaded; then, `spotbugs` will attempt to analyze the quality of +the compilation unit of the buffer. + +When default actions are not suited to a desired workflow, consider writing +arbitrary functions yourself and matching their |Funcref|s to the supported +keys: "PreCompilerAction", "PreCompilerTestAction", and "PostCompilerAction". + +The next example re-implements the default pre-compiler actions for a Maven +project and requests other default Maven settings with the "compiler" entry: > + + function! MavenPreCompilerAction() abort + call spotbugs#DeleteClassFiles() + compiler maven + make compile + endfunction + + function! MavenPreCompilerTestAction() abort + call spotbugs#DeleteClassFiles() + compiler maven + make test-compile + endfunction + + let g:spotbugs_properties = { + \ 'compiler': 'maven', + \ 'PreCompilerAction': + \ function('MavenPreCompilerAction'), + \ 'PreCompilerTestAction': + \ function('MavenPreCompilerTestAction'), + \ } + +Note that all entered custom settings will take precedence over the matching +default settings in "g:spotbugs_properties". + +The "g:spotbugs_properties" variable is consulted by the Java filetype plugin +(|ft-java-plugin|) to arrange for the described automation, and, therefore, it +must be defined before |FileType| events can take place for the buffers loaded +with Java source files. It could, for example, be set in a project-local +|vimrc| loaded by [0]. + +[0] https://github.com/MarcWeber/vim-addon-local-vimrc/ + GNU MAKE *compiler-make* Since the default make program is "make", the compiler plugin for make, diff --git a/runtime/doc/tags b/runtime/doc/tags index 68465cc091..b550550268 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -6565,6 +6565,7 @@ compiler-hpada ft_ada.txt /*compiler-hpada* compiler-javac quickfix.txt /*compiler-javac* compiler-make quickfix.txt /*compiler-make* compiler-manx quickfix.txt /*compiler-manx* +compiler-maven quickfix.txt /*compiler-maven* compiler-mypy quickfix.txt /*compiler-mypy* compiler-pandoc quickfix.txt /*compiler-pandoc* compiler-perl quickfix.txt /*compiler-perl* @@ -6572,6 +6573,7 @@ compiler-pylint quickfix.txt /*compiler-pylint* compiler-pyunit quickfix.txt /*compiler-pyunit* compiler-ruff quickfix.txt /*compiler-ruff* compiler-select quickfix.txt /*compiler-select* +compiler-spotbugs quickfix.txt /*compiler-spotbugs* compiler-tex quickfix.txt /*compiler-tex* compiler-typst quickfix.txt /*compiler-typst* compiler-vaxada ft_ada.txt /*compiler-vaxada* diff --git a/runtime/ftplugin/java.vim b/runtime/ftplugin/java.vim index 55b358374f..6e12fe2fe5 100644 --- a/runtime/ftplugin/java.vim +++ b/runtime/ftplugin/java.vim @@ -3,7 +3,7 @@ " Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com> " Former Maintainer: Dan Sharp " Repository: https://github.com/zzzyxwvut/java-vim.git -" Last Change: 2024 Sep 26 +" Last Change: 2024 Nov 24 " 2024 Jan 14 by Vim Project (browsefilter) " 2024 May 23 by Riley Bruins ('commentstring') @@ -90,10 +90,127 @@ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") endif endif +" The support for pre- and post-compiler actions for SpotBugs. +if exists("g:spotbugs_properties") && has_key(g:spotbugs_properties, 'compiler') + try + let spotbugs#compiler = g:spotbugs_properties.compiler + let g:spotbugs_properties = extend( + \ spotbugs#DefaultProperties(), + \ g:spotbugs_properties, + \ 'force') + catch + echomsg v:errmsg + finally + call remove(g:spotbugs_properties, 'compiler') + endtry +endif + +if exists("g:spotbugs_properties") && + \ filereadable($VIMRUNTIME . '/compiler/spotbugs.vim') + let s:request = 0 + + if has_key(g:spotbugs_properties, 'PreCompilerAction') + let s:dispatcher = 'call g:spotbugs_properties.PreCompilerAction() | ' + let s:request += 1 + endif + + if has_key(g:spotbugs_properties, 'PreCompilerTestAction') + let s:dispatcher = 'call g:spotbugs_properties.PreCompilerTestAction() | ' + let s:request += 2 + endif + + if has_key(g:spotbugs_properties, 'PostCompilerAction') + let s:request += 4 + endif + + if (s:request == 3 || s:request == 7) && + \ has_key(g:spotbugs_properties, 'sourceDirPath') && + \ has_key(g:spotbugs_properties, 'testSourceDirPath') + function! s:DispatchAction(path_action_pairs) abort + let name = expand('%:p') + + for [path, Action] in a:path_action_pairs + if name =~# (path . '.\{-}\.java\=$') + call Action() + break + endif + endfor + endfunction + + let s:dispatcher = printf('call s:DispatchAction(%s) | ', + \ string([[g:spotbugs_properties.sourceDirPath, + \ g:spotbugs_properties.PreCompilerAction], + \ [g:spotbugs_properties.testSourceDirPath, + \ g:spotbugs_properties.PreCompilerTestAction]])) + endif + + if s:request + if exists("b:spotbugs_syntax_once") + let s:actions = [{'event': 'BufWritePost'}] + else + " XXX: Handle multiple FileType events when vimrc contains more + " than one filetype setting for the language, e.g.: + " :filetype plugin indent on + " :autocmd BufRead,BufNewFile *.java setlocal filetype=java ... + " XXX: DO NOT ADD b:spotbugs_syntax_once TO b:undo_ftplugin ! + let b:spotbugs_syntax_once = 1 + let s:actions = [{ + \ 'event': 'Syntax', + \ 'once': 1, + \ }, { + \ 'event': 'BufWritePost', + \ }] + endif + + for s:idx in range(len(s:actions)) + if s:request == 7 || s:request == 6 || s:request == 5 + let s:actions[s:idx].cmd = s:dispatcher . 'compiler spotbugs | ' . + \ 'call g:spotbugs_properties.PostCompilerAction()' + elseif s:request == 4 + let s:actions[s:idx].cmd = 'compiler spotbugs | ' . + \ 'call g:spotbugs_properties.PostCompilerAction()' + elseif s:request == 3 || s:request == 2 || s:request == 1 + let s:actions[s:idx].cmd = s:dispatcher . 'compiler spotbugs' + else + let s:actions[s:idx].cmd = '' + endif + endfor + + if !exists("#java_spotbugs") + augroup java_spotbugs + augroup END + endif + + " The events are defined in s:actions. + silent! autocmd! java_spotbugs BufWritePost + silent! autocmd! java_spotbugs Syntax + + for s:action in s:actions + execute printf('autocmd java_spotbugs %s %s', + \ s:action.event, + \ s:action.cmd . (has_key(s:action, 'once') + \ ? printf(' | autocmd! java_spotbugs %s ', + \ s:action.event) + \ : '')) + endfor + + unlet! s:action s:actions s:idx s:dispatcher + endif + + unlet s:request +endif + +function! JavaFileTypeCleanUp() abort + setlocal suffixes< suffixesadd< formatoptions< comments< commentstring< path< includeexpr< + unlet! b:browsefilter + + " The concatenated removals may be misparsed as a BufWritePost autocmd. + silent! autocmd! java_spotbugs BufWritePost + silent! autocmd! java_spotbugs Syntax +endfunction + " Undo the stuff we changed. -let b:undo_ftplugin = "setlocal suffixes< suffixesadd<" . - \ " formatoptions< comments< commentstring< path< includeexpr<" . - \ " | unlet! b:browsefilter" +let b:undo_ftplugin = 'call JavaFileTypeCleanUp() | delfunction JavaFileTypeCleanUp' " See ":help vim9-mix". if !has("vim9script") @@ -114,6 +231,19 @@ if exists("s:zip_func_upgradable") setlocal suffixesadd< endif +if exists("*s:DispatchAction") + def! s:DispatchAction(path_action_pairs: list>) + const name: string = expand('%:p') + + for [path: string, Action: func: any] in path_action_pairs + if name =~# (path .. '.\{-}\.java\=$') + Action() + break + endif + endfor + enddef +endif + " Restore the saved compatibility options. let &cpo = s:save_cpo unlet s:save_cpo From 3d670bb1912d8cf3ec86124a02c6bbd81256374b Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 28 Nov 2024 21:45:39 +0100 Subject: [PATCH 037/244] translation(de): update German manpages fixes: #16086 Signed-off-by: Christian Brabandt --- runtime/doc/vim-de.1 | 722 +++++++++++++++++++----------------- runtime/doc/vim-de.UTF-8.1 | 728 ++++++++++++++++++++----------------- 2 files changed, 777 insertions(+), 673 deletions(-) diff --git a/runtime/doc/vim-de.1 b/runtime/doc/vim-de.1 index 0ba4938f7a..e8711dfbe9 100644 --- a/runtime/doc/vim-de.1 +++ b/runtime/doc/vim-de.1 @@ -3,9 +3,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.\" Translated by bw1 (2008) and Florian Rehnisch (2012) -.\" Kudos to the folks on vim-dev and debian-l10n-german -.TH VIM 1 "2006 Apr 11" +.TH VIM 1 "28. November 2024" .SH BEZEICHNUNG vim \- Vi IMproved, ein Text\-Editor für Programmierer .SH ÜBERSICHT @@ -31,8 +29,8 @@ vim \- Vi IMproved, ein Text\-Editor f verwendet werden, um alle Arten von Klartext zu bearbeiten. Er ist besonders nützlich, um Programme zu bearbeiten. .PP -Vim hat einige Erweiterungen gegenüber Vi, z.B.: Rückgängigmachen in -mehreren Schritten, mehrere Fenster und Puffer, Syntax\-Hervorhebung, +\fBVim\fP hat eine Menge an Erweiterungen gegenüber Vi, z.B.: Mehrstufiges +Rückgängigmachen, mehrere Fenster und Puffer, Syntax\-Hervorhebung, Bearbeiten der Befehlszeile, Dateinamenergänzung, eingebaute Hilfe, visuelle Auswahl, usw. ... Siehe »:help vi_diff.txt« für eine Übersicht der Unterschiede zwischen \fBVim\fP und Vi. @@ -41,7 +39,7 @@ Im laufenden \fBVim\fP kann mit dem Befehl eingebaute Hilfesystem erlangt werden. Siehe den Abschnitt EINGEBAUTE HILFE weiter unten. .PP -Meistens wird \fBVim\fP zum Editieren einer einzigen Datei mit dem folgende +Meistens wird \fBVim\fP zum Bearbeiten einer einzigen Datei mit dem folgenden Befehl gestartet: .PP vim Datei @@ -51,8 +49,8 @@ Allgemeiner betrachtet, wird \fBVim\fP folgenderma vim [Optionen] [Dateiliste] .PP Bei einer fehlenden Dateiliste startet der Editor mit einem leeren -Puffer. Andernfalls werden nach den folgenden vier Möglichkeiten eine oder -mehrere Dateien bearbeitet: +Puffer. Andernfalls werden eine oder mehrere Dateien mit einer der folgenden +vier Optionen bearbeitet: .TP 12 Datei ... Eine Liste von Dateinamen. Die erste Datei wird in den Puffer geladen und @@ -60,14 +58,14 @@ zur aktuellen. Der Cursor wird auf der ersten Zeile des Puffers platziert. Zu den anderen Dateien kann mit dem Befehl »:next« gelangt werden. Falls einer der Dateinamen mit einem Bindestrich beginnt, stellen Sie der Dateiliste »\-\-« voran. -.TP -\- +.TP +\fB\-\fP Die zu bearbeitende Datei wird von der Standardeingabe gelesen. Befehle werden von der Standardfehlerausgabe gelesen, die ein Text\-Terminal sein sollte. -.TP -\-t {Tag} -Die zu editierende Datei und die anfängliche Cursor\-Position hängen von +.TP +\fB\-t\fP {Tag} +Die zu bearbeitende Datei und die anfängliche Cursor\-Position hängen von einem »Tag« ab, einer Art Sprungmarke. {Tag} wird in der Tag\-Datei nachgeschlagen, die zugehörige Datei wird zur aktuellen und der zugehörige Befehl wird ausgeführt. Dies wird meistens für Programme in der Sprache »C« @@ -75,394 +73,448 @@ benutzt, wobei {Tag} ein Funktionsname sein k Befehls ist, dass die Datei, die die Funktion enthält, als aktuelle im Editor geöffnet und angezeigt wird und der Cursor auf dem Beginn der Funktion positioniert wird. Siehe »:help tag\-commands«. -.TP -\-q [Fehlerdatei] +.TP +\fB\-q\fP [Fehlerdatei] Startet im QuickFix\-Modus. Die Datei [Fehlerdatei] wird gelesen und der erste Fehler wird angezeigt. Falls [Fehlerdatei] ausgelassen wird, wird der -Dateiname aus der Option 'errorfile' verwendet (bei AmigaOS ist dies -vorgabemäßig »AztecC.Err«, sowie "errors.err« bei anderen). Weitere Fehler -können mit dem »:cn«\-Befehl angesprungen werden. Siehe ":help quickfix«. +Dateiname aus der Option »Fehlerdatei« ermittelt (auf dem Amiga ist dies +standardmäßig »AztecC.Err«, sowie »errors.err« bei anderen). Weitere Fehler +können mit dem »:cn«\-Befehl angesprungen werden. Siehe »:help quickfix«. .PP -\fBVim\fP reagiert unterschiedlich auf den Namen, der verwendet wird, um Vim zu -starten (die ausführbare Datei kann dieselbe sein). +\fBVim\fP reagiert in Abhängigkeit vom benutzten Programmnamen unterschiedlich +(die ausführbare Datei kann dieselbe sein). .TP 10 -vim -der »normale« Weg, alles ist standardmäßig -.TP -ex -Startet im Ex\-Modus. Mit dem Befehl »:vi« gelangt man in den normalen -Modus. Funktioniert auch mit dem Argument »\-e«. -.TP -view -Startet im Nur\-Lesen\-Modus. Die Datei wird vor dem Überschreiben -geschützt. Dasselbe wird mit dem Parameter »\-R« erreicht. -.TP -gvim gview -Die grafische Version: Öffnet ein neues Fenster. Dasselbe wird mit dem -Parameter »\-g« erreicht. -.TP -evim eview -Die grafische Version im einfachen Modus: Öffnet ein neues Fenster. Dasselbe -wird mit dem Parameter »\-y« erreicht. -.TP -rvim rview rgvim rgview -Wie die obigen, aber mit Beschränkungen: Es ist nicht möglich, Shell\-Befehle -aufzurufen oder mit Unterbrechung in eine Shell zurückzuspringen. Dasselbe -wird mit dem Parameter »\-Z« erreicht. +\fBvim\fP +Der »normale« Weg, alles ist standardmäßig. +.TP +\fBex\fP +Startet im Ex\-Modus. Mit dem Befehl »:vi« gelangen Sie in den normalen +Modus. Funktioniert auch mit dem Argument \fB\-e\fP. +.TP +\fBview\fP +Startet im schreibgeschützten Modus. Die Datei wird vor dem Überschreiben +geschützt. Dasselbe wird mit dem Argument \fB\-R\fP erreicht. +.TP +\fBgvim gview\fP +Startet die grafische Version. Öffnet ein neues Fenster. Dasselbe wird mit +dem Argument \fB\-g\fP erreicht. +.TP +\fBevim eview\fP +Startet die grafische Version im einfachen Modus. Öffnet ein neues +Fenster. Dasselbe wird mit dem Argument \fB\-y\fP erreicht. +.TP +\fBrvim rview rgvim rgview\fP +Wie die obigen, aber mit Beschränkungen. Es ist nicht möglich, Shell\-Befehle +aufzurufen oder \fBVim\fP zu suspendieren. Dasselbe wird mit dem Argument \fB\-Z\fP +erreicht. .SH OPTIONEN Die Optionen können in beliebiger Reihenfolge vor oder nach den Dateinamen -angegeben werden. Optionen ohne Parameter können hinter einem einzigen +angegeben werden. Optionen ohne Argument können hinter einem einzigen Bindestrich gruppiert werden. .TP 12 -+[Nummer] +\fB+\fP[Nummer] In der ersten Datei wird der Cursor auf die Zeile [Nummer] gesetzt. Falls [Nummer] nicht angegeben wird, wird der Cursor in die letzte Zeile der Datei gesetzt. -.TP -+/{Suchmuster} +.TP +\fB+\fP/{Suchmuster} In der ersten Datei wird der Cursor auf das erste Auftreten von {Suchmuster} -gesetzt. Siehe »:help search\-pattern«. -.TP -+{Befehl} -.TP -\-c {Befehl} +gesetzt. Siehe »:help search\-pattern« für die verfügbaren Suchmuster. +.TP +\fB+\fP{Befehl} +.TP +\fB\-c\fP {Befehl} {Befehl} wird nach dem Lesen der ersten Datei ausgeführt. Als {Befehl} wird -ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss alles -in Anführungszeichen gesetzt werden (hängt von der verwendeten Shell -ab). Beispiel: vim "+set si" main.c +ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss er in +Anführungszeichen gesetzt werden (hängt von der verwendeten Shell +ab). Beispiel: »vim "+set si" main.c« .br -Anmerkung: Sie können bis zu 10 »+«\- oder "\-c«\-Befehle verwenden. -.TP -\-S {Datei} -{Datei} wird nach dem Lesen der ersten Datei ausgeführt. Dies entspricht »\-c -"source {Datei}"«. {Datei} darf nicht mit einem Bindestrich (\-) -anfangen. Wenn kein Dateiname angegeben wird, wird »Session.vim« verwendet -(Funktioniert nur, wenn »\-S« als letzter Parameter steht). -.TP -\-\-cmd {Befehl} -Wie »\-c«, aber dieser Befehl wird vor allen VimRC\-Dateien ausgeführt. Sie -können unabhängig von den »\-c«\-Befehlen bis zu 10 dieser Befehle verwenden. -.TP -\-A +Anmerkung: Sie können bis zu zehn \fB+c\fP\- oder \fB\-c\fP\-Befehle verwenden. +.TP +\fB\-A\fP Falls \fBVim\fP mit Unterstützung für das Schreiben von rechts nach links und arabischer Tastaturbelegung compiliert wurde (ARABIC), startet dieser Parameter den Modus fürs Arabische (:set arabic). Anderenfalls beendet sich \fBVim\fP mit einer Fehlermeldung. -.TP -b +.TP +\fB\-b\fP Binärer Modus: Es werden einige Variablen gesetzt, sodass es möglich ist, eine binäre oder ausführbare Datei zu bearbeiten. -.TP -\-C -Kompatibel: Setzt die Option 'compatible'. Das macht \fBVim\fP im Verhalten -sehr ähnlich zu Vi, selbst wenn eine VimRC\-Datei existiert. -.TP -\-d -Startet im diff\-Modus. Es sollten zwei, drei oder vier Dateinamen als -Parameter übergeben werden. \fBVim\fP öffnet sie alle und zeigt die -Unterschiede an. Arbeitet wie vimdiff(1). -.TP -\-d {Gerät} -Öffnet das {Gerät}, um es als Terminal zu nutzen. Nur für AmigaOS. Beispiel: -"\-d con:20/30/600/150". -.TP -D -Debug\-Modus: \fBVim\fP geht in den Debug\-Modus, wenn der erste Befehl in einem -Skript ausgeführt wird. -.TP -\-e -Startet \fBVim\fP im Ex\-Modus, als würde als ausführbare Datei »ex« aufgerufen. -.TP -\-E -Startet \fBVim\fP im erweiterten Ex\-Modus, als würde die ausführbare Datei als -»exim« aufgerufen. -.TP -\-f -Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und -löst sich nicht von der Shell, in der er aufgerufen wurde. Bei AmigaOS wird -kein neues Fenster geöffnet. Dieser Parameter wird benutzt, damit das -aufrufende Programm auf das Beenden des Bearbeitungssitzung wartet (z.B.: -mail). Bei AmigaOS funktionieren die Befehle »:sh« und ":!« nicht. -.TP -\-\-nofork +.TP +\fB\-C\fP +Kompatibler Modus: Setzt die Option »compatible«. Das macht \fBVim\fP im +Verhalten sehr ähnlich zu Vi, selbst wenn eine .vimrc\-Datei existiert. +.TP +\fB\-d\fP +Diff\-Modus: Es sollten von zwei bis zu acht Dateinamen als Argumente +übergeben werden. \fBVim\fP öffnet sie alle und zeigt deren die Unterschiede +an. Arbeitet wie \fBvimdiff\fP(1). +.TP +\fB\-d\fP {Gerät}, \fB\-dev\fP {Gerät} +Öffnet das {Gerät}, um es als Terminal zu nutzen. Nur auf dem +Amiga. Beispiel: »\-d con:20/30/600/150«. +.TP +\fB\-D\fP +Debug\-Modus: \fBVim\fP geht in den Modus zur Fehlersuche, wenn der erste Befehl +aus einem Skript ausgeführt wird. +.TP +\fB\-e\fP +Ex\-Modus: Startet \fBVim\fP als würde die ausführbare Datei \fBex\fP lauten. +.TP +\fB\-E\fP +Verbesserter Ex\-Modus: Startet \fBVim\fP als würde die ausführbare Datei +\fBexim\fP lauten. +.TP +\fB\-f\fP Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und -löst sich nicht von der Shell, in der er aufgerufen wurde. -.TP -\-F +löst sich nicht von der Shell, in der er aufgerufen wurde. Auf dem Amiga +wird kein neues Fenster geöffnet. Dieser Parameter wird benutzt, damit das +aufrufende Programm auf das Beenden der Bearbeitungssitzung wartet +(z.B. mail). Auf dem Amiga funktionieren die Befehle »:sh« und »:!« nicht. +.TP +\fB\-F\fP Wenn \fBVim\fP mit FKMAP\-Unterstützung für das Schreiben von rechts nach links -und Farsi\-Tastatur\-Belegung kompiliert wurde, startet Vim im Farsi\-Modus, -d.h. die Optionen 'fkmap' und 'rightleft' werden gesetzt. Andernfalls bricht +und Farsi\-Tastatur\-Belegung kompiliert wurde, startet \fBVim\fP im Farsi\-Modus, +d.h. die Optionen »fkmap« und »rightleft« werden gesetzt. Andernfalls bricht \fBVim\fP mit einer Fehlermeldung ab. -.TP -\-g +.br +Hinweis: Die Unterstützung von Farsi wurde im Patch 8.1.0932 entfernt. +.TP +\fB\-g\fP Falls \fBVim\fP mit GUI\-Unterstützung kompiliert wurde, wird die GUI -aktiviert. Falls keine GUI\-Unterstützung einkompiliert wurde, wird mit einer -Fehlermeldung abgebrochen. -.TP -\-h -Gibt eine kleine Hilfe für die Befehlszeilenparameter aus. Danach beendet -sich \fBVim.\fP -.TP -\-H -Hebräisch\-Modus, falls \fBVim\fP mit RIGHTLEFT\-Unterstützung für das Schreiben -von rechts nach links und hebräischer Tastaturbelegung kompiliert wurde, -werden die Optionen 'hkmap' und 'rightleft' gesetzt. Andernfalls beendet -sich \fBVim\fP mit einer Fehlermeldung. -.TP -\-i {VimInfo} -Wenn eine VimInfo\-Datei verwendet wird: Verwendet statt »~/.viminfo« die -angegebene Datei. Es ist auch möglich die Verwendung einer VimInfo\-Datei -durch Angabe des Dateinamen »NONE« zu verhindern, -.TP -\-L -dasselbe wie »\-r« -.TP -\-l -Lisp\-Modus. Aktiviert die Optionen 'lisp' und 'showmatch'. -.TP -\-m -Deaktiviert das Verändern von Dateien, indem die Option 'write' gelöscht -wird. Der Puffer kann verändert werden, nur das Schreiben einer Datei ist -nicht möglich. -.TP -\-M -Keine Veränderungen erlaubt: Die Optionen 'modifiable' und 'write' werden -gelöscht, so dass Änderungen nicht erlaubt sind und Dateien nicht -geschrieben werden können. Man beachte, dass diese Optionen ('modifiable', -\&'write') dennnoch nachträglich zum Erlauben von Änderungen gesetzt werden -können. -.TP -\-N -Nicht\-kompatibler Modus: Löscht die Option 'compatible'. Dies veranlasst -\fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu verhalten, -selbst wenn es keine VimRC\-Datei gibt. -.TP -\-n -Verwendet keine Auslagerungsdatei: Eine Wiederherstellung nach einem Absturz -ist nicht möglich. Auf einem langsamen Medium (Diskette) kann diese +aktiviert. Falls keine GUI\-Unterstützung einkompiliert wurde, wird \fBVim\fP +mit einer Fehlermeldung abgebrochen. +.TP +\fB\-H\fP +Falls \fBVim\fP mit RIGHTLEFT\-Unterstützung für das Schreiben von rechts nach +links und hebräischer Tastaturbelegung kompiliert wurde, startet \fBVim\fP im +hebräischen Modus und die Optionen »hkmap« und »rightleft« werden +gesetzt. Andernfalls beendet sich \fBVim\fP mit einer Fehlermeldung. +.TP +\fB\-i\fP {VimInfo} +Verwendet zum Lesen und Schreiben die angegebene Datei anstatt der Vorgabe +»~/.viminfo«. Es ist auch möglich, die Verwendung einer .viminfo\-Datei durch +Angabe des Dateinamens »NONE« zu verhindern. +.TP +\fB\-l\fP +Lisp\-Modus: Aktiviert die Optionen »lisp« und »showmatch«. +.TP +\fB\-L\fP +Dasselbe wie \fB\-r\fP. +.TP +\fB\-m\fP +Deaktiviert das Verändern von Dateien, indem die Option »write« +zurückgesetzt wird. Der Puffer kann verändert werden, nur das Schreiben +einer Datei ist nicht möglich. +.TP +\fB\-M\fP +Keine Veränderungen erlaubt. Die Optionen »modifiable« und »write« werden +zurückgesetzt, so dass Änderungen nicht erlaubt sind und Dateien nicht +geschrieben werden können. Beachten Sie, dass diese Optionen dennoch +nachträglich zum Erlauben von Änderungen gesetzt werden können. +.TP +\fB\-n\fP +Verwendet keine Auslagerungsdatei. Eine Wiederherstellung nach einem Absturz +ist nicht möglich. Auf einem langsamen Medium (z.B. Diskette) kann diese Einstellung nützlich sein. Kann auch mit »set uc=0« erreicht werden; kann mit »set uc=200« aufgehoben werden. -.TP -\-nb -\fBVim\fP fungiert als Server für NetBeans. Details siehe Dokumentation. -.TP -\-o[N] -Öffnet [N] Fenster übereinander. Wenn keine Zahl angegeben wird, öffne ein +.TP +\fB\-N\fP +Nicht\-kompatibler Modus: Setzt die Option »compatible« zurück. Dies +veranlasst \fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu +verhalten, selbst wenn es keine .vimrc\-Datei gibt. +.TP +\fB\-nb\fP +\fBVim\fP fungiert als Editor\-Server für NetBeans. Details siehe Dokumentation. +.TP +\fB\-o\fP[N] +Öffnet N Fenster übereinander. Wenn keine Zahl angegeben wird, öffnet ein Fenster pro Datei. -.TP -\-O[N] -Öffnet [N] Fenster nebeneinander. Wenn keine Zahl angegeben wird, öffne ein +.TP +\fB\-O\fP[N] +Öffnet N Fenster nebeneinander. Wenn keine Zahl angegeben wird, öffnet ein Fenster pro Datei. -.TP -\-p[N] -Öffnet [N] Reiterseiten. Wenn keine Zahl angegeben wird, öffne eine +.TP +\fB\-p\fP[N] +Öffnet N Reiterseiten. Wenn keine Zahl angegeben wird, öffnet eine Reiterseite pro Datei. -.TP -\-R -Nur\-Lesen\-Modus: Die Option 'readonly' wird gesetzt. Der Puffer kann noch -bearbeitet werden, aber es wird verhindert, eine Datei aus Versehen zu -überschreiben. Wenn Sie wirklich eine Datei überschreiben wollen, fügen Sie -dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in »:w!«). Die Option "\-R« -bedingt die Option »\-n« (siehe oben). Die Option 'readonly' kann durch ":set -noro« gelöscht werden. Siehe »:help 'readonly'«. -.TP -\-r -Listet die Auslagerungsdateien und gibt Informationen zu ihrer -Verwendbarkeit zur Wiederherstellung. -.TP -\-r {Datei} +.TP +\fB\-P\fP {Eltern\-Titel} +Nur Win32\-GUI: Gibt den Titel der Elternapplikation an. Wenn möglich läuft +\fBVim\fP in einem MDI\-Fenster innerhalb der Applikation. {Eltern\-Titel} muss +im Fenstertitel der Elternapplikation vorkommen. Stellen Sie sicher, dass er +spezifisch genug ist. Beachten Sie, dass die Implementierung immer noch +primitiv ist. Sie wird nicht mit allen Applikationen funktionieren und das +Menü funktioniert nicht. +.TP +\fB\-r\fP +Listet die Auslagerungsdateien auf und gibt Informationen zu ihrer +Verwendbarkeit zur Wiederherstellung aus. +.TP +\fB\-r\fP {Datei} Wiederherstellungsmodus: Die Auslagerungsdatei wird zur Wiederherstellung -verwendet und hat denselben Dateinamen wie die Text\-Datei + ».swp«. Siehe -":help recovery«. -.TP -\-s -Der stille Modus: Nur wenn die ausführbare Datei als »ex« aufgerufen wird -oder vor »\-s« die Option "\-e« gegeben wird. -.TP -\-s {Eingabeskript} -Die Datei {Eingabeskript} wird gelesen und ausgeführt, als würden Sie die -Zeichen in ihr tippen. Dasselbe kann mit dem Befehl »:source! +einer abgestürzten Bearbeitungssitzung verwendet und hat denselben +Dateinamen wie die Textdatei mit angehängtem ».swp«. Siehe »:help recovery«. +.TP +\fB\-R\fP +Schreibgeschützter Modus: Die Option »readonly« wird gesetzt. Der Puffer +kann noch bearbeitet werden, aber es wird verhindert, eine Datei aus +Versehen zu überschreiben. Wenn Sie wirklich eine Datei überschreiben +wollen, fügen Sie dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in »:w!«). Die +Option \fB\-R\fP bedingt die Option \fB\-n\fP (siehe oben). Die Option »readonly« +kann durch »:set noro« zurückgesetzt werden. Siehe »:help readonly«. +.TP +\fB\-s\fP +Stiller Modus: Nur wenn die ausführbare Datei als \fBex\fP aufgerufen wird oder +vor \fB\-s\fP die Option \fB\-e\fP angegeben wird. +.TP +\fB\-s\fP {Eingabeskript} +Die Skriptdatei {Eingabeskript} wird gelesen und ausgeführt, als würden Sie +die Zeichen eingeben. Dasselbe kann mit dem Befehl »:source! {Eingabeskript}« erreicht werden. Wird das Ende der Datei vor dem Beenden des Editors erreicht, werden weitere Zeichen von der Tastatur gelesen. -.TP -\-T {Terminal} +.TP +\fB\-S\fP {Datei} +{Datei} wird nach dem Lesen der ersten Datei ausgeführt. Dies entspricht »\-c +"source {Datei}"«. {Datei} darf nicht mit einem Bindestrich (\-) +anfangen. Wenn kein Dateiname angegeben wird, wird »Session.vim« verwendet +(Funktioniert nur, wenn \fB\-S\fP als letztes Argument steht). +.TP +\fB\-T\fP {Terminal} Setzt den Namen des benutzten Terminals. Nur erforderlich, wenn die -Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes Terminal sein: -(builtin) oder in einer termcap\- oder terminfo\-Datei definiert. -.TP -\-u {VimRC} -Verwendet zur Initialisierung die Befehle in der Datei {VimRC}. Alle anderen +Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes (eingebautes) oder +in einer Termcap\- oder Terminfo\-Datei definiertes Terminal sein. +.TP +\fB\-u\fP {vimrc} +Verwendet zur Initialisierung die Befehle in der Datei {vimrc}. Alle anderen Initialisierungen werden übersprungen. Benutzen Sie dies, um eine besondere Art von Dateien zu bearbeiten. Dies kann auch benutzt werden, um alle Initialisierungen zu überspringen, indem der Name »NONE« angegeben wird. Für -weitere Einzelheiten siehe »:help initialisation« innerhalb von Vim. -.TP -\-U {GvimRC} -Benutzt die Befehle in der Datei {GvimRC} für die Initialisierung der -grafischen Oberfläche. Alle anderen Initialisierungen werden +weitere Einzelheiten siehe »:help initialization« innerhalb von \fBVim\fP. +.TP +\fB\-U\fP {gvimrc} +Benutzt die Befehle in der Datei {gvimrc} für die Initialisierung der +grafischen Oberfläche. Alle anderen GUI\-Initialisierungen werden übersprungen. Dies kann ebenfalls benutzt werden, um alle GUI\-Initialisierungen zu überspringen, indem der Name »NONE« angegeben -wird. Siehe »:help gui\-init« innerhalb von Vim für weitere Einzelheiten. -.TP -\-V[N] -Ausführlich (verbose): Gibt Meldungen darüber, welche Befehlsdateien -eingelesen werden, und über das Lesen und Schreiben einer VimInfo\-Datei. Die -optionale Zahl N ist der Wert für 'verbose'. Vorgabe ist 10. -.TP -\-v -Startet \fBVim\fP im Vi\-Modus, so als würde die ausführbare Datei mit »vi« -aufgerufen. Dies wirkt sich nur aus, wenn die ausführbare Datei als »ex« +wird. Siehe »:help gui\-init« innerhalb von \fBVim\fP für weitere Einzelheiten. +.TP +\fB\-v\fP +Vi\-Modus: Startet \fBVim\fP als würde die ausführbare Datei mit \fBvi\fP +aufgerufen. Dies wirkt sich nur aus, wenn die ausführbare Datei als \fBex\fP aufgerufen wird. -.TP -\-w {Ausgabeskript} -Alle Zeichen, die eingetippt werden, werden in der Datei {Ausgabeskript} +.TP +\fB\-V\fP[N] +Ausführlich (verbose): Gibt Meldungen darüber, welche Befehlsdateien +ausgeführt werden, und über das Lesen und Schreiben einer viminfo\-Datei. Die +optionale Zahl N ist der Wert für »verbose«. Vorgabe ist 10. +.TP +\fB\-V\fP[N]{Dateiname} +Wie \fB\-V\fP und setzt »verbosefile« auf {Dateiname}. Das Ergebnis besteht +darin, dass Meldungen nicht angezeigt werden, sondern in die Datei +{Dateiname} geschrieben werden. {Dateiname} darf nicht mit einer Ziffer +anfangen. +.TP +\fB\-w\fP{Nummer} +Setzt die Option »window« auf {Nummer}. +.TP +\fB\-w\fP {Ausgabeskript} +Alle Zeichen, die eingegeben werden, werden in der Datei {Ausgabeskript} aufgezeichnet, solange bis Sie \fBVim\fP beenden. Dies ist nützlich, falls Sie -eine Skript\-Datei zum Benutzen mit »vim \-s« oder ":source!« erzeugen +eine Skript\-Datei zum Benutzen mit »vim \-s« oder »:source!« erzeugen wollen. Falls die Datei {Ausgabeskript} vorhanden ist, werden die Zeichen angehängt. -.TP -\-W {Ausgabeskript} -Wie \-w, aber eine bereits vorhandene Datei wird überschrieben. -.TP -\-x -Benutzt beim Schreiben von Dateien eine Verschlüsselung. Fragt nach dem +.TP +\fB\-W\fP {Ausgabeskript} +Wie \fB\-w\fP, aber eine bereits vorhandene Datei wird überschrieben. +.TP +\fB\-x\fP +Benutzt beim Schreiben von Dateien eine Verschlüsselung, falls \fBVim\fP mit +Unterstützung von Verschlüsselung kompiliert worden ist. Fragt nach dem Schlüssel. -.TP -\-X -Führt keine Verbindung zum X\-Server durch. Dadurch verkürzt sich die -Startzeit, aber der Fenstertitel und die Zwischenablage werden nicht +.TP +\fB\-X\fP +Verbindet nicht mit dem X\-Server. Dadurch verkürzt sich die Startzeit in +einem Terminal, aber der Fenstertitel und die Zwischenablage werden nicht verwendet. -.TP -\-y -Startet \fBVim\fP im einfachen Modus, als würde die ausführbare Datei mit -»evim« oder »eview« aufgerufen. \fBVim\fP verhält sich dann wie ein Editor zum -Klicken und Tippen. -.TP -\-Z +.TP +\fB\-y\fP +Einfacher Modus: Startet \fBVim\fP als würde die ausführbare Datei \fBevim\fP oder +\fBeview\fP heißen. \fBVim\fP verhält sich dann wie ein Editor zum Klicken und +Tippen. +.TP +\fB\-Z\fP Eingeschränkter Modus: Funktioniert, als würde der Name der ausführbaren Datei mit »r« beginnen. -.TP -\-\- +.TP +\fB\-\-\fP Markiert das Ende der Optionen. Argumente, die folgen, werden als Dateinamen behandelt. Dies kann benutzt werden, um einen Dateinamen mit »\-« am Anfang zu verwenden. -.TP -\-\-echo\-wid +.TP +\fB\-\-clean\fP +Verwendet keine persönlichen Einstellungen (vimrc, plugins, +usw,). Hilfreich, um festzustellen, ob ein Problem mit einer sauberen +Vim\-Konfiguration reproduzierbar ist. +.TP +\fB\-\-cmd\fP {Befehl} +Wie \fB\-c\fP, aber dieser Befehl wird vor allen vimrc\-Dateien ausgeführt. Sie +können unabhängig von den \fB\-c\fP\-Befehlen bis zu zehn dieser Befehle +verwenden. +.TP +\fB\-\-echo\-wid\fP Nur GTK\-GUI: Schreibe die Fenster\-ID auf die Standardausgabe. -.TP -\-\-help -Gibt eine Hilfe\-Nachricht aus und beendet, wie »\-h«. -.TP -\-\-literal -Nimmt die Dateinamen so wie sie sind und vervollständigt sie nicht nach -Metazeichen (*,?). Dies wirkt sich nicht unter Unix aus, wo die Shell die -Metazeichen expandiert. -.TP -\-\-noplugin -Lade keine Plugins. Impliziert durch »\-u NONE«. -.TP -\-\-remote +.TP +\fB\-\-gui\-dialog\-file\fP {Name} +Schreibt bei der Verwendung der GUI den Titel und die Meldung des Dialogs in +die Datei {Name}, anstatt sie als Dialog anzuzeigen. Die Datei wird entweder +erzeugt oder erweitert. Dies ist nur für Testzwecke hilfreich, um zu +verhindern, dass Tests bei einem nicht sichtbaren Dialog hängen +bleiben. Ohne Verwendung der GUI wird dieses Argument ignoriert. +.TP +\fB\-\-help, \-h, \-?\fP +Gibt eine kleine Hilfe für die Befehlszeilenparameter und Optionen +aus. Danach beendet sich \fBVim\fP. +.TP +\fB\-\-literal\fP +Nimmt die Dateinamen so wie sie sind und vervollständigt sie nicht unter +Berücksichtigung von Metazeichen. Dies wirkt sich nicht unter Unix aus, wo +die Shell die Metazeichen expandiert. +.TP +\fB\-\-log\fP {Dateiname} +Wenn \fBVim\fP mit dem Eval\- und dem Channel\-Feature kompiliert worden ist, +wird das Protokollieren gestartet. Einträge werden nach {Dateiname} +geschrieben. Dies funktioniert wie das Aufrufen von +\fIch_logfile({Dateiname}, 'ao')\fP sehr früh während des Programmstarts. +.TP +\fB\-\-nofork\fP +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +löst sich nicht von der Shell, in der er aufgerufen wurde. +.TP +\fB\-\-noplugin\fP +Lädt keine Erweiterungen. Impliziert durch »\-u NONE«. +.TP +\fB\-\-not\-a\-term\fP +Teilt \fBVim\fP mit, dass dem Benutzer klar ist, dass Eingabe und/oder Ausgabe +nicht mit einem Terminal verbunden sind. Das vermeidet die entsprechende +Warnung und eine Verzögerung von zwei Sekunden. +.TP +\fB\-\-remote\fP Verbindet mit einem Vim\-Server und lässt ihn die in den restlichen Argumenten angegeben Dateien editieren. Wenn kein Server gefunden wird, -führt dies zu einer Warnmeldung und die Dateien werden im gegenwärtigen Vim -zum Bearbeiten geöffnet. -.TP -\-\-remote\-expr {Ausdruck} -Verbindet mit einem Vim\-Server, führt {Ausdruck} aus und zeigt das Ergebnis -auf der Standardausgabe an. -.TP -\-\-remote\-send {Zeichen} +führt dies zu einer Warnmeldung und die Dateien werden im gegenwärtigen +\fBVim\fP zum Bearbeiten geöffnet. +.TP +\fB\-\-remote\-expr\fP {Ausdruck} +Verbindet mit einem Vim\-Server, wertet dort {Ausdruck} aus und zeigt das +Ergebnis auf der Standardausgabe an. +.TP +\fB\-\-remote\-send\fP {Zeichen} Verbindet mit einem Vim\-Server und sendet ihm {Zeichen}. -.TP -\-\-remote\-silent -Wie »\-\-remote«, aber ohne Warnung, wenn kein Server gefunden wird. -.TP -\-\-remote\-wait -Wie »\-\-remote«, aber Vim beendet sich nicht, bis die Dateien bearbeitet +.TP +\fB\-\-remote\-silent\fP +Wie \fB\-\-remote\fP, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\fB\-\-remote\-wait\fP +Wie \fB\-\-remote\fP, aber \fBVim\fP beendet sich nicht, bis die Dateien bearbeitet wurden. -.TP -\-\-remote\-wait\-silent -Wie »\-\-remote\-wait«, aber ohne Warnung, wenn kein Server gefunden wird. -.TP -\-\-serverlist +.TP +\fB\-\-remote\-wait\-silent\fP +Wie \fB\-\-remote\-wait\fP, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\fB\-\-serverlist\fP Listet die Namen aller gefundenen Vim\-Server auf. -.TP -\-\-servername {Name} -Benutzt {Name} als Server\-Namen. Wird für den gegenwärtigen Vim benutzt, -außer es wird mit dem Argument »\-\-remote« benutzt, dann ist es der Name des -zu kontaktierenden Servers. -.TP -\-\-socketid {id} -Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um GVim in einem anderen +.TP +\fB\-\-servername\fP {Name} +Benutzt {Name} als Server\-Namen. Wird für den gegenwärtigen \fBVim\fP benutzt, +außer es wird mit einem der \fB\-\-remote\fP\-Argumente benutzt, dann ist es der +Name des zu kontaktierenden Servers. +.TP +\fB\-\-socketid\fP {ID} +Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um \fBgVim\fP in einem anderen Fenster laufen zu lassen. -.TP -\-\-version -Versionsinformation anzeigen und beenden +.TP +\fB\-\-startuptime\fP {Datei} +Schreibt während des Programmstarts Meldungen zu Zeitmessungen in die Datei +{Datei}. +.TP +\fB\-\-ttyfail\fP +Beendet das Programm sofort, wenn Standardeingabe oder Standardausgabe keine +Terminals (tty) sind. +.TP +\fB\-\-version\fP +Versionsinformation anzeigen und beenden. +.TP +\fB\-\-windowid\fP {ID} +Nur Win32\-GUI: Veranlasst, dass \fBgVim\fP versucht, das Fenster {ID} als +Eltern zu verwenden, so dass es in diesem Fenster abläuft. .SH "EINGEBAUTE HILFE" -Tippen Sie in \fBVim\fP »:help«, um zu beginnen. Geben Sie ":help begriff« ein, -um Hilfe über ein bestimmtes Thema zu bekommen. Zum Beispiel »:help ZZ« für -Hilfe über den Befehl »ZZ«. Benutzen Sie und CTRL\-D, um -Begriffe zu vervollständigen (»:help cmdline\-completion«). Tags sind -vorhanden, um von einem Ort zum anderen zu springen (eine Art -Hypertext\-Verknüpfungen, siehe »:help«). Auf diese Weise können alle -Dokumentations\-Dateien aufgerufen werden, zum Beispiel »:help syntax.txt«. +Geben Sie in \fBVim\fP »:help« ein, um eine Einstiegshilfe zu erhalten. Geben +Sie »:help Begriff« ein, um Hilfe über ein bestimmtes Thema zu bekommen. Zum +Beispiel »:help ZZ« für Hilfe über den Befehl »ZZ«. Benutzen Sie + und STRG\-D, um Begriffe zu vervollständigen (»:help +cmdline\-completion«). Tags sind vorhanden, um von einem Ort zum anderen zu +springen (eine Art Hypertext\-Verknüpfungen, siehe »:help«). Auf diese Weise +können alle Dokumentations\-Dateien aufgerufen werden, zum Beispiel »:help +syntax.txt«. .SH DATEIEN .TP 15 -/usr/local/lib/vim/doc/*.txt +/usr/local/share/vim/vim??/doc/*.txt Dokumentations\-Dateien für \fBVim\fP. Verwenden Sie »:help doc\-file\-list«, um die gesamte Liste zu bekommen. -.TP -/usr/local/lib/vim/doc/tags -Die »Tag«\-Datei, die verwendet wird, um Informationen in der Dokumentation -zu finden. -.TP -/usr/local/lib/vim/syntax/syntax.vim -Die systemweite Einrichtung der Syntaxhervorhebung. -.TP -/usr/local/lib/vim/syntax/*.vim -Syntaxdateien für die verschiedenen Sprachen. -.TP -/usr/local/lib/vim/vimrc -Systemweite Einstellungsdatei für \fBVim\fP -.TP -~/.vimrc -Persönliche Einstellungsdatei für \fBVim\fP -.TP -/usr/local/lib/vim/gvimrc -Systemweite Einstellungsdatei für GVim -.TP -~/.gvimrc -Persönliche Einstellungsdatei für GVim -.TP -/usr/local/lib/vim/optwin.vim -Das Script, das von dem Befehl »:options« verwendet wird, eine schöne -Möglichkeit, um Optionen zu betrachten und zu setzen. -.TP -/usr/local/lib/vim/menu.vim -Systemweite Einstellungsdatei für das Menü von GVim -.TP -/usr/local/lib/vim/bugreport.vim -Das Script zum Generieren eines Fehlerberichts. Siehe »:help bugs«. -.TP -/usr/local/lib/vim/filetype.vim -Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres -Dateinamens. Siehe »:help 'filetype'«. -.TP -/usr/local/lib/vim/scripts.vim -Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres -Inhaltes. Siehe »:help 'filetype'«. -.TP -/usr/local/lib/vim/print/*.ps -Diese Dateien werden zum Drucken von PostScript verwendet. +.br +\fIvim??\fP ist die verkürzte Versionsnummer, wie vim91 von \fBVim 9.1\fP +.TP +/usr/local/share/vim/vim??/doc/tags +»Tag«\-Datei zum Auffinden von Informationen in der Dokumentation. +.TP +/usr/local/share/vim/vim??/syntax/syntax.vim +Systemweite Einrichtung der Syntaxhervorhebung. +.TP +/usr/local/share/vim/vim??/syntax/*.vim +Syntaxdateien für verschiedenen Sprachen. +.TP +/usr/local/share/vim/vimrc +Systemweite Einstellungsdatei für \fBVim\fP. +.TP +~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc +Persönlichen Einstellungen für \fBVim\fP. +.TP +/usr/local/share/vim/gvimrc +Systemweite Einstellungsdatei für \fBgVim\fP. +.TP +~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc +Persönlichen Einstellungen für \fBgVim\fP. +.TP +/usr/local/share/vim/vim??/optwin.vim +Script zur Verwendung von dem Befehl »:options«. Eine schöne Möglichkeit, um +Optionen zu betrachten und zu setzen. +.TP +/usr/local/share/vim/vim??/menu.vim +Systemweite Einstellungsdatei für das Menü von \fBgVim\fP. +.TP +/usr/local/share/vim/vim??/bugreport.vim +Script zum Generieren eines Fehlerberichts. Siehe »:help bugs«. +.TP +/usr/local/share/vim/vim??/filetype.vim +Script zur Erkennung des Typs einer Datei anhand ihres Dateinamens. Siehe +»:help filetype«. +.TP +/usr/local/share/vim/vim??/scripts.vim +Script zur Erkennung des Typs einer Datei anhand ihres Inhalts. Siehe »:help +filetype«. +.TP +/usr/local/share/vim/vim??/print/*.ps +Dateien zum Drucken von PostScript. .PP Für die neuesten Informationen lesen Sie die Vim\-Homepage: .br .SH "SIEHE AUCH" -vimtutor(1) +\fBvimtutor\fP(1) .SH AUTOR \fBVim\fP wurde größtenteils von Bram Moolenaar erstellt, mit viel Hilfe von -anderen Leuten. Siehe »:help credits« in \fBVim.\fP +anderen Leuten. Siehe »:help credits« in \fBVim\fP. .br \fBVim\fP basiert auf Stevie, der von Tim Thompson, Tony Andrews und G.R. (Fred) Walter geschrieben wurde. Es ist jedoch kaum etwas vom @@ -474,5 +526,5 @@ Beachten Sie, dass gewisse Dinge, die manche Leute als Fehler betrachten mögen, in Wirklichkeit durch zu getreue Nachbildung des Vi\-Verhaltens verursacht werden. Und falls Sie denken, dass andere Dinge Fehler sind, »weil Vi es anders tut«, sollten Sie einen genaueren Blick auf die Datei -vi_diff.txt werfen (oder in Vim »:help vi_diff.txt« tippen). Sehen Sie sich -auch die Optionen 'compatible' und 'cpoptions' an. +vi_diff.txt werfen (oder in Vim »:help vi_diff.txt« eingeben). Sehen Sie +sich auch die Optionen »compatible« und »cpoptions« an. diff --git a/runtime/doc/vim-de.UTF-8.1 b/runtime/doc/vim-de.UTF-8.1 index f79e622a74..d0ec9d0750 100644 --- a/runtime/doc/vim-de.UTF-8.1 +++ b/runtime/doc/vim-de.UTF-8.1 @@ -3,14 +3,12 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.\" Translated by bw1 (2008) and Florian Rehnisch (2012) -.\" Kudos to the folks on vim-dev and debian-l10n-german -.TH VIM 1 "2006 Apr 11" +.TH VIM 1 "28. November 2024" .SH BEZEICHNUNG vim \- Vi IMproved, ein Text\-Editor für Programmierer .SH ÃœBERSICHT .br -\fBvim\fP [Optionen] [Datei …] +\fBvim\fP [Optionen] [Datei ...] .br \fBvim\fP [Optionen] \- .br @@ -31,17 +29,17 @@ vim \- Vi IMproved, ein Text\-Editor für Programmierer verwendet werden, um alle Arten von Klartext zu bearbeiten. Er ist besonders nützlich, um Programme zu bearbeiten. .PP -Vim hat einige Erweiterungen gegenüber Vi, z.B.: Rückgängigmachen in -mehreren Schritten, mehrere Fenster und Puffer, Syntax\-Hervorhebung, +\fBVim\fP hat eine Menge an Erweiterungen gegenüber Vi, z.B.: Mehrstufiges +Rückgängigmachen, mehrere Fenster und Puffer, Syntax\-Hervorhebung, Bearbeiten der Befehlszeile, Dateinamenergänzung, eingebaute Hilfe, visuelle -Auswahl, usw. … Siehe »:help vi_diff.txt« für eine Ãœbersicht der +Auswahl, usw. ... Siehe »:help vi_diff.txt« für eine Ãœbersicht der Unterschiede zwischen \fBVim\fP und Vi. .PP Im laufenden \fBVim\fP kann mit dem Befehl »:help« viel Hilfe durch das eingebaute Hilfesystem erlangt werden. Siehe den Abschnitt EINGEBAUTE HILFE weiter unten. .PP -Meistens wird \fBVim\fP zum Editieren einer einzigen Datei mit dem folgende +Meistens wird \fBVim\fP zum Bearbeiten einer einzigen Datei mit dem folgenden Befehl gestartet: .PP vim Datei @@ -51,23 +49,23 @@ Allgemeiner betrachtet, wird \fBVim\fP folgendermaßen gestartet: vim [Optionen] [Dateiliste] .PP Bei einer fehlenden Dateiliste startet der Editor mit einem leeren -Puffer. Andernfalls werden nach den folgenden vier Möglichkeiten eine oder -mehrere Dateien bearbeitet: +Puffer. Andernfalls werden eine oder mehrere Dateien mit einer der folgenden +vier Optionen bearbeitet: .TP 12 -Datei … +Datei ... Eine Liste von Dateinamen. Die erste Datei wird in den Puffer geladen und zur aktuellen. Der Cursor wird auf der ersten Zeile des Puffers platziert. Zu den anderen Dateien kann mit dem Befehl »:next« gelangt werden. Falls einer der Dateinamen mit einem Bindestrich beginnt, stellen Sie der Dateiliste »\-\-« voran. -.TP -\- +.TP +\fB\-\fP Die zu bearbeitende Datei wird von der Standardeingabe gelesen. Befehle werden von der Standardfehlerausgabe gelesen, die ein Text\-Terminal sein sollte. -.TP -\-t {Tag} -Die zu editierende Datei und die anfängliche Cursor\-Position hängen von +.TP +\fB\-t\fP {Tag} +Die zu bearbeitende Datei und die anfängliche Cursor\-Position hängen von einem »Tag« ab, einer Art Sprungmarke. {Tag} wird in der Tag\-Datei nachgeschlagen, die zugehörige Datei wird zur aktuellen und der zugehörige Befehl wird ausgeführt. Dies wird meistens für Programme in der Sprache »C« @@ -75,394 +73,448 @@ benutzt, wobei {Tag} ein Funktionsname sein könnte. Die Wirkung dieses Befehls ist, dass die Datei, die die Funktion enthält, als aktuelle im Editor geöffnet und angezeigt wird und der Cursor auf dem Beginn der Funktion positioniert wird. Siehe »:help tag\-commands«. -.TP -\-q [Fehlerdatei] +.TP +\fB\-q\fP [Fehlerdatei] Startet im QuickFix\-Modus. Die Datei [Fehlerdatei] wird gelesen und der erste Fehler wird angezeigt. Falls [Fehlerdatei] ausgelassen wird, wird der -Dateiname aus der Option 'errorfile' verwendet (bei AmigaOS ist dies -vorgabemäßig »AztecC.Err«, sowie „errors.err« bei anderen). Weitere Fehler -können mit dem »:cn«\-Befehl angesprungen werden. Siehe „:help quickfix«. +Dateiname aus der Option »Fehlerdatei« ermittelt (auf dem Amiga ist dies +standardmäßig »AztecC.Err«, sowie »errors.err« bei anderen). Weitere Fehler +können mit dem »:cn«\-Befehl angesprungen werden. Siehe »:help quickfix«. .PP -\fBVim\fP reagiert unterschiedlich auf den Namen, der verwendet wird, um Vim zu -starten (die ausführbare Datei kann dieselbe sein). +\fBVim\fP reagiert in Abhängigkeit vom benutzten Programmnamen unterschiedlich +(die ausführbare Datei kann dieselbe sein). .TP 10 -vim -der »normale« Weg, alles ist standardmäßig -.TP -ex -Startet im Ex\-Modus. Mit dem Befehl »:vi« gelangt man in den normalen -Modus. Funktioniert auch mit dem Argument »\-e«. -.TP -view -Startet im Nur\-Lesen\-Modus. Die Datei wird vor dem Ãœberschreiben -geschützt. Dasselbe wird mit dem Parameter »\-R« erreicht. -.TP -gvim gview -Die grafische Version: Öffnet ein neues Fenster. Dasselbe wird mit dem -Parameter »\-g« erreicht. -.TP -evim eview -Die grafische Version im einfachen Modus: Öffnet ein neues Fenster. Dasselbe -wird mit dem Parameter »\-y« erreicht. -.TP -rvim rview rgvim rgview -Wie die obigen, aber mit Beschränkungen: Es ist nicht möglich, Shell\-Befehle -aufzurufen oder mit Unterbrechung in eine Shell zurückzuspringen. Dasselbe -wird mit dem Parameter »\-Z« erreicht. +\fBvim\fP +Der »normale« Weg, alles ist standardmäßig. +.TP +\fBex\fP +Startet im Ex\-Modus. Mit dem Befehl »:vi« gelangen Sie in den normalen +Modus. Funktioniert auch mit dem Argument \fB\-e\fP. +.TP +\fBview\fP +Startet im schreibgeschützten Modus. Die Datei wird vor dem Ãœberschreiben +geschützt. Dasselbe wird mit dem Argument \fB\-R\fP erreicht. +.TP +\fBgvim gview\fP +Startet die grafische Version. Öffnet ein neues Fenster. Dasselbe wird mit +dem Argument \fB\-g\fP erreicht. +.TP +\fBevim eview\fP +Startet die grafische Version im einfachen Modus. Öffnet ein neues +Fenster. Dasselbe wird mit dem Argument \fB\-y\fP erreicht. +.TP +\fBrvim rview rgvim rgview\fP +Wie die obigen, aber mit Beschränkungen. Es ist nicht möglich, Shell\-Befehle +aufzurufen oder \fBVim\fP zu suspendieren. Dasselbe wird mit dem Argument \fB\-Z\fP +erreicht. .SH OPTIONEN Die Optionen können in beliebiger Reihenfolge vor oder nach den Dateinamen -angegeben werden. Optionen ohne Parameter können hinter einem einzigen +angegeben werden. Optionen ohne Argument können hinter einem einzigen Bindestrich gruppiert werden. .TP 12 -+[Nummer] +\fB+\fP[Nummer] In der ersten Datei wird der Cursor auf die Zeile [Nummer] gesetzt. Falls [Nummer] nicht angegeben wird, wird der Cursor in die letzte Zeile der Datei gesetzt. -.TP -+/{Suchmuster} +.TP +\fB+\fP/{Suchmuster} In der ersten Datei wird der Cursor auf das erste Auftreten von {Suchmuster} -gesetzt. Siehe »:help search\-pattern«. -.TP -+{Befehl} -.TP -\-c {Befehl} +gesetzt. Siehe »:help search\-pattern« für die verfügbaren Suchmuster. +.TP +\fB+\fP{Befehl} +.TP +\fB\-c\fP {Befehl} {Befehl} wird nach dem Lesen der ersten Datei ausgeführt. Als {Befehl} wird -ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss alles -in Anführungszeichen gesetzt werden (hängt von der verwendeten Shell -ab). Beispiel: vim "+set si" main.c +ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss er in +Anführungszeichen gesetzt werden (hängt von der verwendeten Shell +ab). Beispiel: »vim "+set si" main.c« .br -Anmerkung: Sie können bis zu 10 »+«\- oder „\-c«\-Befehle verwenden. -.TP -\-S {Datei} -{Datei} wird nach dem Lesen der ersten Datei ausgeführt. Dies entspricht »\-c -"source {Datei}"«. {Datei} darf nicht mit einem Bindestrich (\-) -anfangen. Wenn kein Dateiname angegeben wird, wird »Session.vim« verwendet -(Funktioniert nur, wenn »\-S« als letzter Parameter steht). -.TP -\-\-cmd {Befehl} -Wie »\-c«, aber dieser Befehl wird vor allen VimRC\-Dateien ausgeführt. Sie -können unabhängig von den »\-c«\-Befehlen bis zu 10 dieser Befehle verwenden. -.TP -\-A +Anmerkung: Sie können bis zu zehn \fB+c\fP\- oder \fB\-c\fP\-Befehle verwenden. +.TP +\fB\-A\fP Falls \fBVim\fP mit Unterstützung für das Schreiben von rechts nach links und arabischer Tastaturbelegung compiliert wurde (ARABIC), startet dieser Parameter den Modus fürs Arabische (:set arabic). Anderenfalls beendet sich \fBVim\fP mit einer Fehlermeldung. -.TP -b +.TP +\fB\-b\fP Binärer Modus: Es werden einige Variablen gesetzt, sodass es möglich ist, eine binäre oder ausführbare Datei zu bearbeiten. -.TP -\-C -Kompatibel: Setzt die Option 'compatible'. Das macht \fBVim\fP im Verhalten -sehr ähnlich zu Vi, selbst wenn eine VimRC\-Datei existiert. -.TP -\-d -Startet im diff\-Modus. Es sollten zwei, drei oder vier Dateinamen als -Parameter übergeben werden. \fBVim\fP öffnet sie alle und zeigt die -Unterschiede an. Arbeitet wie vimdiff(1). -.TP -\-d {Gerät} -Öffnet das {Gerät}, um es als Terminal zu nutzen. Nur für AmigaOS. Beispiel: -"\-d con:20/30/600/150". -.TP -D -Debug\-Modus: \fBVim\fP geht in den Debug\-Modus, wenn der erste Befehl in einem -Skript ausgeführt wird. -.TP -\-e -Startet \fBVim\fP im Ex\-Modus, als würde als ausführbare Datei »ex« aufgerufen. -.TP -\-E -Startet \fBVim\fP im erweiterten Ex\-Modus, als würde die ausführbare Datei als -»exim« aufgerufen. -.TP -\-f -Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und -löst sich nicht von der Shell, in der er aufgerufen wurde. Bei AmigaOS wird -kein neues Fenster geöffnet. Dieser Parameter wird benutzt, damit das -aufrufende Programm auf das Beenden des Bearbeitungssitzung wartet (z.B.: -mail). Bei AmigaOS funktionieren die Befehle »:sh« und „:!« nicht. -.TP -\-\-nofork +.TP +\fB\-C\fP +Kompatibler Modus: Setzt die Option »compatible«. Das macht \fBVim\fP im +Verhalten sehr ähnlich zu Vi, selbst wenn eine .vimrc\-Datei existiert. +.TP +\fB\-d\fP +Diff\-Modus: Es sollten von zwei bis zu acht Dateinamen als Argumente +übergeben werden. \fBVim\fP öffnet sie alle und zeigt deren die Unterschiede +an. Arbeitet wie \fBvimdiff\fP(1). +.TP +\fB\-d\fP {Gerät}, \fB\-dev\fP {Gerät} +Öffnet das {Gerät}, um es als Terminal zu nutzen. Nur auf dem +Amiga. Beispiel: »\-d con:20/30/600/150«. +.TP +\fB\-D\fP +Debug\-Modus: \fBVim\fP geht in den Modus zur Fehlersuche, wenn der erste Befehl +aus einem Skript ausgeführt wird. +.TP +\fB\-e\fP +Ex\-Modus: Startet \fBVim\fP als würde die ausführbare Datei \fBex\fP lauten. +.TP +\fB\-E\fP +Verbesserter Ex\-Modus: Startet \fBVim\fP als würde die ausführbare Datei +\fBexim\fP lauten. +.TP +\fB\-f\fP Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und -löst sich nicht von der Shell, in der er aufgerufen wurde. -.TP -\-F +löst sich nicht von der Shell, in der er aufgerufen wurde. Auf dem Amiga +wird kein neues Fenster geöffnet. Dieser Parameter wird benutzt, damit das +aufrufende Programm auf das Beenden der Bearbeitungssitzung wartet +(z.B. mail). Auf dem Amiga funktionieren die Befehle »:sh« und »:!« nicht. +.TP +\fB\-F\fP Wenn \fBVim\fP mit FKMAP\-Unterstützung für das Schreiben von rechts nach links -und Farsi\-Tastatur\-Belegung kompiliert wurde, startet Vim im Farsi\-Modus, -d.h. die Optionen 'fkmap' und 'rightleft' werden gesetzt. Andernfalls bricht +und Farsi\-Tastatur\-Belegung kompiliert wurde, startet \fBVim\fP im Farsi\-Modus, +d.h. die Optionen »fkmap« und »rightleft« werden gesetzt. Andernfalls bricht \fBVim\fP mit einer Fehlermeldung ab. -.TP -\-g +.br +Hinweis: Die Unterstützung von Farsi wurde im Patch 8.1.0932 entfernt. +.TP +\fB\-g\fP Falls \fBVim\fP mit GUI\-Unterstützung kompiliert wurde, wird die GUI -aktiviert. Falls keine GUI\-Unterstützung einkompiliert wurde, wird mit einer -Fehlermeldung abgebrochen. -.TP -\-h -Gibt eine kleine Hilfe für die Befehlszeilenparameter aus. Danach beendet -sich \fBVim.\fP -.TP -\-H -Hebräisch\-Modus, falls \fBVim\fP mit RIGHTLEFT\-Unterstützung für das Schreiben -von rechts nach links und hebräischer Tastaturbelegung kompiliert wurde, -werden die Optionen 'hkmap' und 'rightleft' gesetzt. Andernfalls beendet -sich \fBVim\fP mit einer Fehlermeldung. -.TP -\-i {VimInfo} -Wenn eine VimInfo\-Datei verwendet wird: Verwendet statt »~/.viminfo« die -angegebene Datei. Es ist auch möglich die Verwendung einer VimInfo\-Datei -durch Angabe des Dateinamen »NONE« zu verhindern, -.TP -\-L -dasselbe wie »\-r« -.TP -\-l -Lisp\-Modus. Aktiviert die Optionen 'lisp' und 'showmatch'. -.TP -\-m -Deaktiviert das Verändern von Dateien, indem die Option 'write' gelöscht -wird. Der Puffer kann verändert werden, nur das Schreiben einer Datei ist -nicht möglich. -.TP -\-M -Keine Veränderungen erlaubt: Die Optionen 'modifiable' und 'write' werden -gelöscht, so dass Änderungen nicht erlaubt sind und Dateien nicht -geschrieben werden können. Man beachte, dass diese Optionen ('modifiable', -\&'write') dennnoch nachträglich zum Erlauben von Änderungen gesetzt werden -können. -.TP -\-N -Nicht\-kompatibler Modus: Löscht die Option 'compatible'. Dies veranlasst -\fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu verhalten, -selbst wenn es keine VimRC\-Datei gibt. -.TP -\-n -Verwendet keine Auslagerungsdatei: Eine Wiederherstellung nach einem Absturz -ist nicht möglich. Auf einem langsamen Medium (Diskette) kann diese +aktiviert. Falls keine GUI\-Unterstützung einkompiliert wurde, wird \fBVim\fP +mit einer Fehlermeldung abgebrochen. +.TP +\fB\-H\fP +Falls \fBVim\fP mit RIGHTLEFT\-Unterstützung für das Schreiben von rechts nach +links und hebräischer Tastaturbelegung kompiliert wurde, startet \fBVim\fP im +hebräischen Modus und die Optionen »hkmap« und »rightleft« werden +gesetzt. Andernfalls beendet sich \fBVim\fP mit einer Fehlermeldung. +.TP +\fB\-i\fP {VimInfo} +Verwendet zum Lesen und Schreiben die angegebene Datei anstatt der Vorgabe +»~/.viminfo«. Es ist auch möglich, die Verwendung einer .viminfo\-Datei durch +Angabe des Dateinamens »NONE« zu verhindern. +.TP +\fB\-l\fP +Lisp\-Modus: Aktiviert die Optionen »lisp« und »showmatch«. +.TP +\fB\-L\fP +Dasselbe wie \fB\-r\fP. +.TP +\fB\-m\fP +Deaktiviert das Verändern von Dateien, indem die Option »write« +zurückgesetzt wird. Der Puffer kann verändert werden, nur das Schreiben +einer Datei ist nicht möglich. +.TP +\fB\-M\fP +Keine Veränderungen erlaubt. Die Optionen »modifiable« und »write« werden +zurückgesetzt, so dass Änderungen nicht erlaubt sind und Dateien nicht +geschrieben werden können. Beachten Sie, dass diese Optionen dennoch +nachträglich zum Erlauben von Änderungen gesetzt werden können. +.TP +\fB\-n\fP +Verwendet keine Auslagerungsdatei. Eine Wiederherstellung nach einem Absturz +ist nicht möglich. Auf einem langsamen Medium (z.B. Diskette) kann diese Einstellung nützlich sein. Kann auch mit »set uc=0« erreicht werden; kann mit »set uc=200« aufgehoben werden. -.TP -\-nb -\fBVim\fP fungiert als Server für NetBeans. Details siehe Dokumentation. -.TP -\-o[N] -Öffnet [N] Fenster übereinander. Wenn keine Zahl angegeben wird, öffne ein +.TP +\fB\-N\fP +Nicht\-kompatibler Modus: Setzt die Option »compatible« zurück. Dies +veranlasst \fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu +verhalten, selbst wenn es keine .vimrc\-Datei gibt. +.TP +\fB\-nb\fP +\fBVim\fP fungiert als Editor\-Server für NetBeans. Details siehe Dokumentation. +.TP +\fB\-o\fP[N] +Öffnet N Fenster übereinander. Wenn keine Zahl angegeben wird, öffnet ein Fenster pro Datei. -.TP -\-O[N] -Öffnet [N] Fenster nebeneinander. Wenn keine Zahl angegeben wird, öffne ein +.TP +\fB\-O\fP[N] +Öffnet N Fenster nebeneinander. Wenn keine Zahl angegeben wird, öffnet ein Fenster pro Datei. -.TP -\-p[N] -Öffnet [N] Reiterseiten. Wenn keine Zahl angegeben wird, öffne eine +.TP +\fB\-p\fP[N] +Öffnet N Reiterseiten. Wenn keine Zahl angegeben wird, öffnet eine Reiterseite pro Datei. -.TP -\-R -Nur\-Lesen\-Modus: Die Option 'readonly' wird gesetzt. Der Puffer kann noch -bearbeitet werden, aber es wird verhindert, eine Datei aus Versehen zu -überschreiben. Wenn Sie wirklich eine Datei überschreiben wollen, fügen Sie -dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in »:w!«). Die Option „\-R« -bedingt die Option »\-n« (siehe oben). Die Option 'readonly' kann durch „:set -noro« gelöscht werden. Siehe »:help 'readonly'«. -.TP -\-r -Listet die Auslagerungsdateien und gibt Informationen zu ihrer -Verwendbarkeit zur Wiederherstellung. -.TP -\-r {Datei} +.TP +\fB\-P\fP {Eltern\-Titel} +Nur Win32\-GUI: Gibt den Titel der Elternapplikation an. Wenn möglich läuft +\fBVim\fP in einem MDI\-Fenster innerhalb der Applikation. {Eltern\-Titel} muss +im Fenstertitel der Elternapplikation vorkommen. Stellen Sie sicher, dass er +spezifisch genug ist. Beachten Sie, dass die Implementierung immer noch +primitiv ist. Sie wird nicht mit allen Applikationen funktionieren und das +Menü funktioniert nicht. +.TP +\fB\-r\fP +Listet die Auslagerungsdateien auf und gibt Informationen zu ihrer +Verwendbarkeit zur Wiederherstellung aus. +.TP +\fB\-r\fP {Datei} Wiederherstellungsmodus: Die Auslagerungsdatei wird zur Wiederherstellung -verwendet und hat denselben Dateinamen wie die Text\-Datei + ».swp«. Siehe -„:help recovery«. -.TP -\-s -Der stille Modus: Nur wenn die ausführbare Datei als »ex« aufgerufen wird -oder vor »\-s« die Option „\-e« gegeben wird. -.TP -\-s {Eingabeskript} -Die Datei {Eingabeskript} wird gelesen und ausgeführt, als würden Sie die -Zeichen in ihr tippen. Dasselbe kann mit dem Befehl »:source! +einer abgestürzten Bearbeitungssitzung verwendet und hat denselben +Dateinamen wie die Textdatei mit angehängtem ».swp«. Siehe »:help recovery«. +.TP +\fB\-R\fP +Schreibgeschützter Modus: Die Option »readonly« wird gesetzt. Der Puffer +kann noch bearbeitet werden, aber es wird verhindert, eine Datei aus +Versehen zu überschreiben. Wenn Sie wirklich eine Datei überschreiben +wollen, fügen Sie dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in »:w!«). Die +Option \fB\-R\fP bedingt die Option \fB\-n\fP (siehe oben). Die Option »readonly« +kann durch »:set noro« zurückgesetzt werden. Siehe »:help readonly«. +.TP +\fB\-s\fP +Stiller Modus: Nur wenn die ausführbare Datei als \fBex\fP aufgerufen wird oder +vor \fB\-s\fP die Option \fB\-e\fP angegeben wird. +.TP +\fB\-s\fP {Eingabeskript} +Die Skriptdatei {Eingabeskript} wird gelesen und ausgeführt, als würden Sie +die Zeichen eingeben. Dasselbe kann mit dem Befehl »:source! {Eingabeskript}« erreicht werden. Wird das Ende der Datei vor dem Beenden des Editors erreicht, werden weitere Zeichen von der Tastatur gelesen. -.TP -\-T {Terminal} +.TP +\fB\-S\fP {Datei} +{Datei} wird nach dem Lesen der ersten Datei ausgeführt. Dies entspricht »\-c +"source {Datei}"«. {Datei} darf nicht mit einem Bindestrich (\-) +anfangen. Wenn kein Dateiname angegeben wird, wird »Session.vim« verwendet +(Funktioniert nur, wenn \fB\-S\fP als letztes Argument steht). +.TP +\fB\-T\fP {Terminal} Setzt den Namen des benutzten Terminals. Nur erforderlich, wenn die -Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes Terminal sein: -(builtin) oder in einer termcap\- oder terminfo\-Datei definiert. -.TP -\-u {VimRC} -Verwendet zur Initialisierung die Befehle in der Datei {VimRC}. Alle anderen +Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes (eingebautes) oder +in einer Termcap\- oder Terminfo\-Datei definiertes Terminal sein. +.TP +\fB\-u\fP {vimrc} +Verwendet zur Initialisierung die Befehle in der Datei {vimrc}. Alle anderen Initialisierungen werden übersprungen. Benutzen Sie dies, um eine besondere Art von Dateien zu bearbeiten. Dies kann auch benutzt werden, um alle Initialisierungen zu überspringen, indem der Name »NONE« angegeben wird. Für -weitere Einzelheiten siehe »:help initialisation« innerhalb von Vim. -.TP -\-U {GvimRC} -Benutzt die Befehle in der Datei {GvimRC} für die Initialisierung der -grafischen Oberfläche. Alle anderen Initialisierungen werden +weitere Einzelheiten siehe »:help initialization« innerhalb von \fBVim\fP. +.TP +\fB\-U\fP {gvimrc} +Benutzt die Befehle in der Datei {gvimrc} für die Initialisierung der +grafischen Oberfläche. Alle anderen GUI\-Initialisierungen werden übersprungen. Dies kann ebenfalls benutzt werden, um alle GUI\-Initialisierungen zu überspringen, indem der Name »NONE« angegeben -wird. Siehe »:help gui\-init« innerhalb von Vim für weitere Einzelheiten. -.TP -\-V[N] -Ausführlich (verbose): Gibt Meldungen darüber, welche Befehlsdateien -eingelesen werden, und über das Lesen und Schreiben einer VimInfo\-Datei. Die -optionale Zahl N ist der Wert für 'verbose'. Vorgabe ist 10. -.TP -\-v -Startet \fBVim\fP im Vi\-Modus, so als würde die ausführbare Datei mit »vi« -aufgerufen. Dies wirkt sich nur aus, wenn die ausführbare Datei als »ex« +wird. Siehe »:help gui\-init« innerhalb von \fBVim\fP für weitere Einzelheiten. +.TP +\fB\-v\fP +Vi\-Modus: Startet \fBVim\fP als würde die ausführbare Datei mit \fBvi\fP +aufgerufen. Dies wirkt sich nur aus, wenn die ausführbare Datei als \fBex\fP aufgerufen wird. -.TP -\-w {Ausgabeskript} -Alle Zeichen, die eingetippt werden, werden in der Datei {Ausgabeskript} +.TP +\fB\-V\fP[N] +Ausführlich (verbose): Gibt Meldungen darüber, welche Befehlsdateien +ausgeführt werden, und über das Lesen und Schreiben einer viminfo\-Datei. Die +optionale Zahl N ist der Wert für »verbose«. Vorgabe ist 10. +.TP +\fB\-V\fP[N]{Dateiname} +Wie \fB\-V\fP und setzt »verbosefile« auf {Dateiname}. Das Ergebnis besteht +darin, dass Meldungen nicht angezeigt werden, sondern in die Datei +{Dateiname} geschrieben werden. {Dateiname} darf nicht mit einer Ziffer +anfangen. +.TP +\fB\-w\fP{Nummer} +Setzt die Option »window« auf {Nummer}. +.TP +\fB\-w\fP {Ausgabeskript} +Alle Zeichen, die eingegeben werden, werden in der Datei {Ausgabeskript} aufgezeichnet, solange bis Sie \fBVim\fP beenden. Dies ist nützlich, falls Sie -eine Skript\-Datei zum Benutzen mit »vim \-s« oder „:source!« erzeugen +eine Skript\-Datei zum Benutzen mit »vim \-s« oder »:source!« erzeugen wollen. Falls die Datei {Ausgabeskript} vorhanden ist, werden die Zeichen angehängt. -.TP -\-W {Ausgabeskript} -Wie \-w, aber eine bereits vorhandene Datei wird überschrieben. -.TP -\-x -Benutzt beim Schreiben von Dateien eine Verschlüsselung. Fragt nach dem +.TP +\fB\-W\fP {Ausgabeskript} +Wie \fB\-w\fP, aber eine bereits vorhandene Datei wird überschrieben. +.TP +\fB\-x\fP +Benutzt beim Schreiben von Dateien eine Verschlüsselung, falls \fBVim\fP mit +Unterstützung von Verschlüsselung kompiliert worden ist. Fragt nach dem Schlüssel. -.TP -\-X -Führt keine Verbindung zum X\-Server durch. Dadurch verkürzt sich die -Startzeit, aber der Fenstertitel und die Zwischenablage werden nicht +.TP +\fB\-X\fP +Verbindet nicht mit dem X\-Server. Dadurch verkürzt sich die Startzeit in +einem Terminal, aber der Fenstertitel und die Zwischenablage werden nicht verwendet. -.TP -\-y -Startet \fBVim\fP im einfachen Modus, als würde die ausführbare Datei mit -»evim« oder »eview« aufgerufen. \fBVim\fP verhält sich dann wie ein Editor zum -Klicken und Tippen. -.TP -\-Z +.TP +\fB\-y\fP +Einfacher Modus: Startet \fBVim\fP als würde die ausführbare Datei \fBevim\fP oder +\fBeview\fP heißen. \fBVim\fP verhält sich dann wie ein Editor zum Klicken und +Tippen. +.TP +\fB\-Z\fP Eingeschränkter Modus: Funktioniert, als würde der Name der ausführbaren Datei mit »r« beginnen. -.TP -\-\- +.TP +\fB\-\-\fP Markiert das Ende der Optionen. Argumente, die folgen, werden als Dateinamen behandelt. Dies kann benutzt werden, um einen Dateinamen mit »\-« am Anfang zu verwenden. -.TP -\-\-echo\-wid +.TP +\fB\-\-clean\fP +Verwendet keine persönlichen Einstellungen (vimrc, plugins, +usw,). Hilfreich, um festzustellen, ob ein Problem mit einer sauberen +Vim\-Konfiguration reproduzierbar ist. +.TP +\fB\-\-cmd\fP {Befehl} +Wie \fB\-c\fP, aber dieser Befehl wird vor allen vimrc\-Dateien ausgeführt. Sie +können unabhängig von den \fB\-c\fP\-Befehlen bis zu zehn dieser Befehle +verwenden. +.TP +\fB\-\-echo\-wid\fP Nur GTK\-GUI: Schreibe die Fenster\-ID auf die Standardausgabe. -.TP -\-\-help -Gibt eine Hilfe\-Nachricht aus und beendet, wie »\-h«. -.TP -\-\-literal -Nimmt die Dateinamen so wie sie sind und vervollständigt sie nicht nach -Metazeichen (*,?). Dies wirkt sich nicht unter Unix aus, wo die Shell die -Metazeichen expandiert. -.TP -\-\-noplugin -Lade keine Plugins. Impliziert durch »\-u NONE«. -.TP -\-\-remote +.TP +\fB\-\-gui\-dialog\-file\fP {Name} +Schreibt bei der Verwendung der GUI den Titel und die Meldung des Dialogs in +die Datei {Name}, anstatt sie als Dialog anzuzeigen. Die Datei wird entweder +erzeugt oder erweitert. Dies ist nur für Testzwecke hilfreich, um zu +verhindern, dass Tests bei einem nicht sichtbaren Dialog hängen +bleiben. Ohne Verwendung der GUI wird dieses Argument ignoriert. +.TP +\fB\-\-help, \-h, \-?\fP +Gibt eine kleine Hilfe für die Befehlszeilenparameter und Optionen +aus. Danach beendet sich \fBVim\fP. +.TP +\fB\-\-literal\fP +Nimmt die Dateinamen so wie sie sind und vervollständigt sie nicht unter +Berücksichtigung von Metazeichen. Dies wirkt sich nicht unter Unix aus, wo +die Shell die Metazeichen expandiert. +.TP +\fB\-\-log\fP {Dateiname} +Wenn \fBVim\fP mit dem Eval\- und dem Channel\-Feature kompiliert worden ist, +wird das Protokollieren gestartet. Einträge werden nach {Dateiname} +geschrieben. Dies funktioniert wie das Aufrufen von +\fIch_logfile({Dateiname}, 'ao')\fP sehr früh während des Programmstarts. +.TP +\fB\-\-nofork\fP +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +löst sich nicht von der Shell, in der er aufgerufen wurde. +.TP +\fB\-\-noplugin\fP +Lädt keine Erweiterungen. Impliziert durch »\-u NONE«. +.TP +\fB\-\-not\-a\-term\fP +Teilt \fBVim\fP mit, dass dem Benutzer klar ist, dass Eingabe und/oder Ausgabe +nicht mit einem Terminal verbunden sind. Das vermeidet die entsprechende +Warnung und eine Verzögerung von zwei Sekunden. +.TP +\fB\-\-remote\fP Verbindet mit einem Vim\-Server und lässt ihn die in den restlichen Argumenten angegeben Dateien editieren. Wenn kein Server gefunden wird, -führt dies zu einer Warnmeldung und die Dateien werden im gegenwärtigen Vim -zum Bearbeiten geöffnet. -.TP -\-\-remote\-expr {Ausdruck} -Verbindet mit einem Vim\-Server, führt {Ausdruck} aus und zeigt das Ergebnis -auf der Standardausgabe an. -.TP -\-\-remote\-send {Zeichen} +führt dies zu einer Warnmeldung und die Dateien werden im gegenwärtigen +\fBVim\fP zum Bearbeiten geöffnet. +.TP +\fB\-\-remote\-expr\fP {Ausdruck} +Verbindet mit einem Vim\-Server, wertet dort {Ausdruck} aus und zeigt das +Ergebnis auf der Standardausgabe an. +.TP +\fB\-\-remote\-send\fP {Zeichen} Verbindet mit einem Vim\-Server und sendet ihm {Zeichen}. -.TP -\-\-remote\-silent -Wie »\-\-remote«, aber ohne Warnung, wenn kein Server gefunden wird. -.TP -\-\-remote\-wait -Wie »\-\-remote«, aber Vim beendet sich nicht, bis die Dateien bearbeitet +.TP +\fB\-\-remote\-silent\fP +Wie \fB\-\-remote\fP, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\fB\-\-remote\-wait\fP +Wie \fB\-\-remote\fP, aber \fBVim\fP beendet sich nicht, bis die Dateien bearbeitet wurden. -.TP -\-\-remote\-wait\-silent -Wie »\-\-remote\-wait«, aber ohne Warnung, wenn kein Server gefunden wird. -.TP -\-\-serverlist +.TP +\fB\-\-remote\-wait\-silent\fP +Wie \fB\-\-remote\-wait\fP, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\fB\-\-serverlist\fP Listet die Namen aller gefundenen Vim\-Server auf. -.TP -\-\-servername {Name} -Benutzt {Name} als Server\-Namen. Wird für den gegenwärtigen Vim benutzt, -außer es wird mit dem Argument »\-\-remote« benutzt, dann ist es der Name des -zu kontaktierenden Servers. -.TP -\-\-socketid {id} -Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um GVim in einem anderen +.TP +\fB\-\-servername\fP {Name} +Benutzt {Name} als Server\-Namen. Wird für den gegenwärtigen \fBVim\fP benutzt, +außer es wird mit einem der \fB\-\-remote\fP\-Argumente benutzt, dann ist es der +Name des zu kontaktierenden Servers. +.TP +\fB\-\-socketid\fP {ID} +Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um \fBgVim\fP in einem anderen Fenster laufen zu lassen. -.TP -\-\-version -Versionsinformation anzeigen und beenden +.TP +\fB\-\-startuptime\fP {Datei} +Schreibt während des Programmstarts Meldungen zu Zeitmessungen in die Datei +{Datei}. +.TP +\fB\-\-ttyfail\fP +Beendet das Programm sofort, wenn Standardeingabe oder Standardausgabe keine +Terminals (tty) sind. +.TP +\fB\-\-version\fP +Versionsinformation anzeigen und beenden. +.TP +\fB\-\-windowid\fP {ID} +Nur Win32\-GUI: Veranlasst, dass \fBgVim\fP versucht, das Fenster {ID} als +Eltern zu verwenden, so dass es in diesem Fenster abläuft. .SH "EINGEBAUTE HILFE" -Tippen Sie in \fBVim\fP »:help«, um zu beginnen. Geben Sie „:help begriff« ein, -um Hilfe über ein bestimmtes Thema zu bekommen. Zum Beispiel »:help ZZ« für -Hilfe über den Befehl »ZZ«. Benutzen Sie und CTRL\-D, um -Begriffe zu vervollständigen (»:help cmdline\-completion«). Tags sind -vorhanden, um von einem Ort zum anderen zu springen (eine Art -Hypertext\-Verknüpfungen, siehe »:help«). Auf diese Weise können alle -Dokumentations\-Dateien aufgerufen werden, zum Beispiel »:help syntax.txt«. +Geben Sie in \fBVim\fP »:help« ein, um eine Einstiegshilfe zu erhalten. Geben +Sie »:help Begriff« ein, um Hilfe über ein bestimmtes Thema zu bekommen. Zum +Beispiel »:help ZZ« für Hilfe über den Befehl »ZZ«. Benutzen Sie + und STRG\-D, um Begriffe zu vervollständigen (»:help +cmdline\-completion«). Tags sind vorhanden, um von einem Ort zum anderen zu +springen (eine Art Hypertext\-Verknüpfungen, siehe »:help«). Auf diese Weise +können alle Dokumentations\-Dateien aufgerufen werden, zum Beispiel »:help +syntax.txt«. .SH DATEIEN .TP 15 -/usr/local/lib/vim/doc/*.txt +/usr/local/share/vim/vim??/doc/*.txt Dokumentations\-Dateien für \fBVim\fP. Verwenden Sie »:help doc\-file\-list«, um die gesamte Liste zu bekommen. -.TP -/usr/local/lib/vim/doc/tags -Die »Tag«\-Datei, die verwendet wird, um Informationen in der Dokumentation -zu finden. -.TP -/usr/local/lib/vim/syntax/syntax.vim -Die systemweite Einrichtung der Syntaxhervorhebung. -.TP -/usr/local/lib/vim/syntax/*.vim -Syntaxdateien für die verschiedenen Sprachen. -.TP -/usr/local/lib/vim/vimrc -Systemweite Einstellungsdatei für \fBVim\fP -.TP -~/.vimrc -Persönliche Einstellungsdatei für \fBVim\fP -.TP -/usr/local/lib/vim/gvimrc -Systemweite Einstellungsdatei für GVim -.TP -~/.gvimrc -Persönliche Einstellungsdatei für GVim -.TP -/usr/local/lib/vim/optwin.vim -Das Script, das von dem Befehl »:options« verwendet wird, eine schöne -Möglichkeit, um Optionen zu betrachten und zu setzen. -.TP -/usr/local/lib/vim/menu.vim -Systemweite Einstellungsdatei für das Menü von GVim -.TP -/usr/local/lib/vim/bugreport.vim -Das Script zum Generieren eines Fehlerberichts. Siehe »:help bugs«. -.TP -/usr/local/lib/vim/filetype.vim -Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres -Dateinamens. Siehe »:help 'filetype'«. -.TP -/usr/local/lib/vim/scripts.vim -Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres -Inhaltes. Siehe »:help 'filetype'«. -.TP -/usr/local/lib/vim/print/*.ps -Diese Dateien werden zum Drucken von PostScript verwendet. +.br +\fIvim??\fP ist die verkürzte Versionsnummer, wie vim91 von \fBVim 9.1\fP +.TP +/usr/local/share/vim/vim??/doc/tags +»Tag«\-Datei zum Auffinden von Informationen in der Dokumentation. +.TP +/usr/local/share/vim/vim??/syntax/syntax.vim +Systemweite Einrichtung der Syntaxhervorhebung. +.TP +/usr/local/share/vim/vim??/syntax/*.vim +Syntaxdateien für verschiedenen Sprachen. +.TP +/usr/local/share/vim/vimrc +Systemweite Einstellungsdatei für \fBVim\fP. +.TP +~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc +Persönlichen Einstellungen für \fBVim\fP. +.TP +/usr/local/share/vim/gvimrc +Systemweite Einstellungsdatei für \fBgVim\fP. +.TP +~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc +Persönlichen Einstellungen für \fBgVim\fP. +.TP +/usr/local/share/vim/vim??/optwin.vim +Script zur Verwendung von dem Befehl »:options«. Eine schöne Möglichkeit, um +Optionen zu betrachten und zu setzen. +.TP +/usr/local/share/vim/vim??/menu.vim +Systemweite Einstellungsdatei für das Menü von \fBgVim\fP. +.TP +/usr/local/share/vim/vim??/bugreport.vim +Script zum Generieren eines Fehlerberichts. Siehe »:help bugs«. +.TP +/usr/local/share/vim/vim??/filetype.vim +Script zur Erkennung des Typs einer Datei anhand ihres Dateinamens. Siehe +»:help filetype«. +.TP +/usr/local/share/vim/vim??/scripts.vim +Script zur Erkennung des Typs einer Datei anhand ihres Inhalts. Siehe »:help +filetype«. +.TP +/usr/local/share/vim/vim??/print/*.ps +Dateien zum Drucken von PostScript. .PP Für die neuesten Informationen lesen Sie die Vim\-Homepage: .br .SH "SIEHE AUCH" -vimtutor(1) +\fBvimtutor\fP(1) .SH AUTOR \fBVim\fP wurde größtenteils von Bram Moolenaar erstellt, mit viel Hilfe von -anderen Leuten. Siehe »:help credits« in \fBVim.\fP +anderen Leuten. Siehe »:help credits« in \fBVim\fP. .br \fBVim\fP basiert auf Stevie, der von Tim Thompson, Tony Andrews und G.R. (Fred) Walter geschrieben wurde. Es ist jedoch kaum etwas vom @@ -474,5 +526,5 @@ Beachten Sie, dass gewisse Dinge, die manche Leute als Fehler betrachten mögen, in Wirklichkeit durch zu getreue Nachbildung des Vi\-Verhaltens verursacht werden. Und falls Sie denken, dass andere Dinge Fehler sind, »weil Vi es anders tut«, sollten Sie einen genaueren Blick auf die Datei -vi_diff.txt werfen (oder in Vim »:help vi_diff.txt« tippen). Sehen Sie sich -auch die Optionen 'compatible' und 'cpoptions' an. +vi_diff.txt werfen (oder in Vim »:help vi_diff.txt« eingeben). Sehen Sie +sich auch die Optionen »compatible« und »cpoptions« an. From 14382c8bc96cc8f3985a01ab58c2f4d7b4d9ec85 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 28 Nov 2024 21:59:33 +0100 Subject: [PATCH 038/244] patch 9.1.0893: No test that undofile format does not regress Problem: No test that undofile format does not regress Solution: include a sample undofile to make sure we are always able to read it This is so, that we don't unintentionally change the undofile format and make sure we can load an undo file that has been created by an older Vim. closes: #16127 Signed-off-by: Christian Brabandt --- Filelist | 1 + src/testdir/samples/test_undo.txt | 3 +++ src/testdir/samples/test_undo.txt.undo | Bin 0 -> 1405 bytes src/testdir/test_undo.vim | 29 +++++++++++++++++++++++++ src/version.c | 2 ++ 5 files changed, 35 insertions(+) create mode 100644 src/testdir/samples/test_undo.txt create mode 100644 src/testdir/samples/test_undo.txt.undo diff --git a/Filelist b/Filelist index c5b1b3910c..caac66cdbd 100644 --- a/Filelist +++ b/Filelist @@ -224,6 +224,7 @@ SRC_ALL = \ src/testdir/samples/*.vim \ src/testdir/samples/test000 \ src/testdir/samples/test.zip \ + src/testdir/samples/test_undo.txt.undo \ src/testdir/samples/testa.zip \ src/testdir/color_ramp.vim \ src/testdir/silent.wav \ diff --git a/src/testdir/samples/test_undo.txt b/src/testdir/samples/test_undo.txt new file mode 100644 index 0000000000..4cb29ea38f --- /dev/null +++ b/src/testdir/samples/test_undo.txt @@ -0,0 +1,3 @@ +one +two +three diff --git a/src/testdir/samples/test_undo.txt.undo b/src/testdir/samples/test_undo.txt.undo new file mode 100644 index 0000000000000000000000000000000000000000..393af7f34f32c875724d871f0974b0a9b9ea8114 GIT binary patch literal 1405 zcmWH`%$*;a=aT=Ffoa#&`5TvYc)h&JqP6_GF%BEEFf7%hWHCW3Iv!S6qtlaK?VK;0o+I=MWak=g#a)*SisT2 z!0=T9%}`KOFqk%iqX{`aLBgOY1Brp74jfHj)gY-+K>ZK^MiVP?G$98zm<^6RWKmee pA?GcSyFeKcBsLmxpwOT>07e`ew73ID5pr}OA`V#;7;(>60RSD8H1q%f literal 0 HcmV?d00001 diff --git a/src/testdir/test_undo.vim b/src/testdir/test_undo.vim index 2e598d35c2..75ee4a5db3 100644 --- a/src/testdir/test_undo.vim +++ b/src/testdir/test_undo.vim @@ -884,4 +884,33 @@ func Test_undo_range_normal() bwipe! endfunc +func Test_load_existing_undofile() + CheckFeature persistent_undo + sp samples/test_undo.txt + let mess=execute(':verbose rundo samples/test_undo.txt.undo') + call assert_match('Finished reading undo file', mess) + + call assert_equal(['one', 'two', 'three'], getline(1, '$')) + norm! u + call assert_equal(['one', 'two'], getline(1, '$')) + norm! u + call assert_equal(['one'], getline(1, '$')) + norm! u + call assert_equal([''], getline(1, '$')) + let mess = execute(':norm! u') + call assert_equal([''], getline(1, '$')) + call assert_match('Already at oldest change', mess) + exe ":norm! \" + call assert_equal(['one'], getline(1, '$')) + exe ":norm! \" + call assert_equal(['one', 'two'], getline(1, '$')) + exe ":norm! \" + call assert_equal(['one', 'two', 'three'], getline(1, '$')) + let mess = execute(":norm! \") + call assert_equal(['one', 'two', 'three'], getline(1, '$')) + call assert_match('Already at newest change', mess) + bw! +endfunc + + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index d5a7899d71..8c4afd0392 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 893, /**/ 892, /**/ From 60ddb1a14025dc061908a1b7a0a3a82b4bbed223 Mon Sep 17 00:00:00 2001 From: Aliaksei Budavei <0x000c70@gmail.com> Date: Thu, 28 Nov 2024 22:05:37 +0100 Subject: [PATCH 039/244] patch 9.1.0894: No test for what the spotbug compiler parses Problem: No test for what the spotbug compiler parses (after commit: 65311c6f472de67b368) Solution: Test &makeprg for the SpotBugs compiler plugin (Aliaksei Budavei) closes: #16096 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt --- src/testdir/test_compiler.vim | 192 ++++++++++++++++++++++++++++++++++ src/version.c | 2 + 2 files changed, 194 insertions(+) diff --git a/src/testdir/test_compiler.vim b/src/testdir/test_compiler.vim index b7315e1b84..d65080826b 100644 --- a/src/testdir/test_compiler.vim +++ b/src/testdir/test_compiler.vim @@ -85,4 +85,196 @@ func Test_compiler_error() unlet! g:current_compiler endfunc +func s:SpotBugsParseFilterMakePrg(dirname, makeprg) + let result = {} + let result.sourcepath = '' + let result.classfiles = [] + + " Get the argument after the rightmost occurrence of "-sourcepath". + let offset = strridx(a:makeprg, '-sourcepath') + if offset < 0 + return result + endif + let offset += 1 + strlen('-sourcepath') + let result.sourcepath = matchstr(strpart(a:makeprg, offset), '.\{-}\ze[ \t]') + + " Get the class file arguments, dropping the pathname prefix. + let offset = stridx(a:makeprg, a:dirname, offset) + if offset < 0 + return result + endif + + while offset > -1 + let candidate = matchstr(a:makeprg, '[^ \t]\{-}\.class\>', offset) + if empty(candidate) + break + endif + call add(result.classfiles, candidate) + let offset = stridx(a:makeprg, a:dirname, (1 + strlen(candidate) + offset)) + endwhile + + call sort(result.classfiles) + return result +endfunc + +func Test_compiler_spotbugs_makeprg() + let save_shellslash = &shellslash + set shellslash + + call assert_true(mkdir('Xspotbugs/src/tests/α/β/γ/δ', 'pR')) + call assert_true(mkdir('Xspotbugs/tests/α/β/γ/δ', 'pR')) + + let lines =<< trim END + // EOL comment. /* + abstract class + ðŒ‚1 /* Multiline comment. */ { + /* Multiline comment. */ // EOL comment. /* + static final String COMMENT_A_LIKE = "/*"; + { new Object() {/* Try globbing. */}; } + static { interface ðŒ‰ðŒ‰1 {} } + static class ðŒ‚11 { interface ðŒ‰ðŒ‰2 {} } + } + /* Multiline comment. */ // EOL comment. /* + final class ðŒ‚2 { + public static void main(String... aa) { + record ðŒ“() {} + enum ðŒ„ {} + } + } // class + END + + " THE EXPECTED RESULTS. + let results = {} + let results['Xspotbugs/src/tests/ðŒ‚1.java'] = { + \ 'sourcepath': '%:p:h:S', + \ 'classfiles': sort([ + \ 'Xspotbugs/tests/ðŒ‚1$1.class', + \ 'Xspotbugs/tests/ðŒ‚1$1ðŒ‰ðŒ‰1.class', + \ 'Xspotbugs/tests/ðŒ‚1$ðŒ‚11$ðŒ‰ðŒ‰2.class', + \ 'Xspotbugs/tests/ðŒ‚1$ðŒ‚11.class', + \ 'Xspotbugs/tests/ðŒ‚1.class', + \ 'Xspotbugs/tests/ðŒ‚2$1ðŒ„.class', + \ 'Xspotbugs/tests/ðŒ‚2$1ðŒ“.class', + \ 'Xspotbugs/tests/ðŒ‚2.class']), + \ } + " No class file for an empty source file even with "-Xpkginfo:always". + let results['Xspotbugs/src/tests/package-info.java'] = { + \ 'sourcepath': '', + \ 'classfiles': [], + \ } + let results['Xspotbugs/src/tests/α/ðŒ‚1.java'] = { + \ 'sourcepath': '%:p:h:h:S', + \ 'classfiles': sort([ + \ 'Xspotbugs/tests/α/ðŒ‚1$1.class', + \ 'Xspotbugs/tests/α/ðŒ‚1$1ðŒ‰ðŒ‰1.class', + \ 'Xspotbugs/tests/α/ðŒ‚1$ðŒ‚11$ðŒ‰ðŒ‰2.class', + \ 'Xspotbugs/tests/α/ðŒ‚1$ðŒ‚11.class', + \ 'Xspotbugs/tests/α/ðŒ‚1.class', + \ 'Xspotbugs/tests/α/ðŒ‚2$1ðŒ„.class', + \ 'Xspotbugs/tests/α/ðŒ‚2$1ðŒ“.class', + \ 'Xspotbugs/tests/α/ðŒ‚2.class']), + \ } + let results['Xspotbugs/src/tests/α/package-info.java'] = { + \ 'sourcepath': '%:p:h:S', + \ 'classfiles': ['Xspotbugs/tests/α/package-info.class'], + \ } + let results['Xspotbugs/src/tests/α/β/ðŒ‚1.java'] = { + \ 'sourcepath': '%:p:h:h:h:S', + \ 'classfiles': sort([ + \ 'Xspotbugs/tests/α/β/ðŒ‚1$1.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚1$1ðŒ‰ðŒ‰1.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚1$ðŒ‚11$ðŒ‰ðŒ‰2.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚1$ðŒ‚11.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚1.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚2$1ðŒ„.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚2$1ðŒ“.class', + \ 'Xspotbugs/tests/α/β/ðŒ‚2.class']), + \ } + let results['Xspotbugs/src/tests/α/β/package-info.java'] = { + \ 'sourcepath': '%:p:h:S', + \ 'classfiles': ['Xspotbugs/tests/α/β/package-info.class'], + \ } + let results['Xspotbugs/src/tests/α/β/γ/ðŒ‚1.java'] = { + \ 'sourcepath': '%:p:h:h:h:h:S', + \ 'classfiles': sort([ + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1$1.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1$1ðŒ‰ðŒ‰1.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1$ðŒ‚11$ðŒ‰ðŒ‰2.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1$ðŒ‚11.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚2$1ðŒ„.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚2$1ðŒ“.class', + \ 'Xspotbugs/tests/α/β/γ/ðŒ‚2.class']), + \ } + let results['Xspotbugs/src/tests/α/β/γ/package-info.java'] = { + \ 'sourcepath': '%:p:h:S', + \ 'classfiles': ['Xspotbugs/tests/α/β/γ/package-info.class'], + \ } + let results['Xspotbugs/src/tests/α/β/γ/δ/ðŒ‚1.java'] = { + \ 'sourcepath': '%:p:h:h:h:h:h:S', + \ 'classfiles': sort([ + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1$1.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1$1ðŒ‰ðŒ‰1.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1$ðŒ‚11$ðŒ‰ðŒ‰2.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1$ðŒ‚11.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚2$1ðŒ„.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚2$1ðŒ“.class', + \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚2.class']), + \ } + let results['Xspotbugs/src/tests/α/β/γ/δ/package-info.java'] = { + \ 'sourcepath': '%:p:h:S', + \ 'classfiles': ['Xspotbugs/tests/α/β/γ/δ/package-info.class'], + \ } + + " MAKE CLASS FILES DISCOVERABLE! + let g:spotbugs_properties = { + \ 'sourceDirPath': 'src/tests', + \ 'classDirPath': 'tests', + \ } + + call assert_true(has_key(s:SpotBugsParseFilterMakePrg('Xspotbugs', ''), 'sourcepath')) + call assert_true(has_key(s:SpotBugsParseFilterMakePrg('Xspotbugs', ''), 'classfiles')) + + " Write 45 mock-up class files for 10 source files. + for [class_dir, src_dir, package] in [ + \ ['Xspotbugs/tests/', 'Xspotbugs/src/tests/', ''], + \ ['Xspotbugs/tests/α/', 'Xspotbugs/src/tests/α/', 'package α;'], + \ ['Xspotbugs/tests/α/β/', 'Xspotbugs/src/tests/α/β/', 'package α.β;'], + \ ['Xspotbugs/tests/α/β/γ/', 'Xspotbugs/src/tests/α/β/γ/', 'package α.β.γ;'], + \ ['Xspotbugs/tests/α/β/γ/δ/', 'Xspotbugs/src/tests/α/β/γ/δ/', 'package α.β.γ.δ;']] + for class_file in ['ðŒ‚1$1.class', 'ðŒ‚1$1ðŒ‰ðŒ‰1.class', 'ðŒ‚1$ðŒ‚11$ðŒ‰ðŒ‰2.class', + \ 'ðŒ‚1$ðŒ‚11.class', 'ðŒ‚1.class', 'ðŒ‚2$1ðŒ„.class', 'ðŒ‚2$1ðŒ“.class', 'ðŒ‚2.class'] + call writefile(0zcafe.babe.0000.0041, class_dir .. class_file) + endfor + call writefile(0zcafe.babe.0000.0041, class_dir .. 'package-info.class') + + " Write Java source files. + let type_file = src_dir .. 'ðŒ‚1.java' + call writefile(insert(copy(lines), package), type_file) + let package_file = src_dir .. 'package-info.java' + call writefile([package], src_dir .. 'package-info.java') + + for s in ['on', 'off'] + execute 'syntax ' .. s + + execute 'edit ' .. type_file + compiler spotbugs + let result = s:SpotBugsParseFilterMakePrg('Xspotbugs', &l:makeprg) + call assert_equal(results[type_file].sourcepath, result.sourcepath) + call assert_equal(results[type_file].classfiles, result.classfiles) + bwipeout + + execute 'edit ' .. package_file + compiler spotbugs + let result = s:SpotBugsParseFilterMakePrg('Xspotbugs', &l:makeprg) + call assert_equal(results[package_file].sourcepath, result.sourcepath) + call assert_equal(results[package_file].classfiles, result.classfiles) + bwipeout + endfor + endfor + + let &shellslash = save_shellslash +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 8c4afd0392..46f313b31a 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 894, /**/ 893, /**/ From c0d30eff6d5367a6e4eb7365501e7501dde31539 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Thu, 28 Nov 2024 22:27:28 +0100 Subject: [PATCH 040/244] patch 9.1.0895: default history value is too small Problem: default history value is too small Solution: promote the change from defaults.vim back to the C core, so increase the default 'history' option value from 50 to 200 (Lucca Saccarola) closes: #16129 Signed-off-by: Luca Saccarola Signed-off-by: Christian Brabandt --- runtime/defaults.vim | 1 - runtime/doc/options.txt | 3 +-- src/optiondefs.h | 2 +- src/version.c | 2 ++ 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/defaults.vim b/runtime/defaults.vim index 953cec700c..82f3358962 100644 --- a/runtime/defaults.vim +++ b/runtime/defaults.vim @@ -36,7 +36,6 @@ silent! endwhile " Allow backspacing over everything in insert mode. set backspace=indent,eol,start -set history=200 " keep 200 lines of command line history set ruler " show the cursor position all the time set showcmd " display incomplete commands diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index e9f35e4f31..05c2d9d4c3 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -4435,8 +4435,7 @@ A jump table for the options with a short description can be found at |Q_op|. See |highlight-default| for the default highlight groups. *'history'* *'hi'* -'history' 'hi' number (Vim default: 50, Vi default: 0, - set to 200 in |defaults.vim|) +'history' 'hi' number (Vim default: 200, Vi default: 0) global A history of ":" commands, and a history of previous search patterns is remembered. This option decides how many entries may be stored in diff --git a/src/optiondefs.h b/src/optiondefs.h index 5df5fb75c2..ca085d42c2 100644 --- a/src/optiondefs.h +++ b/src/optiondefs.h @@ -1305,7 +1305,7 @@ static struct vimoption options[] = SCTX_INIT}, {"history", "hi", P_NUM|P_VIM, (char_u *)&p_hi, PV_NONE, NULL, NULL, - {(char_u *)0L, (char_u *)50L} SCTX_INIT}, + {(char_u *)0L, (char_u *)200L} SCTX_INIT}, {"hkmap", "hk", P_BOOL|P_VI_DEF|P_VIM, #ifdef FEAT_RIGHTLEFT (char_u *)&p_hkmap, PV_NONE, NULL, NULL, diff --git a/src/version.c b/src/version.c index 46f313b31a..325788c8cc 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 895, /**/ 894, /**/ From 075aeea40431a02e4da01f47d0cb7874d4eaa240 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 28 Nov 2024 23:12:53 +0100 Subject: [PATCH 041/244] runtime(doc): document changed default value for 'history' Signed-off-by: Christian Brabandt --- runtime/doc/version9.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 04d1a92bda..b9977a9f2c 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Nov 27 +*version9.txt* For Vim version 9.1. Last change: 2024 Nov 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41609,6 +41609,8 @@ Changed~ - allow to pass local Vim script variables to python interpreter |py3eval()| - |getwininfo()| now also returns the "leftcol" property for a window - 'rulerformat' now supports the |stl-%!| item +- the default 'history' option value has been increased to 200 and removed + from |defaults.vim| *added-9.2* Added ~ From a49c077a883b2566882df9069385ed1e1277ca64 Mon Sep 17 00:00:00 2001 From: glepnir Date: Sat, 30 Nov 2024 10:56:30 +0100 Subject: [PATCH 042/244] patch 9.1.0896: completion list wrong after v9.1.0891 Problem: completion list wrong after v9.1.0891 Solution: update compl_mach_array after leader change (glepnir) compl_shown_match update not correct after refactoring in v9.1.0891 Unfortunately, this regressed what item is selected after leader change. So generate compl_match_array before updating compl_shown_match range, and split generate compl_match_array into range match_head fixes: #16128 closes: #16129 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/insexpand.c | 152 ++++++++---------- .../dumps/Test_pum_keep_select_01.dump | 20 +++ .../dumps/Test_pum_keep_select_02.dump | 20 +++ src/testdir/test_popup.vim | 25 +++ src/version.c | 2 + 5 files changed, 137 insertions(+), 82 deletions(-) create mode 100644 src/testdir/dumps/Test_pum_keep_select_01.dump create mode 100644 src/testdir/dumps/Test_pum_keep_select_02.dump diff --git a/src/insexpand.c b/src/insexpand.c index ba5f919a9b..75403f1b3b 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -1228,7 +1228,7 @@ ins_compl_build_pum(void) compl_T *shown_compl = NULL; int did_find_shown_match = FALSE; int shown_match_ok = FALSE; - int i; + int i = 0; int cur = -1; int max_fuzzy_score = 0; unsigned int cur_cot_flags = get_cot_flags(); @@ -1242,6 +1242,17 @@ ins_compl_build_pum(void) compl_match_arraysize = 0; compl = compl_first_match; + // If the current match is the original text don't find the first + // match after it, don't highlight anything. + if (match_at_original_text(compl_shown_match)) + shown_match_ok = TRUE; + + if (compl_leader.string != NULL + && STRCMP(compl_leader.string, compl_orig_text.string) == 0 + && shown_match_ok == FALSE) + compl_shown_match = compl_no_select ? compl_first_match + : compl_first_match->cp_next; + do { // When 'completeopt' contains "fuzzy" and leader is not NULL or empty, @@ -1258,8 +1269,64 @@ ins_compl_build_pum(void) if (match_head == NULL) match_head = compl; else - match_tail->cp_match_next = compl; + match_tail->cp_match_next = compl; match_tail = compl; + + if (!shown_match_ok && !compl_fuzzy_match) + { + if (compl == compl_shown_match || did_find_shown_match) + { + // This item is the shown match or this is the + // first displayed item after the shown match. + compl_shown_match = compl; + did_find_shown_match = TRUE; + shown_match_ok = TRUE; + } + else + // Remember this displayed match for when the + // shown match is just below it. + shown_compl = compl; + cur = i; + } + else if (compl_fuzzy_match) + { + if (i == 0) + shown_compl = compl; + // Update the maximum fuzzy score and the shown match + // if the current item's score is higher + if (compl->cp_score > max_fuzzy_score) + { + did_find_shown_match = TRUE; + max_fuzzy_score = compl->cp_score; + if (!compl_no_select) + compl_shown_match = compl; + } + + if (!shown_match_ok && compl == compl_shown_match && !compl_no_select) + { + cur = i; + shown_match_ok = TRUE; + } + } + i++; + } + + if (compl == compl_shown_match && !compl_fuzzy_match) + { + did_find_shown_match = TRUE; + + // When the original text is the shown match don't set + // compl_shown_match. + if (match_at_original_text(compl)) + shown_match_ok = TRUE; + + if (!shown_match_ok && shown_compl != NULL) + { + // The shown match isn't displayed, set it to the + // previously displayed match. + compl_shown_match = shown_compl; + shown_match_ok = TRUE; + } } compl = compl->cp_next; } while (compl != NULL && !is_first_match(compl)); @@ -1271,71 +1338,10 @@ ins_compl_build_pum(void) if (compl_match_array == NULL) return -1; - // If the current match is the original text don't find the first - // match after it, don't highlight anything. - if (match_at_original_text(compl_shown_match)) - shown_match_ok = TRUE; - - if (compl_leader.string != NULL - && STRCMP(compl_leader.string, compl_orig_text.string) == 0 - && shown_match_ok == FALSE) - compl_shown_match = compl_no_select ? compl_first_match - : compl_first_match->cp_next; - i = 0; compl = match_head; - if (match_tail == match_head) - did_find_shown_match = TRUE; + i = 0; while (compl != NULL) { - if (!shown_match_ok && !compl_fuzzy_match) - { - if (compl == compl_shown_match || did_find_shown_match) - { - // This item is the shown match or this is the - // first displayed item after the shown match. - compl_shown_match = compl; - did_find_shown_match = TRUE; - shown_match_ok = TRUE; - } - else - // Remember this displayed match for when the - // shown match is just below it. - shown_compl = compl; - cur = i; - } - else if (compl_fuzzy_match) - { - if (i == 0) - shown_compl = compl; - // Update the maximum fuzzy score and the shown match - // if the current item's score is higher - if (compl->cp_score > max_fuzzy_score) - { - did_find_shown_match = TRUE; - max_fuzzy_score = compl->cp_score; - if (!compl_no_select) - compl_shown_match = compl; - } - - if (!shown_match_ok && compl == compl_shown_match && !compl_no_select) - { - cur = i; - shown_match_ok = TRUE; - } - - // If there is no "no select" condition and the max fuzzy - // score is positive, or there is no completion leader or the - // leader length is zero, mark the shown match as valid and - // reset the current index. - if (!compl_no_select - && (max_fuzzy_score > 0 - || (compl_leader.string == NULL || compl_leader.length == 0))) - { - if (match_at_original_text(compl_shown_match)) - compl_shown_match = shown_compl; - } - } - if (compl->cp_text[CPT_ABBR] != NULL) compl_match_array[i].pum_text = compl->cp_text[CPT_ABBR]; else @@ -1350,24 +1356,6 @@ ins_compl_build_pum(void) compl->cp_text[CPT_MENU]; else compl_match_array[i++].pum_extra = compl->cp_fname; - - if (compl == compl_shown_match && !compl_fuzzy_match) - { - did_find_shown_match = TRUE; - - // When the original text is the shown match don't set - // compl_shown_match. - if (match_at_original_text(compl)) - shown_match_ok = TRUE; - - if (!shown_match_ok && shown_compl != NULL) - { - // The shown match isn't displayed, set it to the - // previously displayed match. - compl_shown_match = shown_compl; - shown_match_ok = TRUE; - } - } match_next = compl->cp_match_next; compl->cp_match_next = NULL; compl = match_next; diff --git a/src/testdir/dumps/Test_pum_keep_select_01.dump b/src/testdir/dumps/Test_pum_keep_select_01.dump new file mode 100644 index 0000000000..42877d04ae --- /dev/null +++ b/src/testdir/dumps/Test_pum_keep_select_01.dump @@ -0,0 +1,20 @@ +|F+0&#ffffff0|a|b| @71 +|F|i|v|e| @70 +|f|i|n|d| @70 +|f|i|l|m| @70 +> @74 +|F+0#0000001#ffd7ff255|a|b| @11| +0#4040ff13#ffffff0@59 +|F+0#0000001#ffd7ff255|i|v|e| @10| +0#4040ff13#ffffff0@59 +|f+0#0000001#ffd7ff255|i|n|d| @10| +0#4040ff13#ffffff0@59 +|f+0#0000001#e0e0e08|i|l|m| @10| +0#4040ff13#ffffff0@59 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |L|o|c|a|l| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@27 diff --git a/src/testdir/dumps/Test_pum_keep_select_02.dump b/src/testdir/dumps/Test_pum_keep_select_02.dump new file mode 100644 index 0000000000..c4dbb27a6a --- /dev/null +++ b/src/testdir/dumps/Test_pum_keep_select_02.dump @@ -0,0 +1,20 @@ +|F+0&#ffffff0|a|b| @71 +|F|i|v|e| @70 +|f|i|n|d| @70 +|f|i|l|m| @70 +|F> @73 +|F+0#0000001#ffd7ff255|a|b| @11| +0#4040ff13#ffffff0@59 +|F+0#0000001#e0e0e08|i|v|e| @10| +0#4040ff13#ffffff0@59 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |L|o|c|a|l| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@27 diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim index 6b807c8c3e..d5e6e312a0 100644 --- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -1673,4 +1673,29 @@ func Test_pum_completeitemalign() call StopVimInTerminal(buf) endfunc +func Test_pum_keep_select() + CheckScreendump + let lines =<< trim END + set completeopt=menu,menuone,noinsert + END + call writefile(lines, 'Xscript', 'D') + let buf = RunVimInTerminal('-S Xscript', {}) + call TermWait(buf) + + call term_sendkeys(buf, "ggSFab\Five\find\film\\\") + call TermWait(buf, 50) + call VerifyScreenDump(buf, 'Test_pum_keep_select_01', {}) + call term_sendkeys(buf, "\\") + call TermWait(buf, 50) + + call term_sendkeys(buf, "S\\") + call TermWait(buf, 50) + call term_sendkeys(buf, "F") + call VerifyScreenDump(buf, 'Test_pum_keep_select_02', {}) + call term_sendkeys(buf, "\\") + + call TermWait(buf, 50) + call StopVimInTerminal(buf) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 325788c8cc..e1f8489cb5 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 896, /**/ 895, /**/ From dd21c8962680ba726ac1bf78ae106a4b6071450f Mon Sep 17 00:00:00 2001 From: Romain Lafourcade Date: Sat, 30 Nov 2024 11:05:18 +0100 Subject: [PATCH 043/244] runtime(compiler): update eslint compiler compact formatter is no longer distributed with eslint, so: - switch to '--format stylish' in makeprg - update 'errorformat' for the 'stylish' format output fixes: #16126 closes: #16137 Signed-off-by: Romain Lafourcade Signed-off-by: Christian Brabandt --- runtime/compiler/eslint.vim | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/runtime/compiler/eslint.vim b/runtime/compiler/eslint.vim index db7a665991..0414817900 100644 --- a/runtime/compiler/eslint.vim +++ b/runtime/compiler/eslint.vim @@ -1,13 +1,12 @@ " Vim compiler file " Compiler: ESLint for JavaScript " Maintainer: Romain Lafourcade -" Last Change: 2020 August 20 -" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) +" Last Change: 2024 Nov 30 if exists("current_compiler") finish endif let current_compiler = "eslint" -CompilerSet makeprg=npx\ eslint\ --format\ compact -CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m,%-G%.%# +CompilerSet makeprg=npx\ eslint\ --format\ stylish +CompilerSet errorformat=%-P%f,\%\\s%#%l:%c\ %#\ %trror\ \ %m,\%\\s%#%l:%c\ %#\ %tarning\ \ %m,\%-Q,\%-G%.%#, From aa16b30552f0c6a00dcc761e3954cd5266bf106a Mon Sep 17 00:00:00 2001 From: user202729 <25191436+user202729@users.noreply.github.com> Date: Sat, 30 Nov 2024 11:09:49 +0100 Subject: [PATCH 044/244] patch 9.1.0897: filetype: pyrex files are not detected Problem: filetype: pyrex files are not detected Solution: detect '*.pxi' and '*.pyx+' as pyrex filetype (user202729) References: https://cython.readthedocs.io/en/latest/src/userguide/language_basics.html#cython-file-types https://www.csse.canterbury.ac.nz/greg.ewing/python/Pyrex/version/Doc/Manual/using_with_c++.html closes: #16136 Signed-off-by: user202729 <25191436+user202729@users.noreply.github.com> Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 4 ++-- src/testdir/test_filetype.vim | 2 +- src/version.c | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 08290d0b87..f91d405f7d 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1982,8 +1982,8 @@ au BufNewFile,BufRead MANIFEST.in setf pymanifest " Pyret au BufNewFile,BufRead *.arr setf pyret -" Pyrex -au BufNewFile,BufRead *.pyx,*.pxd setf pyrex +" Pyrex/Cython +au BufNewFile,BufRead *.pyx,*.pyx+,*.pxd,*.pxi setf pyrex " Python, Python Shell Startup and Python Stub Files " Quixote (Python-based web framework) diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 4a905a889a..51f4dc1c89 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -613,7 +613,7 @@ def s:GetFilenameChecks(): dict> purescript: ['file.purs'], pymanifest: ['MANIFEST.in'], pyret: ['file.arr'], - pyrex: ['file.pyx', 'file.pxd'], + pyrex: ['file.pyx', 'file.pxd', 'file.pxi', 'file.pyx+'], python: ['file.py', 'file.pyw', '.pythonstartup', '.pythonrc', '.python_history', '.jline-jython.history', 'file.ptl', 'file.pyi', 'SConstruct'], ql: ['file.ql', 'file.qll'], qml: ['file.qml', 'file.qbs'], diff --git a/src/version.c b/src/version.c index e1f8489cb5..e3093a3db0 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 897, /**/ 896, /**/ From 3c2596a9e967910143d41fbb9615614ab36d43a7 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Sat, 30 Nov 2024 11:32:49 +0100 Subject: [PATCH 045/244] patch 9.1.0898: runtime(compiler): pytest compiler not included Problem: runtime(compiler): pytest compiler not included Solution: include pytest compiler, update the compiler completion test (Konfekt) closes: #16130 Signed-off-by: Konfekt Signed-off-by: Christian Brabandt --- runtime/compiler/pytest.vim | 103 ++++++++++++++++++++++++++++++++++ runtime/doc/quickfix.txt | 8 +++ runtime/doc/tags | 1 + runtime/ftplugin/python.vim | 11 +++- src/testdir/test_compiler.vim | 4 +- src/version.c | 2 + 6 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 runtime/compiler/pytest.vim diff --git a/runtime/compiler/pytest.vim b/runtime/compiler/pytest.vim new file mode 100644 index 0000000000..7fc189932c --- /dev/null +++ b/runtime/compiler/pytest.vim @@ -0,0 +1,103 @@ +" Vim compiler file +" Compiler: Pytest (Python testing framework) +" Maintainer: @Konfekt and @mgedmin +" Last Change: 2024 Nov 28 + +if exists("current_compiler") | finish | endif +let current_compiler = "pytest" + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=pytest +if has('unix') + execute $'CompilerSet makeprg=/usr/bin/env\ PYTHONWARNINGS=ignore\ pytest\ {escape(get(b:, 'pytest_makeprg_params', get(g:, 'pytest_makeprg_params', '--tb=short --quiet')), ' \|"')}' +elseif has('win32') + execute $'CompilerSet makeprg=set\ PYTHONWARNINGS=ignore\ &&\ pytest\ {escape(get(b:, 'pytest_makeprg_params', get(g:, 'pytest_makeprg_params', '--tb=short --quiet')), ' \|"')}' +else + CompilerSet makeprg=pytest\ --tb=short\ --quiet + execute $'CompilerSet makeprg=pytest\ {escape(get(b:, 'pytest_makeprg_params', get(g:, 'pytest_makeprg_params', '--tb=short --quiet')), ' \|"')}' +endif + +" Pytest syntax errors {{{2 + +" Reset error format so that sourcing .vimrc again and again doesn't grow it +" without bounds +setlocal errorformat& + +" For the record, the default errorformat is this: +" +" %*[^"]"%f"%*\D%l: %m +" "%f"%*\D%l: %m +" %-G%f:%l: (Each undeclared identifier is reported only once +" %-G%f:%l: for each function it appears in.) +" %-GIn file included from %f:%l:%c: +" %-GIn file included from %f:%l:%c\, +" %-GIn file included from %f:%l:%c +" %-GIn file included from %f:%l +" %-G%*[ ]from %f:%l:%c +" %-G%*[ ]from %f:%l: +" %-G%*[ ]from %f:%l\, +" %-G%*[ ]from %f:%l +" %f:%l:%c:%m +" %f(%l):%m +" %f:%l:%m +" "%f"\, line %l%*\D%c%*[^ ] %m +" %D%*\a[%*\d]: Entering directory %*[`']%f' +" %X%*\a[%*\d]: Leaving directory %*[`']%f' +" %D%*\a: Entering directory %*[`']%f' +" %X%*\a: Leaving directory %*[`']%f' +" %DMaking %*\a in %f +" %f|%l| %m +" +" and sometimes it misfires, so let's fix it up a bit +" (TBH I don't even know what compiler produces filename(lineno) so why even +" have it?) +setlocal errorformat-=%f(%l):%m + +" Sometimes Vim gets confused about ISO-8601 timestamps and thinks they're +" filenames; this is a big hammer that ignores anything filename-like on lines +" that start with at least two spaces, possibly preceded by a number and +" optional punctuation +setlocal errorformat^=%+G%\\d%#%.%\\=\ \ %.%# + +" Similar, but when the entire line starts with a date +setlocal errorformat^=%+G\\d\\d\\d\\d-\\d\\d-\\d\\d\ \\d\\d:\\d\\d%.%# + +" make: *** [Makefile:14: target] Error 1 +setlocal errorformat^=%+Gmake:\ ***\ %.%# + +" FAILED tests.py::test_with_params[YYYY-MM-DD:HH:MM:SS] - Exception: bla bla +setlocal errorformat^=%+GFAILED\ %.%# + +" AssertionError: assert ...YYYY-MM-DD:HH:MM:SS... +setlocal errorformat^=%+GAssertionError:\ %.%# + +" --- /path/to/file:before YYYY-MM-DD HH:MM:SS.ssssss +setlocal errorformat^=---%f:%m + +" +++ /path/to/file:before YYYY-MM-DD HH:MM:SS.ssssss +setlocal errorformat^=+++%f:%m + +" Sometimes pytest prepends an 'E' marker at the beginning of a traceback line +setlocal errorformat+=E\ %#File\ \"%f\"\\,\ line\ %l%.%# + +" Python tracebacks (unittest + doctest output) {{{2 + +" This collapses the entire traceback into just the last file+lineno, +" which is convenient when you want to jump to the line that failed (and not +" the top-level entry point), but it makes it impossible to see the full +" traceback, which sucks. +""setlocal errorformat+= +"" \File\ \"%f\"\\,\ line\ %l%.%#, +"" \%C\ %.%#, +"" \%-A\ \ File\ \"unittest%.py\"\\,\ line\ %.%#, +"" \%-A\ \ File\ \"%f\"\\,\ line\ 0%.%#, +"" \%A\ \ File\ \"%f\"\\,\ line\ %l%.%#, +"" \%Z%[%^\ ]%\\@=%m +setlocal errorformat+=File\ \"%f\"\\,\ line\ %l\\,%#%m + +exe 'CompilerSet errorformat='..escape(&l:errorformat, ' \|"') + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 5d97f793f2..6d46458c0c 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1557,6 +1557,14 @@ Useful values for the 'makeprg' options therefore are: Also see http://vim.sourceforge.net/tip_view.php?tip_id=280. +PYTEST COMPILER *compiler-pytest* + +Commonly used compiler options can be added to 'makeprg' by setting the +b/g:pytest_makeprg_params variable. For example: > + + let b:pytest_makeprg_params = "--verbose --no-summary --disable-warnings" + +The global default is "--tb=short --quiet"; Python warnings are suppressed. TEX COMPILER *compiler-tex* diff --git a/runtime/doc/tags b/runtime/doc/tags index b550550268..d44dd81a84 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -6570,6 +6570,7 @@ compiler-mypy quickfix.txt /*compiler-mypy* compiler-pandoc quickfix.txt /*compiler-pandoc* compiler-perl quickfix.txt /*compiler-perl* compiler-pylint quickfix.txt /*compiler-pylint* +compiler-pytest quickfix.txt /*compiler-pytest* compiler-pyunit quickfix.txt /*compiler-pyunit* compiler-ruff quickfix.txt /*compiler-ruff* compiler-select quickfix.txt /*compiler-select* diff --git a/runtime/ftplugin/python.vim b/runtime/ftplugin/python.vim index c000296726..6f20468896 100644 --- a/runtime/ftplugin/python.vim +++ b/runtime/ftplugin/python.vim @@ -3,8 +3,9 @@ " Maintainer: Tom Picton " Previous Maintainer: James Sully " Previous Maintainer: Johannes Zellner -" Last Change: 2024/05/13 -" https://github.com/tpict/vim-ftplugin-python +" Repository: https://github.com/tpict/vim-ftplugin-python +" Last Change: 2024/05/13 +" 2024 Nov 30 use pytest compiler (#16130) if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -134,6 +135,11 @@ elseif executable('python') setlocal keywordprg=python\ -m\ pydoc endif +if expand('%:t') =~# '\v^test_.*\.py$|_test\.py$' && executable('pytest') + compiler pytest + let &l:makeprg .= ' %:S' +endif + " Script for filetype switching to undo the local stuff we may have changed let b:undo_ftplugin = 'setlocal cinkeys<' \ . '|setlocal comments<' @@ -148,6 +154,7 @@ let b:undo_ftplugin = 'setlocal cinkeys<' \ . '|setlocal softtabstop<' \ . '|setlocal suffixesadd<' \ . '|setlocal tabstop<' + \ . '|setlocal makeprg<' \ . '|silent! nunmap [M' \ . '|silent! nunmap [[' \ . '|silent! nunmap []' diff --git a/src/testdir/test_compiler.vim b/src/testdir/test_compiler.vim index d65080826b..71afe5c696 100644 --- a/src/testdir/test_compiler.vim +++ b/src/testdir/test_compiler.vim @@ -71,10 +71,10 @@ func Test_compiler_completion() call assert_match('^"compiler ' .. clist .. '$', @:) call feedkeys(":compiler p\\\"\", 'tx') - call assert_match('"compiler pandoc pbx perl\( p[a-z_]\+\)\+ pylint pyunit', @:) + call assert_match('"compiler pandoc pbx perl\( p[a-z_]\+\)\+ pyunit', @:) call feedkeys(":compiler! p\\\"\", 'tx') - call assert_match('"compiler! pandoc pbx perl\( p[a-z_]\+\)\+ pylint pyunit', @:) + call assert_match('"compiler! pandoc pbx perl\( p[a-z_]\+\)\+ pyunit', @:) endfunc func Test_compiler_error() diff --git a/src/version.c b/src/version.c index e3093a3db0..f83e5976de 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 898, /**/ 897, /**/ From c7a96d6d1a3beaae65f321852bf57e2853f34a2a Mon Sep 17 00:00:00 2001 From: RestorerZ Date: Sun, 1 Dec 2024 15:56:33 +0100 Subject: [PATCH 046/244] translation(ru): Updated messages translation closes: #16145 Signed-off-by: RestorerZ Signed-off-by: Christian Brabandt --- src/po/ru.cp1251.po | 83 +++++++++++++++++++++++++-------------------- src/po/ru.po | 83 +++++++++++++++++++++++++-------------------- 2 files changed, 92 insertions(+), 74 deletions(-) diff --git a/src/po/ru.cp1251.po b/src/po/ru.cp1251.po index bdcc69a036..d2beb8308d 100644 --- a/src/po/ru.cp1251.po +++ b/src/po/ru.cp1251.po @@ -22,18 +22,18 @@ # msgid "" msgstr "" -"Project-Id-Version: RuVim_0.9010733.170924\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-17 02:14+0300\n" -"PO-Revision-Date: 2024-09-17 02:16+0300\n" +"Project-Id-Version: RuVim_0.9010898.301124\n" +"Report-Msgid-Bugs-To: The Vim Project, \n" +"POT-Creation-Date: 2024-11-30 20:11+0300\n" +"PO-Revision-Date: 2024-11-30 20:26+0300\n" "Last-Translator: Restorer, \n" "Language-Team: RuVim, https://github.com/RestorerZ/RuVim\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CP1251\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" # #Restorer: âûâîäèòñÿ ïðè àíàëèçå (ïðîôèëèðîâàíèè) ïðîãðàììû, ôóíêöèè è ò. ï. # ~!: earlier @@ -216,31 +216,27 @@ msgstr "%d %%" # #Restorer: âûâîäèòñÿ â çàãîëîâêå îêíà, ñòðîêå ñîñòîÿíèÿ, êîìíäíîé ñòðîêå ïðè # #Restorer: ðåäàêòèðîâàíèè íåñêîëüêèõ ôàéëîâ -# ~!: Restorer #, c-format msgid " (%d of %d)" msgstr " (%d èç %d)" # #Restorer: âûâîäèòñÿ â çàãîëîâêå îêíà, ñòðîêå ñîñòîÿíèÿ, êîìíäíîé ñòðîêå ïðè # #Restorer: ðåäàêòèðîâàíèè íåñêîëüêèõ ôàéëîâ -# ~!: Restorer #, c-format msgid " ((%d) of %d)" msgstr " ((%d) èç %d)" # #Restorer: âûâîäèòñÿ â çàãîëîâêå îêíà, ñòðîêå ñîñòîÿíèÿ, êîìíäíîé ñòðîêå ïðè # #Restorer: ðåäàêòèðîâàíèè íåñêîëüêèõ ôàéëîâ -# ~!: Restorer #, c-format msgid " (file %d of %d)" -msgstr " (ôàéë %d èç %d" +msgstr " (ôàéë %d èç %d)" # #Restorer: âûâîäèòñÿ â çàãîëîâêå îêíà, ñòðîêå ñîñòîÿíèÿ, êîìíäíîé ñòðîêå ïðè # #Restorer: ðåäàêòèðîâàíèè íåñêîëüêèõ ôàéëîâ -# ~!: Restorer #, c-format msgid " (file (%d) of %d)" -msgstr " (ôàéë (%d) èç %d" +msgstr " (ôàéë (%d) èç %d)" msgid "[Command Line]" msgstr "[êîìàíäíàÿ ñòðîêà]" @@ -435,8 +431,8 @@ msgstr "XChaCha20v2: msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "" -"Âûïîëíåíî ïåðåêëþ÷åíèå â ðåæèì äèàãíîñòèêè. ×òîáû ïðîäîëæèòü, íàáåðèòå \"cont" -"\"" +"Âûïîëíåíî ïåðåêëþ÷åíèå â ðåæèì äèàãíîñòèêè. ×òîáû ïðîäîëæèòü, íàáåðèòå " +"\"cont\"" # #Restorer: êîìàíäû `:debug`; âûâîäèòñÿ ïðè èçìåíåíèè â òî÷êå îñòàíîâà #, c-format @@ -494,8 +490,8 @@ msgstr " #, c-format msgid "Not enough memory to use internal diff for buffer \"%s\"" msgstr "" -"Âñòðîåííîìó ìåõàíèçìó ñðàâíåíèÿ íåäîñòàòî÷íî ïàìÿòè íà ñ÷èòûâàíèå áóôåðà \"%s" -"\"" +"Âñòðîåííîìó ìåõàíèçìó ñðàâíåíèÿ íåäîñòàòî÷íî ïàìÿòè íà ñ÷èòûâàíèå áóôåðà " +"\"%s\"" # #Restorer: âûâîäèòñÿ â çàãîëîâêå îêíà âûáîðà ôàéëà msgid "Patch file" @@ -1110,8 +1106,8 @@ msgstr " #, c-format msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" msgstr "" -"W16: Âíèìàíèå! Ïîñëå ñ÷èòûâàíèÿ â áóôåð, èçìåíåíû ïðàâà äîñòóïà ê ôàéëó \"%s" -"\"" +"W16: Âíèìàíèå! Ïîñëå ñ÷èòûâàíèÿ â áóôåð, èçìåíåíû ïðàâà äîñòóïà ê ôàéëó " +"\"%s\"" msgid "See \":help W16\" for more info." msgstr "×òîáû ïîëó÷èòü äîïîëíèòåëüíóþ èíôîðìàöèþ, íàáåðèòå `:help W16`" @@ -2838,6 +2834,12 @@ msgstr "-- msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit " msgstr " SPACE/d/j - âíèç, b/u/k - ââåðõ íà ýêðàí/ñòðàíèöó/ñòðîêó; q - îòáîé " +msgid "W23: Clipboard register not available, using register 0" +msgstr "W23: Ðåãèñòð áóôåðà îáìåíà íå äîñòóïåí. Áóäåò èñïîëüçîâàí ðåãèñò 0" + +msgid "W24: Clipboard register not available. See :h W24" +msgstr "W24: Ðåãèñòð áóôåðà îáìåíà íå äîñòóïåí. Ïîäðîáíåå ñì. :h W24" + # #Restorer: çàãîëîâîê îêíà msgid "Question" msgstr "Çàïðîñ" @@ -2956,7 +2958,7 @@ msgstr[0] "%d msgstr[1] "%d ñòðîêè èçìåíåíî" msgstr[2] "%d ñòðîê èçìåíåíî" -# #Restorer: äîáàâëÿåòñÿ ê ñîîáùåíèþ î ïîçèöèè êàðåòêè ïðè áëîêîâîì âûäåëåíèè +# #Restorer: äîáàâëÿåòñÿ ê ñîîáùåíèþ î ïîçèöèè êàðåòêè ïðè âûäåëåíèè áëîêà #, c-format msgid "%ld Cols; " msgstr "êîëîíîê %ld; " @@ -3407,7 +3409,7 @@ msgstr " # #Restorer: íàèìåíîâàíèå ðåæèìà. Âûâîäèòñÿ â êîìàíäíîé ñòðîêå ïî êîìàíäå # #Restorer: `ctrl+v` msgid " VISUAL BLOCK" -msgstr " ÐÅÆÈÌ ÂÈÇÓÀËÜÍÛÉ ÁËÎÊÎÂÛÉ" +msgstr " ÐÅÆÈÌ ÂÈÇÓÀËÜÍÛÉ ÁËÎ×ÍÛÉ" # #Restorer: íàèìåíîâàíèå ðåæèìà. Âûâîäèòñÿ â êîìàíäíîé ñòðîêå ïî êîìàíäå `g h` msgid " SELECT" @@ -3421,7 +3423,7 @@ msgstr " # #Restorer: íàèìåíîâàíèå ðåæèìà. Âûâîäèòñÿ â êîìàíäíîé ñòðîêå ïî êîìàíäå # #Restorer: `g ctrl+h` msgid " SELECT BLOCK" -msgstr " ÐÅÆÈÌ ÂÛÁÎÐÊÈ ÁËÎÊÎÂÛÉ" +msgstr " ÐÅÆÈÌ ÂÛÁÎÐÊÈ ÁËÎ×ÍÛÉ" # #Restorer: íàèìåíîâàíèå ðåæèìà. Âûâîäèòñÿ â êîìàíäíîé ñòðîêå ïî êîìàíäå `q` msgid "recording" @@ -3856,7 +3858,7 @@ msgstr " # #Restorer: ñ âåðñèè 8.2 ïîäñòàâëÿåòñÿ íàèìåíîâàíèÿ ñæèìàåìîãî «äåðåâà» - %s #, c-format msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining" -msgstr "Ñæàòî óçëîâ %s: %ld èç %ld. Îñòàëîñü %ld (%ld%%)" +msgstr "Ñæàòî óçëîâ %s: %ld èç %ld. Îñòàëîñü %ld (%ld %%)" msgid "Reading back spell file..." msgstr "Ñ÷èòûâàíèå çàïèñàííîãî ôàéëà ïðàâèë íàïèñàíèÿ..." @@ -4480,9 +4482,8 @@ msgstr " msgid " system vimrc file: \"" msgstr " îáùåñèñòåìíûé ôàéë vimrc: \"" -# ~!: earlier msgid " user vimrc file: \"" -msgstr " ïîëüçîâàòåëüñêèé ôàéë vimrc: \"" +msgstr " 1-ûé ïîëüçîâàòåëüñêèé ôàéë vimrc: \"" msgid " 2nd user vimrc file: \"" msgstr " 2-îé ïîëüçîâàòåëüñêèé ôàéë vimrc: \"" @@ -4493,9 +4494,8 @@ msgstr " 3- msgid " 4th user vimrc file: \"" msgstr " 4-ûé ïîëüçîâàòåëüñêèé ôàéë vimrc: \"" -# ~!: earlier msgid " user exrc file: \"" -msgstr " ïîëüçîâàòåëüñêèé ôàéë exrc: \"" +msgstr " 1-ûé ïîëüçîâàòåëüñêèé ôàéë exrc: \"" # ~!: earlier msgid " 2nd user exrc file: \"" @@ -4505,9 +4505,8 @@ msgstr " 2- msgid " system gvimrc file: \"" msgstr " îáùåñèñòåìíûé ôàéë gvimrc: \"" -# ~!: earlier msgid " user gvimrc file: \"" -msgstr " ïîëüçîâàòåëüñêèé ôàéë gvimrc: \"" +msgstr " 1-ûé ïîëüçîâàòåëüñêèé ôàéë gvimrc: \"" # ~!: earlier msgid "2nd user gvimrc file: \"" @@ -5089,7 +5088,7 @@ msgstr "E69: #, c-format msgid "E70: Empty %s%%[]" -msgstr "E70: Îòñóòñòâóþò ýëåìåíòû â êëàññå ôàêóëüòàòèâíûõ ýëåìåíòîâ %s%%[]" +msgstr "E70: Îòñóòñòâóþò çàïèñè â êëàññå ôàêóëüòàòèâíûõ ýëåìåíòîâ %s%%[]" #, c-format msgid "E71: Invalid character after %s%%" @@ -9929,8 +9928,8 @@ msgstr "" "\"%s\"" msgid "" -"E1368: Static must be followed by \"var\" or \"def\" or \"final\" or \"const" -"\"" +"E1368: Static must be followed by \"var\" or \"def\" or \"final\" or " +"\"const\"" msgstr "" "E1368: Ïîñëå êëþ÷åâîãî ñëîâà \"static\" òðåáóåòñÿ êîìàíäà :var èëè :def, " "ëèáî êëþ÷åâîå ñëîâî \"final\" èëè \"const\"" @@ -9948,8 +9947,8 @@ msgstr "E1371: #, c-format msgid "E1372: Abstract method \"%s\" cannot be defined in a concrete class" msgstr "" -"E1372: Íå äîïóñêàåòñÿ îïðåäåëåíèå â ðåàëüíîì êëàññå àáñòðàêòíîãî ìåòîäà \"%s" -"\"" +"E1372: Íå äîïóñêàåòñÿ îïðåäåëåíèå â ðåàëüíîì êëàññå àáñòðàêòíîãî ìåòîäà " +"\"%s\"" #, c-format msgid "E1373: Abstract method \"%s\" is not implemented" @@ -10021,8 +10020,8 @@ msgid "" "E1390: Cannot use an object variable \"this.%s\" except with the \"new\" " "method" msgstr "" -"E1390: Ïåðåìåííàÿ îáúåêòà \"this.%s\" ìîæåò óêàçûâàòüñÿ òîëüêî â ìåòîäå \"new" -"\"" +"E1390: Ïåðåìåííàÿ îáúåêòà \"this.%s\" ìîæåò óêàçûâàòüñÿ òîëüêî â ìåòîäå " +"\"new\"" #, c-format msgid "E1391: Cannot (un)lock variable \"%s\" in class \"%s\"" @@ -10080,8 +10079,8 @@ msgstr "E1408: #, c-format msgid "E1409: Cannot change read-only variable \"%s\" in class \"%s\"" msgstr "" -"E1409: Íå äîïóñêàåòñÿ èçìåíåíèå äîñòóïíîé òîëüêî äëÿ ÷òåíèÿ ïåðåìåííîé \"%s" -"\" êëàññà \"%s\"" +"E1409: Íå äîïóñêàåòñÿ èçìåíåíèå äîñòóïíîé òîëüêî äëÿ ÷òåíèÿ ïåðåìåííîé " +"\"%s\" êëàññà \"%s\"" msgid "E1410: Const variable not supported in an interface" msgstr "E1410: Èíòåðôåéñû íå ïîääåðæèâàþò êîíñòàíòíûå ïåðåìåííûå" @@ -10220,6 +10219,10 @@ msgstr "E1512: msgid "E1513: Cannot switch buffer. 'winfixbuf' is enabled" msgstr "E1513: Íå óäàëîñü ñìåíèòü áóôåð. Óñòàíîâëåí ïàðàìåòð 'winfixbuf'" +msgid "E1514: 'findfunc' did not return a List type" +msgstr "" +"E1514: Ïîëó÷åííûå îò ïàðàìåòðà 'findfunc' äàííûå íå ÿâëÿþòñÿ òèïîì List" + # #Restorer: âûâîäèòñÿ, íàïðèìåð, ïî êîìàíäå `CTRL+g`, `g CTRL+g` è ò. ï. msgid "--No lines in buffer--" msgstr "-- Áóôåð íå ñîäåðæèò òåêñò --" @@ -11327,6 +11330,9 @@ msgstr "" msgid "list of flags to make messages shorter" msgstr "ôëàãè, óïðàâëÿþùèå êîëè÷åñòâîì îòîáðàæàåìûõ ñîîáùåíèé ïðîãðàììû" +msgid "how many messages are remembered" +msgstr "êîëè÷åñòâî çàïîìèíàåìûõ ñîîáùåíèé" + msgid "show (partial) command keys in location given by 'showcmdloc'" msgstr "" "îòîáðàæåíèå íàáðàííûõ êîìàíä òàì, ãäå óêàçàííî â ïàðàìåòðå\n" @@ -11455,6 +11461,9 @@ msgstr " msgid "whether to use a popup menu for Insert mode completion" msgstr "èñïîëüçîâàòü âñïëûâàþùåå ìåíþ ïðè ïîäñòàíîâêå â ðåæèìå âñòàâêè" +msgid "popup menu item align order" +msgstr "ïîðÿäîê îòîáðàæåíèÿ ýëåìåíòîâ âî âñïëûâàþùåì ìåíþ ïðè ïîäñòàíîâêå" + msgid "options for the Insert mode completion info popup" msgstr "èíôîðìàöèÿ âî âñïëûâàþùåì ìåíþ ïðè ïîäñòàíîâêå â ðåæèìå âñòàâêè" diff --git a/src/po/ru.po b/src/po/ru.po index bb9753cb6d..e2b5f04259 100644 --- a/src/po/ru.po +++ b/src/po/ru.po @@ -22,18 +22,18 @@ # msgid "" msgstr "" -"Project-Id-Version: RuVim_0.9010733.170924\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-17 02:14+0300\n" -"PO-Revision-Date: 2024-09-17 02:16+0300\n" +"Project-Id-Version: RuVim_0.9010898.301124\n" +"Report-Msgid-Bugs-To: The Vim Project, \n" +"POT-Creation-Date: 2024-11-30 20:11+0300\n" +"PO-Revision-Date: 2024-11-30 20:26+0300\n" "Last-Translator: Restorer, \n" "Language-Team: RuVim, https://github.com/RestorerZ/RuVim\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" # #Restorer: выводитÑÑ Ð¿Ñ€Ð¸ анализе (профилировании) программы, функции и Ñ‚. п. # ~!: earlier @@ -216,31 +216,27 @@ msgstr "%d %%" # #Restorer: выводитÑÑ Ð² заголовке окна, Ñтроке ÑоÑтоÑниÑ, комндной Ñтроке при # #Restorer: редактировании неÑкольких файлов -# ~!: Restorer #, c-format msgid " (%d of %d)" msgstr " (%d из %d)" # #Restorer: выводитÑÑ Ð² заголовке окна, Ñтроке ÑоÑтоÑниÑ, комндной Ñтроке при # #Restorer: редактировании неÑкольких файлов -# ~!: Restorer #, c-format msgid " ((%d) of %d)" msgstr " ((%d) из %d)" # #Restorer: выводитÑÑ Ð² заголовке окна, Ñтроке ÑоÑтоÑниÑ, комндной Ñтроке при # #Restorer: редактировании неÑкольких файлов -# ~!: Restorer #, c-format msgid " (file %d of %d)" -msgstr " (файл %d из %d" +msgstr " (файл %d из %d)" # #Restorer: выводитÑÑ Ð² заголовке окна, Ñтроке ÑоÑтоÑниÑ, комндной Ñтроке при # #Restorer: редактировании неÑкольких файлов -# ~!: Restorer #, c-format msgid " (file (%d) of %d)" -msgstr " (файл (%d) из %d" +msgstr " (файл (%d) из %d)" msgid "[Command Line]" msgstr "[ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока]" @@ -435,8 +431,8 @@ msgstr "XChaCha20v2: Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° применён ÑÑ‚ msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "" -"Выполнено переключение в режим диагноÑтики. Чтобы продолжить, наберите \"cont" -"\"" +"Выполнено переключение в режим диагноÑтики. Чтобы продолжить, наберите " +"\"cont\"" # #Restorer: команды `:debug`; выводитÑÑ Ð¿Ñ€Ð¸ изменении в точке оÑтанова #, c-format @@ -494,8 +490,8 @@ msgstr "аргумента функции extend()" #, c-format msgid "Not enough memory to use internal diff for buffer \"%s\"" msgstr "" -"Ð’Ñтроенному механизму ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтаточно памÑти на Ñчитывание буфера \"%s" -"\"" +"Ð’Ñтроенному механизму ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтаточно памÑти на Ñчитывание буфера " +"\"%s\"" # #Restorer: выводитÑÑ Ð² заголовке окна выбора файла msgid "Patch file" @@ -1110,8 +1106,8 @@ msgstr "Чтобы получить дополнительную информа #, c-format msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" msgstr "" -"W16: Внимание! ПоÑле ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð² буфер, изменены права доÑтупа к файлу \"%s" -"\"" +"W16: Внимание! ПоÑле ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð² буфер, изменены права доÑтупа к файлу " +"\"%s\"" msgid "See \":help W16\" for more info." msgstr "Чтобы получить дополнительную информацию, наберите `:help W16`" @@ -2838,6 +2834,12 @@ msgstr "-- Далее --" msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit " msgstr " SPACE/d/j - вниз, b/u/k - вверх на Ñкран/Ñтраницу/Ñтроку; q - отбой " +msgid "W23: Clipboard register not available, using register 0" +msgstr "W23: РегиÑÑ‚Ñ€ буфера обмена не доÑтупен. Будет иÑпользован региÑÑ‚ 0" + +msgid "W24: Clipboard register not available. See :h W24" +msgstr "W24: РегиÑÑ‚Ñ€ буфера обмена не доÑтупен. Подробнее Ñм. :h W24" + # #Restorer: заголовок окна msgid "Question" msgstr "ЗапроÑ" @@ -2956,7 +2958,7 @@ msgstr[0] "%d Ñтрока изменена" msgstr[1] "%d Ñтроки изменено" msgstr[2] "%d Ñтрок изменено" -# #Restorer: добавлÑетÑÑ Ðº Ñообщению о позиции каретки при блоковом выделении +# #Restorer: добавлÑетÑÑ Ðº Ñообщению о позиции каретки при выделении блока #, c-format msgid "%ld Cols; " msgstr "колонок %ld; " @@ -3407,7 +3409,7 @@ msgstr " РЕЖИМ ВИЗУÐЛЬÐЫЙ ПОСТРОЧÐЫЙ" # #Restorer: наименование режима. ВыводитÑÑ Ð² командной Ñтроке по команде # #Restorer: `ctrl+v` msgid " VISUAL BLOCK" -msgstr " РЕЖИМ ВИЗУÐЛЬÐЫЙ БЛОКОВЫЙ" +msgstr " РЕЖИМ ВИЗУÐЛЬÐЫЙ БЛОЧÐЫЙ" # #Restorer: наименование режима. ВыводитÑÑ Ð² командной Ñтроке по команде `g h` msgid " SELECT" @@ -3421,7 +3423,7 @@ msgstr " РЕЖИМ ВЫБОРКИ ПОСТРОЧÐЫЙ" # #Restorer: наименование режима. ВыводитÑÑ Ð² командной Ñтроке по команде # #Restorer: `g ctrl+h` msgid " SELECT BLOCK" -msgstr " РЕЖИМ ВЫБОРКИ БЛОКОВЫЙ" +msgstr " РЕЖИМ ВЫБОРКИ БЛОЧÐЫЙ" # #Restorer: наименование режима. ВыводитÑÑ Ð² командной Ñтроке по команде `q` msgid "recording" @@ -3856,7 +3858,7 @@ msgstr "Ðе обработано Ñлов Ñ Ñимволами, не вход # #Restorer: Ñ Ð²ÐµÑ€Ñии 8.2 подÑтавлÑетÑÑ Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñжимаемого «дерева» - %s #, c-format msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining" -msgstr "Сжато узлов %s: %ld из %ld. ОÑталоÑÑŒ %ld (%ld%%)" +msgstr "Сжато узлов %s: %ld из %ld. ОÑталоÑÑŒ %ld (%ld %%)" msgid "Reading back spell file..." msgstr "Считывание запиÑанного файла правил напиÑаниÑ..." @@ -4480,9 +4482,8 @@ msgstr " Ð’ Ñтой верÑии включены (+) и отключены (-) msgid " system vimrc file: \"" msgstr " общеÑиÑтемный файл vimrc: \"" -# ~!: earlier msgid " user vimrc file: \"" -msgstr " пользовательÑкий файл vimrc: \"" +msgstr " 1-ый пользовательÑкий файл vimrc: \"" msgid " 2nd user vimrc file: \"" msgstr " 2-ой пользовательÑкий файл vimrc: \"" @@ -4493,9 +4494,8 @@ msgstr " 3-ий пользовательÑкий файл vimrc: \"" msgid " 4th user vimrc file: \"" msgstr " 4-ый пользовательÑкий файл vimrc: \"" -# ~!: earlier msgid " user exrc file: \"" -msgstr " пользовательÑкий файл exrc: \"" +msgstr " 1-ый пользовательÑкий файл exrc: \"" # ~!: earlier msgid " 2nd user exrc file: \"" @@ -4505,9 +4505,8 @@ msgstr " 2-ой пользовательÑкий файл exrc: \"" msgid " system gvimrc file: \"" msgstr " общеÑиÑтемный файл gvimrc: \"" -# ~!: earlier msgid " user gvimrc file: \"" -msgstr " пользовательÑкий файл gvimrc: \"" +msgstr " 1-ый пользовательÑкий файл gvimrc: \"" # ~!: earlier msgid "2nd user gvimrc file: \"" @@ -5089,7 +5088,7 @@ msgstr "E69: ОтÑутÑтвует Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð°Ñ #, c-format msgid "E70: Empty %s%%[]" -msgstr "E70: ОтÑутÑтвуют Ñлементы в клаÑÑе факультативных Ñлементов %s%%[]" +msgstr "E70: ОтÑутÑтвуют запиÑи в клаÑÑе факультативных Ñлементов %s%%[]" #, c-format msgid "E71: Invalid character after %s%%" @@ -9929,8 +9928,8 @@ msgstr "" "\"%s\"" msgid "" -"E1368: Static must be followed by \"var\" or \"def\" or \"final\" or \"const" -"\"" +"E1368: Static must be followed by \"var\" or \"def\" or \"final\" or " +"\"const\"" msgstr "" "E1368: ПоÑле ключевого Ñлова \"static\" требуетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° :var или :def, " "либо ключевое Ñлово \"final\" или \"const\"" @@ -9948,8 +9947,8 @@ msgstr "E1371: ПоÑле ключевого Ñлова \"abstract\" требу #, c-format msgid "E1372: Abstract method \"%s\" cannot be defined in a concrete class" msgstr "" -"E1372: Ðе допуÑкаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ в реальном клаÑÑе абÑтрактного метода \"%s" -"\"" +"E1372: Ðе допуÑкаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ в реальном клаÑÑе абÑтрактного метода " +"\"%s\"" #, c-format msgid "E1373: Abstract method \"%s\" is not implemented" @@ -10021,8 +10020,8 @@ msgid "" "E1390: Cannot use an object variable \"this.%s\" except with the \"new\" " "method" msgstr "" -"E1390: ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"this.%s\" может указыватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в методе \"new" -"\"" +"E1390: ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"this.%s\" может указыватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в методе " +"\"new\"" #, c-format msgid "E1391: Cannot (un)lock variable \"%s\" in class \"%s\"" @@ -10080,8 +10079,8 @@ msgstr "E1408: ИнтерфейÑÑ‹ не поддерживают финализ #, c-format msgid "E1409: Cannot change read-only variable \"%s\" in class \"%s\"" msgstr "" -"E1409: Ðе допуÑкаетÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ доÑтупной только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ \"%s" -"\" клаÑÑа \"%s\"" +"E1409: Ðе допуÑкаетÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ доÑтупной только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ " +"\"%s\" клаÑÑа \"%s\"" msgid "E1410: Const variable not supported in an interface" msgstr "E1410: ИнтерфейÑÑ‹ не поддерживают конÑтантные переменные" @@ -10220,6 +10219,10 @@ msgstr "E1512: Ð’ данном поле не поддерживаютÑÑ Ð¿Ð¾Ð» msgid "E1513: Cannot switch buffer. 'winfixbuf' is enabled" msgstr "E1513: Ðе удалоÑÑŒ Ñменить буфер. УÑтановлен параметр 'winfixbuf'" +msgid "E1514: 'findfunc' did not return a List type" +msgstr "" +"E1514: Полученные от параметра 'findfunc' данные не ÑвлÑÑŽÑ‚ÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼ List" + # #Restorer: выводитÑÑ, например, по команде `CTRL+g`, `g CTRL+g` и Ñ‚. п. msgid "--No lines in buffer--" msgstr "-- Буфер не Ñодержит текÑÑ‚ --" @@ -11327,6 +11330,9 @@ msgstr "" msgid "list of flags to make messages shorter" msgstr "флаги, управлÑющие количеÑтвом отображаемых Ñообщений программы" +msgid "how many messages are remembered" +msgstr "количеÑтво запоминаемых Ñообщений" + msgid "show (partial) command keys in location given by 'showcmdloc'" msgstr "" "отображение набранных команд там, где указанно в параметре\n" @@ -11455,6 +11461,9 @@ msgstr "работа команд CTRL+N и CTRL+P при подÑтановке msgid "whether to use a popup menu for Insert mode completion" msgstr "иÑпользовать вÑплывающее меню при подÑтановке в режиме вÑтавки" +msgid "popup menu item align order" +msgstr "порÑдок Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñлементов во вÑплывающем меню при подÑтановке" + msgid "options for the Insert mode completion info popup" msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð¾ вÑплывающем меню при подÑтановке в режиме вÑтавки" From c74a87eea2cffe911dc5741ca29199165bea631e Mon Sep 17 00:00:00 2001 From: "D. Ben Knoble" Date: Sun, 1 Dec 2024 16:06:18 +0100 Subject: [PATCH 047/244] runtime(helptoc): reload cached g:helptoc.shell_prompt when starting toc Follow up on PR 10446 [1] so that changes at run-time (or after loading a vimrc) are reflected at next use. Instead of "uncaching" the variable by computing SHELL_PROMPT on each use, which could negatively impact performance, reload any user settings before creating the TOC. Also make sure, changes to the shell prompt variable do correctly invalidate b:toc, so that the table of content is correctly re-created after user makes any changes. [1]: https://github.com/vim/vim/pull/10446#issuecomment-2485169333 closes: #16097 Signed-off-by: D. Ben Knoble Signed-off-by: Christian Brabandt --- .../dist/opt/helptoc/autoload/helptoc.vim | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim b/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim index 087da798e9..c0d86a4e63 100644 --- a/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim +++ b/runtime/pack/dist/opt/helptoc/autoload/helptoc.vim @@ -2,9 +2,20 @@ vim9script noclear # Config {{{1 -const SHELL_PROMPT: string = g: - ->get('helptoc', {}) - ->get('shell_prompt', '^\w\+@\w\+:\f\+\$\s') +var SHELL_PROMPT: string = '' + +def UpdateUserSettings() #{{{2 + var new_prompt: string = g: + ->get('helptoc', {}) + ->get('shell_prompt', '^\w\+@\w\+:\f\+\$\s') + if new_prompt != SHELL_PROMPT + SHELL_PROMPT = new_prompt + # invalidate cache: user config has changed + unlet! b:toc + endif +enddef + +UpdateUserSettings() # Init {{{1 @@ -141,6 +152,8 @@ export def Open() #{{{2 return endif + UpdateUserSettings() + # invalidate the cache if the buffer's contents has changed if exists('b:toc') && &filetype != 'man' if b:toc.changedtick != b:changedtick From 959ef61430bdd8fb982b38bd3347d90251255cfc Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Sun, 1 Dec 2024 16:25:53 +0100 Subject: [PATCH 048/244] patch 9.1.0899: default for 'backspace' can be set in C code Problem: default for 'backspace' can be set in C code Solution: promote the default for 'backspace' from defaults.vim to the C code (Luca Saccarola) closes: #16143 Signed-off-by: Luca Saccarola Signed-off-by: Christian Brabandt --- runtime/defaults.vim | 5 +---- runtime/doc/options.txt | 3 +-- runtime/doc/version9.txt | 2 ++ src/optiondefs.h | 4 ++-- src/testdir/test_autocmd.vim | 4 ++-- src/testdir/test_digraph.vim | 3 +++ src/testdir/test_ins_complete.vim | 2 +- src/testdir/test_options.vim | 2 +- src/version.c | 2 ++ 9 files changed, 15 insertions(+), 12 deletions(-) diff --git a/runtime/defaults.vim b/runtime/defaults.vim index 82f3358962..38b03da11d 100644 --- a/runtime/defaults.vim +++ b/runtime/defaults.vim @@ -1,7 +1,7 @@ " The default vimrc file. " " Maintainer: The Vim Project -" Last Change: 2024 Nov 14 +" Last Change: 2024 Dec 01 " Former Maintainer: Bram Moolenaar " " This is loaded if no vimrc file was found. @@ -33,9 +33,6 @@ silent! while 0 set nocompatible silent! endwhile -" Allow backspacing over everything in insert mode. -set backspace=indent,eol,start - set ruler " show the cursor position all the time set showcmd " display incomplete commands diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 05c2d9d4c3..764b4ab337 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1069,8 +1069,7 @@ A jump table for the options with a short description can be found at |Q_op|. done with ":syntax on". *'backspace'* *'bs'* -'backspace' 'bs' string (default "", set to "indent,eol,start" - in |defaults.vim|) +'backspace' 'bs' string (Vim default: "indent,eol,start", Vi default: "") global Influences the working of , , CTRL-W and CTRL-U in Insert mode. This is a list of items, separated by commas. Each item allows diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index b9977a9f2c..2aadcd3f4f 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -41611,6 +41611,8 @@ Changed~ - 'rulerformat' now supports the |stl-%!| item - the default 'history' option value has been increased to 200 and removed from |defaults.vim| +- the default 'backspace' option for Vim has been set to "indent,eol,start" + and removed from |defaults.vim| *added-9.2* Added ~ diff --git a/src/optiondefs.h b/src/optiondefs.h index ca085d42c2..2959232d06 100644 --- a/src/optiondefs.h +++ b/src/optiondefs.h @@ -414,9 +414,9 @@ static struct vimoption options[] = (char_u *)"light", #endif (char_u *)0L} SCTX_INIT}, - {"backspace", "bs", P_STRING|P_VI_DEF|P_VIM|P_ONECOMMA|P_NODUP, + {"backspace", "bs", P_STRING|P_VIM|P_ONECOMMA|P_NODUP, (char_u *)&p_bs, PV_NONE, did_set_backspace, expand_set_backspace, - {(char_u *)"", (char_u *)0L} SCTX_INIT}, + {(char_u *)"", (char_u *)"indent,eol,start"} SCTX_INIT}, {"backup", "bk", P_BOOL|P_VI_DEF|P_VIM, (char_u *)&p_bk, PV_NONE, NULL, NULL, {(char_u *)FALSE, (char_u *)0L} SCTX_INIT}, diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim index 531aa6b96b..d6f8ef4cee 100644 --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -1279,8 +1279,8 @@ func Test_OptionSet() call assert_equal(g:opt[0], g:opt[1]) " 14: Setting option backspace through :let" - let g:options = [['backspace', '', '', '', 'eol,indent,start', 'global', 'set']] - let &bs = "eol,indent,start" + let g:options = [['backspace', 'indent,eol,start', 'indent,eol,start', 'indent,eol,start', '', 'global', 'set']] + let &bs = '' call assert_equal([], g:options) call assert_equal(g:opt[0], g:opt[1]) diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim index 3312faf31f..16eb0b1583 100644 --- a/src/testdir/test_digraph.vim +++ b/src/testdir/test_digraph.vim @@ -250,9 +250,12 @@ func Test_digraphs_option() call Put_Dig_BS("P","=") call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.'))) " Not a digraph: this is different from ! + let _bs = &bs + set bs= call Put_Dig_BS("a","\") call Put_Dig_BS("\","a") call assert_equal(['','a'], getline(line('.')-1,line('.'))) + let &bs = _bs " Grave call Put_Dig_BS("a","!") call Put_Dig_BS("!","e") diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index fd4c7cded5..7829f79fbb 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -1431,7 +1431,7 @@ func Test_complete_item_refresh_always() set completefunc=Tcomplete exe "normal! iup\\\\\\\" call assert_equal('up', getline(1)) - call assert_equal(2, g:CallCount) + call assert_equal(6, g:CallCount) set completeopt& set completefunc& bw! diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index fa75204cfc..cd66cdfaeb 100644 --- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -486,7 +486,7 @@ func Test_set_completion_string_values() " but don't exhaustively validate their results. call assert_equal('single', getcompletion('set ambw=', 'cmdline')[0]) call assert_match('light\|dark', getcompletion('set bg=', 'cmdline')[1]) - call assert_equal('indent', getcompletion('set backspace=', 'cmdline')[0]) + call assert_equal('indent,eol,start', getcompletion('set backspace=', 'cmdline')[0]) call assert_equal('yes', getcompletion('set backupcopy=', 'cmdline')[1]) call assert_equal('backspace', getcompletion('set belloff=', 'cmdline')[1]) call assert_equal('min:', getcompletion('set briopt=', 'cmdline')[1]) diff --git a/src/version.c b/src/version.c index f83e5976de..7558bdc1b1 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 899, /**/ 898, /**/ From 768728b48751c5e937409d12d98bfa1fb4c37266 Mon Sep 17 00:00:00 2001 From: dundargoc Date: Sun, 1 Dec 2024 20:06:42 +0100 Subject: [PATCH 049/244] runtime(doc): Update documentation for "noselect" in 'completeopt' In particular, make the distinction and interaction between "noinsert" and "noselect" clearer as it was very confusing before. closes: #16148 Signed-off-by: dundargoc Signed-off-by: Christian Brabandt --- runtime/doc/options.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 764b4ab337..1de1057b22 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Nov 27 +*options.txt* For Vim version 9.1. Last change: 2024 Dec 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2154,9 +2154,9 @@ A jump table for the options with a short description can be found at |Q_op|. a match from the menu. Only works in combination with "menu" or "menuone". No effect if "longest" is present. - noselect Do not select a match in the menu, force the user to - select one from the menu. Only works in combination with - "menu" or "menuone". + noselect Same as "noinsert", except that no menu item is + pre-selected. If both "noinsert" and "noselect" are present, + "noselect" has precedence. fuzzy Enable |fuzzy-matching| for completion candidates. This allows for more flexible and intuitive matching, where From 9a39483adb418e37c672000a58792c0f0e8aa662 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Sun, 1 Dec 2024 20:12:26 +0100 Subject: [PATCH 050/244] runtime(typst): provide a formatlistpat in ftplugin closes: #16134 Signed-off-by: Luca Saccarola Signed-off-by: Gregory Anders Signed-off-by: Christian Brabandt --- runtime/ftplugin/typst.vim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/runtime/ftplugin/typst.vim b/runtime/ftplugin/typst.vim index 3841e427f3..09b65d0e52 100644 --- a/runtime/ftplugin/typst.vim +++ b/runtime/ftplugin/typst.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Typst " Maintainer: Gregory Anders -" Last Change: 2024 Oct 21 +" Last Change: 2024 Dev 01 " Based on: https://github.com/kaarmu/typst.vim if exists('b:did_ftplugin') @@ -11,10 +11,12 @@ let b:did_ftplugin = 1 setlocal commentstring=//\ %s setlocal comments=s1:/*,mb:*,ex:*/,:// -setlocal formatoptions+=croq +setlocal formatoptions+=croqn +setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s* +setlocal formatlistpat+=\\\|^\\s*[-+\]\\s\\+ setlocal suffixesadd=.typ -let b:undo_ftplugin = 'setl cms< com< fo< sua<' +let b:undo_ftplugin = 'setl cms< com< fo< flp< sua<' if get(g:, 'typst_conceal', 0) setlocal conceallevel=2 From 198ada3d9f48c6556d20c4115ec500555b118aad Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Mon, 2 Dec 2024 19:58:51 +0100 Subject: [PATCH 051/244] patch 9.1.0900: Vim9: digraph_getlist() does not accept bool arg Problem: Vim9: digraph_getlist() does not accept bool argument (Maxim Kim) Solution: accept boolean as first argument (Yegappan Lakshmanan) fixes: #16154 closes: #16159 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/digraph.c | 7 ++----- src/testdir/test_digraph.vim | 4 +++- src/testdir/test_vim9_builtin.vim | 12 ++++++++++++ src/version.c | 2 ++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/digraph.c b/src/digraph.c index f19e58ec79..32b36be228 100644 --- a/src/digraph.c +++ b/src/digraph.c @@ -2115,18 +2115,15 @@ f_digraph_getlist(typval_T *argvars, typval_T *rettv) # ifdef FEAT_DIGRAPHS int flag_list_all; - if (in_vim9script() && check_for_opt_bool_arg(argvars, 0) == FAIL) + if (check_for_opt_bool_arg(argvars, 0) == FAIL) return; if (argvars[0].v_type == VAR_UNKNOWN) flag_list_all = FALSE; else { - int error = FALSE; - varnumber_T flag = tv_get_number_chk(&argvars[0], &error); + varnumber_T flag = tv_get_bool(&argvars[0]); - if (error) - return; flag_list_all = flag ? TRUE : FALSE; } diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim index 16eb0b1583..88b8ded95d 100644 --- a/src/testdir/test_digraph.vim +++ b/src/testdir/test_digraph.vim @@ -605,8 +605,10 @@ func Test_digraph_getlist_function() " of digraphs returned. call assert_equal(digraph_getlist()->len(), digraph_getlist(0)->len()) call assert_notequal(digraph_getlist()->len(), digraph_getlist(1)->len()) + call assert_equal(digraph_getlist()->len(), digraph_getlist(v:false)->len()) + call assert_notequal(digraph_getlist()->len(), digraph_getlist(v:true)->len()) - call assert_fails('call digraph_getlist(0z12)', 'E974: Using a Blob as a Number') + call assert_fails('call digraph_getlist(0z12)', 'E1212: Bool required for argument 1') endfunc diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim index 7ed912365f..6103453a24 100644 --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -963,6 +963,18 @@ enddef def Test_digraph_getlist() v9.CheckSourceDefAndScriptFailure(['digraph_getlist(10)'], ['E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1']) v9.CheckSourceDefAndScriptFailure(['digraph_getlist("")'], ['E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1']) + + var lines =<< trim END + var l = digraph_getlist(true) + assert_notequal([], l) + l = digraph_getlist(false) + assert_equal([], l) + l = digraph_getlist(1) + assert_notequal([], l) + l = digraph_getlist(0) + assert_equal([], l) + END + v9.CheckSourceDefAndScriptSuccess(lines) enddef def Test_digraph_set() diff --git a/src/version.c b/src/version.c index 7558bdc1b1..6703606cfd 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 900, /**/ 899, /**/ From fd6693ca5cf1a6c88e4975572627ca1ed466e594 Mon Sep 17 00:00:00 2001 From: glepnir Date: Mon, 2 Dec 2024 20:03:27 +0100 Subject: [PATCH 052/244] runtime(doc): remove buffer-local completeopt todo item has already implemented by @zeertzjq on https://github.com/vim/vim/pull/14922 closes: #16152 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- runtime/doc/todo.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 2f18654828..e73d2f1fe2 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.1. Last change: 2024 Oct 27 +*todo.txt* For Vim version 9.1. Last change: 2024 Dec 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4749,7 +4749,6 @@ Insert mode completion/expansion: (Prabir Shrestha, 2017 May 19, #1713) - When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017 Apr 23, #1653) -- Can 'completeopt' be made buffer-local? (#5487) - When complete() first argument is before where insert started and 'backspace' is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19) From e7ea4ba723a2ab2bc49baa07d1dec54a197fb64b Mon Sep 17 00:00:00 2001 From: RestorerZ Date: Mon, 2 Dec 2024 20:07:58 +0100 Subject: [PATCH 053/244] patch 9.1.0901: MS-Windows: vimtutor batch script can be improved Problem: MS-Windows: vimtutor batch script can be improved Solution: Update vimtutor.bat, validate languages using Powershell cultureinfo (RestorerZ) closes: #16112 Signed-off-by: RestorerZ Signed-off-by: Christian Brabandt --- src/version.c | 2 + src/vimtutor | 3 +- vimtutor.bat | 255 ++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 219 insertions(+), 41 deletions(-) diff --git a/src/version.c b/src/version.c index 6703606cfd..724fa61402 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 901, /**/ 900, /**/ diff --git a/src/vimtutor b/src/vimtutor index 409c10c047..1d530d491e 100755 --- a/src/vimtutor +++ b/src/vimtutor @@ -50,6 +50,7 @@ hu Hungarian \ it Italian \ ja Japanese \ ko Korean \ +lt Lithuanian \ lv Latvian \ nb BokmÃ¥l \ nl Dutch \ @@ -61,7 +62,7 @@ sk Slovak \ sr Serbian \ sv Swedish \ tr Turkish \ -uk English \ +uk Ukrainian \ vi Vietnamese \ zh Chinese diff --git a/vimtutor.bat b/vimtutor.bat index 6695ee397f..79489f50b8 100644 --- a/vimtutor.bat +++ b/vimtutor.bat @@ -1,7 +1,9 @@ :: Start Vim on a copy of the tutor file. @echo off +SetLocal -:: Usage: vimtutor [-chapter 2] [-console] [xx] +:: Usage: +:: vimtutor [/?|{/ | -}h|{/ | --}help] [{/ | -}c|{/ | --}chapter NUMBER] [{/ | --}console] [xx] :: :: -console means gvim will not be used :: xx is a language code like "es" or "nl". @@ -10,64 +12,237 @@ :: When that also fails, it uses the English version. :: Use Vim to copy the tutor, it knows the value of $VIMRUNTIME -FOR %%d in (. %TMP% %TEMP%) DO ( - call :test_dir_writable "%~dpf0" %%d - IF NOT ERRORLEVEL 1 GOTO dir_ok +for %%G in (. %TMP% %TEMP%) do ( + call :TestDirWritable "%~f0" %%G + if not ERRORLEVEL 1 goto DirOk ) -echo No working directory is found -GOTO end +echo: +echo:No working directory is found. +goto End -:test_dir_writable -SET TUTORCOPY=%2\$tutor$ -COPY %1 %TUTORCOPY% >nul 2>nul -GOTO end +:TestDirWritable +set TUTORCOPY=%2\$tutor$ +copy %1 %TUTORCOPY% 2>&1> nul +goto DelTmpCopy -:dir_ok +:DirOk +title Tutorial on the Vim editor +set "use=Gui" -IF .%1==.-chapter ( - SET CHAPTER=%2 - SHIFT - SHIFT +for /F "usebackq tokens=2 delims=:" %%G in (`chcp`) do ( + set /a "_sav_chcp=%%G" + 1> nul chcp 65001 ) -SET xx=%1 -IF NOT .%1==.-console GOTO use_gui -SHIFT -SET xx=%1 -GOTO use_vim -:use_gui +:GetChptLngs +for %%G in (tutor1;tutor2) do ( + if exist "%~dp0tutor\%%G" (set "lngs_%%G=en;") else ( + if exist "%~dp0tutor\%%G.utf-8" set "lngs_%%G=en;") + for /F "tokens=2 delims=._" %%H in ( + '2^> nul dir /B /A:-D "%~dp0tutor\%%G.???.utf-8"') do ( + call set "lngs_%%G=%%lngs_%%G%%%%H;") +) +:EndGetChptLngs + +:ParseArgs +if "%*"=="" goto Use%use% +if "%1"=="/?" goto Usage +if "%1"=="/h" goto Usage +if "%1"=="-h" goto Usage +if "%1"=="/help" goto Usage +if "%1"=="--help" goto Usage +if "%1"=="/list" goto List +if "%1"=="--list" goto List +:DoShift +if "%1"=="/c" (call :ChkChpt %2 && (shift & shift & goto DoShift) || goto End) +if "%1"=="-c" (call :ChkChpt %2 && (shift & shift & goto DoShift) || goto End) +if "%1"=="/chapter" ( + call :ChkChpt %2 && (shift & shift & goto DoShift) || goto End +) +if "%1"=="--chapter" ( + call :ChkChpt %2 && (shift & shift & goto DoShift) || goto End +) +if "%1"=="/console" (set "use=Vim" & shift & goto DoShift) +if "%1"=="--console" (set "use=Vim" & shift & goto DoShift) +call :ChkLng %1 && shift || goto End +if not "%1"=="" goto DoShift +goto Use%use% +:UseGui :: Try making a copy of tutor with gvim. If gvim cannot be found, try using :: vim instead. If vim cannot be found, alert user to check environment and :: installation. :: The script tutor.vim tells Vim which file to copy. -start "dummy" /b /w "%~dp0gvim.exe" -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim" -IF ERRORLEVEL 1 GOTO use_vim +start "dummy" /B /W "%~dp0gvim.exe" -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim" +if ERRORLEVEL 1 goto UseVim -:: Start gvim without any .vimrc, set 'nocompatible' -start "dummy" /b /w "%~dp0gvim.exe" -u NONE -c "set nocp" %TUTORCOPY% +:: Start gvim without any .vimrc, set 'nocompatible' and 'showcmd' +start "dummy" /B /W "%~dp0gvim.exe" -u NONE -c "set nocp sc" %TUTORCOPY% -GOTO end +goto End -:use_vim +:UseVim :: The script tutor.vim tells Vim which file to copy -call vim -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim" -IF ERRORLEVEL 1 GOTO no_executable +call "%~dp0vim.exe" -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim" +if ERRORLEVEL 1 goto NoExecutable + +:: Start vim without any .vimrc, set 'nocompatible and 'showcmd'' +call "%~dp0vim.exe" -u NONE -c "set nocp sc" %TUTORCOPY% -:: Start vim without any .vimrc, set 'nocompatible' -call vim -u NONE -c "set nocp" %TUTORCOPY% +goto End -GOTO end +:NoExecutable +echo: +echo: +echo:No vim or gvim found in current directory or %%PATH%%. +echo:Check your installation or re-run install.exe. -:no_executable -ECHO. -ECHO. -ECHO No vim or gvim found in current directory or PATH. -ECHO Check your installation or re-run install.exe +goto End + +:ChkChpt +if defined CHAPTER ( + echo:Error. Invalid command line arguments. + echo:See %~nx0 /? for help. + exit /B 1 +) +for /F %%G in ('echo %1 ^| findstr /R "\<[1-2]\>"') do ( + set "CHAPTER=%%G" & exit /B 0 +) +echo:Error. The chapter argument must contain only the digits 1 or 2. +exit /B 1 + +:ChkLng +if "%1"=="" exit /B 0 +if defined xx ( + echo:Error. Invalid command line arguments. + echo:See %~nx0 /? for help. + exit /B 1 +) +for /F %%G in ('echo %1 ^| findstr /R "[-0-9\._\[\]\$\^\*/!@#&(|)=+\\]"') do ( + echo:Error. The language code must contain only alphabetic characters. + exit /B 1 +) +set "_t=%1" +if ""=="%_t:~1%" ( + echo:Error. The language code must be 2 or 3 characters only. + exit /B 1 +) +if not ""=="%_t:~3%" ( + echo:Error. The language code must be 2 or 3 characters only. + exit /B 1 +) +SetLocal EnableDelayedExpansion +if "!lngs_tutor%CHAPTER%:%1;=!"=="!lngs_tutor%CHAPTER%!" ( + echo:The current installation does not have the %1 language. + echo:English will be used for the tutorial. + echo:To view the available languages, use the `%~nx0 /list` command. + 1> nul timeout /T 2 + EndLocal & set "xx=en" & exit /B 0 +) else (EndLocal & set "xx=%1" & exit /B 0) + +:Usage +echo: +echo:== USAGE ================================================================= +echo: +echo:%~nx0 /? ^| ^{/ ^| -^}h ^| ^{/ ^| --^}help +echo:or +echo:%~nx0 ^{/ ^| --^}list +echo:or +echo:%~nx0 ^[^{/ ^| -^}c ^| ^{/ ^| --}chapter NUMBER^] ^[^{/ ^| --^}console^] ^[lng^] +echo: +echo:where: +echo:/? or /h or -h or /help or --help +echo: Display the quick help and exit. +echo: +echo:/list or --list +echo: Display the available chapters and languages +echo: of the tutorial and exit. +echo: +echo:/c or -c or /chapter or --chapter NUMBER +echo: Specified chapter of the tutorial. +echo: The NUMBER should be 1 or 2. +echo: By default, the first chapter. +echo: +echo:/console or --console +echo: Open the tutorial in the console instead of GUI. +echo: +echo:lng +echo: Is a 2 or 3 character ISO639 language code +echo: like "es", "nl" or "bar". +echo: The default language is English. +echo: +echo:Examples: +echo: %~nx0 es /c 1 /console +echo: %~nx0 --chapter 2 de +echo: %~nx0 fr +echo: + +:EndUsage +goto End + +:List + +:GetLngName +if defined TMP (set "pscult_fl=%TMP%\pscult.tmp") else ( + set "pscult_fl=%TEMP%\pscult.tmp") + +powershell.exe -NoLogo -NoProfile -Command ^ +[system.globalization.cultureinfo]::GetCultures('AllCultures') ^| ^ +Where Name -NotLike "*-*" ^| Where DisplayName -NotLike "Invariant*" ^| ^ +%%{$_.Name + \"`t\" + $_.DisplayName + \"`t\" + $_.NativeName} ^| ^ +Sort-Object ^| Out-File -FilePath "%pscult_fl%" -Encoding utf8 + +if defined lngs_tutor1 (set "lngs=%lngs_tutor1%") +if defined lngs_tutor2 if defined lngs ( + for %%G in (%lngs_tutor2%) do (call set "lngs=%%lngs:%%G;=%%") + set "lngs=%lngs%%lngs_tutor2%" + ) else (set "lngs=%lngs_tutor2%") + +if defined lngs ( + for %%G in (%lngs%) do ( + for /F "tokens=2,* delims= " %%H in ( + '2^> nul findstr /BR "\<%%G\>" "%pscult_fl%"' + ) do (set "%%G_name=%%H %%I") + ) + set "bar_name=Bavarian Boarisch" + set "eo_name=Esperanto Esperanto" +) +:EndGetLngName + +echo: +echo:The following chapters and languages are available in the current +echo:installation tutorial: +echo: +if defined lngs_tutor1 ( + echo:Chapter: 1 + for %%G in (%lngs_tutor1%) do if "en"=="%%G" ( + call echo:%%G %%%%G_name%% by default) else ( + call echo:%%G %%%%G_name%%) + echo: +) + +if defined lngs_tutor2 ( + echo:Chapter: 2 + for %%G in (%lngs_tutor2%) do if "en"=="%%G" ( + call echo:%%G %%%%G_name%% by default) else ( + call echo:%%G %%%%G_name%%) +) +echo: +goto End -:end +:DelTmpCopy :: remove the copy of the tutor -IF EXIST %TUTORCOPY% DEL %TUTORCOPY% -SET xx= +if exist %TUTORCOPY% del /F /Q %TUTORCOPY% +goto :EOF + +:End +:: remove the copy of the tutor and ISO639 file +if exist %TUTORCOPY% del /F /Q %TUTORCOPY% +if exist %pscult_fl% del /F /Q %pscult_fl% +chcp %_sav_chcp% 1> nul +title %ComSpec% +EndLocal + +@rem vim:ft=dosbatch:ts=8:sts=2:sw=2:noet: From 12e1729e893269758b15a4491b20de105120edfd Mon Sep 17 00:00:00 2001 From: RestorerZ Date: Mon, 2 Dec 2024 20:13:52 +0100 Subject: [PATCH 054/244] runtime(tutor): Update the makefiles for tutor1 and tutor2 files closes: #16111 Signed-off-by: RestorerZ Signed-off-by: Christian Brabandt --- runtime/tutor/Make_all.mak | 69 +++++---- runtime/tutor/Make_mvc.mak | 308 +++++++++++++++++++++++++++++-------- runtime/tutor/Makefile | 155 +++++++++++++------ 3 files changed, 389 insertions(+), 143 deletions(-) diff --git a/runtime/tutor/Make_all.mak b/runtime/tutor/Make_all.mak index c39f741826..01fd12ddee 100644 --- a/runtime/tutor/Make_all.mak +++ b/runtime/tutor/Make_all.mak @@ -2,32 +2,47 @@ # Makefile with common components # -CONVERTED = \ - tutor.utf-8 \ - tutor.bar \ - tutor.ca.utf-8 \ - tutor.de.utf-8 \ - tutor.el \ - tutor.el.cp737 \ - tutor.eo \ - tutor.es \ - tutor.fr.utf-8 \ - tutor.hr \ - tutor.hr.cp1250 \ - tutor.hu \ - tutor.hu.cp1250 \ - tutor.it.utf-8 \ - tutor.ja.sjis \ - tutor.ja.euc \ - tutor.ko.euc \ - tutor.nl \ - tutor.no.utf-8 \ - tutor.nb \ - tutor.nb.utf-8 \ - tutor.ru \ - tutor.ru.cp1251 \ - tutor.sv.utf-8 \ - tutor.tr.iso9 \ - tutor.zh.utf-8 +CHAPTER1 = \ + tutor1.utf-8 \ + tutor1.bar \ + tutor1.ca.utf-8 \ + tutor1.cs \ + tutor1.cs.cp1250 \ + tutor1.da \ + tutor1.de.utf-8 \ + tutor1.el \ + tutor1.el.cp737 \ + tutor1.eo \ + tutor1.es \ + tutor1.fr.utf-8 \ + tutor1.hr \ + tutor1.hr.cp1250 \ + tutor1.hu \ + tutor1.hu.cp1250 \ + tutor1.it.utf-8 \ + tutor1.ja.sjis \ + tutor1.ja.euc \ + tutor1.ko \ + tutor1.ko.euc \ + tutor1.nl \ + tutor1.no.utf-8 \ + tutor1.nb \ + tutor1.nb.utf-8 \ + tutor1.pl \ + tutor1.pl.cp1250 \ + tutor1.pt \ + tutor1.ru \ + tutor1.ru.cp1251 \ + tutor1.sk \ + tutor1.sk.cp1250 \ + tutor1.sr.cp1250 \ + tutor1.sv.utf-8 \ + tutor1.tr.iso9 \ + tutor1.zh.utf-8 + +CHAPTER2 = \ + tutor2 + +CONVERTED = $(CHAPTER1) $(CHAPTER2) # vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0 ft=make: diff --git a/runtime/tutor/Make_mvc.mak b/runtime/tutor/Make_mvc.mak index 1c5c3155eb..d917f311bf 100644 --- a/runtime/tutor/Make_mvc.mak +++ b/runtime/tutor/Make_mvc.mak @@ -1,7 +1,11 @@ # # Makefile for converting the Vim tutorial on Windows. # -# 21.11.23, Restorer, restorer@mail2k.ru +# 21.11.24, Restorer, restorer@mail2k.ru +# +# Use the UTF-8 version as the original and create the others with conversion. +# For some translation files of chapter one, conversion from traditional +# encodings to UTF-8 encoding is performed. !IF [powershell -nologo -noprofile "exit $$psversiontable.psversion.major"] == 2 @@ -27,22 +31,25 @@ ICONV = "$(ICONV_PATH)\iconv.exe" RM = del /q CP = copy /y +HDLNK = mklink /h PS = PowerShell.exe PSFLAGS = -NoLogo -NoProfile -Command +.SUFFIXES : + all : $(CONVERTED) -tutor.utf-8 : tutor +tutor1.utf-8 : tutor1 !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force !ENDIF -tutor.bar : tutor.bar.utf-8 +tutor2 : tutor2.utf-8 !IF DEFINED (ICONV) $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ !ELSE @@ -52,223 +59,392 @@ tutor.bar : tutor.bar.utf-8 [System.Text.Encoding]::GetEncoding(28591)) !ENDIF -tutor.ca.utf-8 : tutor.ca +tutor1.bar tutor2.bar : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-1 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) +!ENDIF + +tutor1.ca.utf-8 : tutor1.ca !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + +tutor2.ca : tutor2.ca.utf-8 +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$?\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) +!ENDIF + +tutor1.cs tutor2.cs : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28592)) +!ENDIF + +tutor1.cs.cp1250 tutor2.cs.cp1250 : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t CP1250 $(@R).utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(1250)) +!ENDIF + +tutor1.da tutor2.da : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-4 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28594)) !ENDIF -tutor.de.utf-8 : tutor.de +tutor1.de.utf-8 : tutor1.de !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force !ENDIF -tutor.el : tutor.el.utf-8 +tutor2.de : tutor2.de.utf-8 !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-7 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) +!ENDIF + +tutor1.el tutor2.el : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-7 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28597)) !ENDIF -tutor.el.cp737 : tutor.el.utf-8 +tutor1.el.cp737 tutor2.el.cp737 : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t CP737 $? >$@ + $(ICONV) -f UTF-8 -t CP737 $(@R).utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(737)) !ENDIF -tutor.eo : tutor.eo.utf-8 +tutor1.eo tutor2.eo : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-3 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-3 $@.utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28593)) !ENDIF -tutor.es : tutor.es.utf-8 +tutor1.es tutor2.es : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-1 $@.utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28591)) !ENDIF -tutor.fr.utf-8 : tutor.fr +tutor1.fr.utf-8 : tutor1.fr !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force !ENDIF -tutor.hr : tutor.hr.utf-8 +tutor2.fr : tutor2.fr.utf-8 !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-2 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) +!ENDIF + +tutor1.hr tutor2.hr : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28592)) !ENDIF -tutor.hr.cp1250 : tutor.hr.utf-8 +tutor1.hr.cp1250 tutor2.hr.cp1250 : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t CP1250 $? >$@ + $(ICONV) -f UTF-8 -t CP1250 $(@R).utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(1250)) !ENDIF -tutor.hu : tutor.hu.utf-8 +tutor1.hu tutor2.hu : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-2 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28592)) !ENDIF -tutor.hu.cp1250 : tutor.hu.utf-8 +tutor1.hu.cp1250 tutor2.hu.cp1250 : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t CP1250 $? >$@ + $(ICONV) -f UTF-8 -t CP1250 $(@R).utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(1250)) !ENDIF -tutor.it.utf-8 : tutor.it +tutor1.it.utf-8 : tutor1.it !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force !ENDIF -tutor.ja.sjis : tutor.ja.utf-8 +tutor2.it : tutor2.it.utf-8 !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t CP932 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) +!ENDIF + +tutor1.ja.sjis tutor2.ja.sjis : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t CP932 $(@R).utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(932)) !ENDIF -tutor.ja.euc : tutor.ja.utf-8 +tutor1.ja.euc tutor2.ja.euc : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t EUC-JP $? >$@ + $(ICONV) -f UTF-8 -t EUC-JP $(@R).utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(51932)) !ENDIF -tutor.ko.euc : tutor.ko.utf-8 +tutor1.ko tutor2.ko : + $(HDLNK) $@ $@.utf-8 + +tutor1.ko.euc tutor2.ko.euc : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t EUC-KR $? >$@ + $(ICONV) -f UTF-8 -t EUC-KR $(@R).utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(51949)) !ENDIF -tutor.nl : tutor.nl.utf-8 +tutor1.nl tutor2.nl : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-1 $@.utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28591)) !ENDIF -tutor.no.utf-8 : tutor.no +tutor1.no.utf-8 : tutor1.no !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + +tutor2.no : tutor2.no.utf-8 +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$?\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) !ENDIF # nb is an alias for no -tutor.nb : tutor.no - $(CP) tutor.no tutor.nb +tutor1.nb tutor2.nb : $$(@R).no + $(HDLNK) $@ $? -tutor.nb.utf-8 : tutor.no.utf-8 - $(CP) tutor.no.utf-8 tutor.nb.utf-8 +tutor1.nb.utf-8 tutor2.nb.utf-8 : $$(@R) + $(HDLNK) $@ %|dpfF.no.utf-8 -tutor.ru : tutor.ru.utf-8 +tutor1.pl tutor2.pl : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t KOI8-R $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28592)) +!ENDIF + +tutor1.pl.cp1250 tutor2.pl.cp1250 : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t CP1250 $(@R).utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(1252)) +!ENDIF + +tutor1.pt tutor2.pt : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-15 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28605)) +!ENDIF + +tutor1.ru tutor2.ru : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t KOI8-R $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(20866)) !ENDIF -tutor.ru.cp1251 : tutor.ru.utf-8 +tutor1.ru.cp1251 tutor2.ru.cp1251 : !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t CP1251 $? >$@ + $(ICONV) -f UTF-8 -t CP1251 $(@R).utf-8 >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ - [System.IO.File]::ReadAllText(\"$?\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(1251)) !ENDIF -tutor.sv.utf-8 : tutor.sv +tutor1.sk tutor2.sk : !IF DEFINED (ICONV) - $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$@.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28592)) +!ENDIF + +tutor1.sk.cp1250 tutor2.sk.cp1250 : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t CP1250 $(@R).utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(1252)) +!ENDIF + +tutor1.sr.cp1250 tutor2.sr.cp1250 : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t CP1250 $(@R).utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$(@R).utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(1252)) +!ENDIF + +tutor1.sv.utf-8 : tutor1.sv +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-15 -t UTF-8 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ - [System.Text.Encoding]::GetEncoding(28591)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + [System.Text.Encoding]::GetEncoding(28605)) ^| \ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force !ENDIF -tutor.tr.iso9 : tutor.tr.utf-8 +tutor2.sv : tutor2.sv.utf-8 !IF DEFINED (ICONV) - $(ICONV) -f UTF-8 -t ISO-8859-9 $? >$@ + $(ICONV) -f UTF-8 -t ISO-8859-15 $? >$@ !ELSE $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28605)) +!ENDIF + +tutor1.tr.iso9 tutor2.tr.iso9 : +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-9 $*.utf-8 >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$*.utf-8\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ [System.Text.Encoding]::GetEncoding(28599)) !ENDIF -tutor.zh.utf-8 : tutor.zh.big5 +tutor1.zh.utf-8 : tutor1.zh.big5 $(PS) $(PSFLAGS) [System.IO.File]::ReadAllText(\"$?\", \ [System.Text.Encoding]::GetEncoding(950)) ^| \ - 1>nul New-Item -Force -ItemType file -Path . -Name $@ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force + +tutor2.zh.big5 : tutor2.zh.utf-8 + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$?\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(950)) clean : - @for %%G in ($(CONVERTED)) do (if exist .\%%G ($(RM) %%G)) + @for %%G in ($(CONVERTED)) do (if exist .\%%G $(RM) .\%%G) # vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0 ft=make: diff --git a/runtime/tutor/Makefile b/runtime/tutor/Makefile index d31729d007..3eb49846e8 100644 --- a/runtime/tutor/Makefile +++ b/runtime/tutor/Makefile @@ -1,95 +1,150 @@ # Makefile for the Vim tutor. # -# The Japanese tutor exists in three encodings. Use the UTF-8 version as the -# original and create the others with conversion. -# -# Similarly for Russian and Korean +# Use the UTF-8 version as the original and create the others with conversion. +# For some translation files of chapter one, conversion from traditional +# encodings to UTF-8 encoding is performed. # Common components include Make_all.mak .PHONY: all clean +.SUFFIXES: + all: $(CONVERTED) -tutor.utf-8: tutor +tutor1.utf-8: tutor1 iconv -f ISO-8859-1 -t UTF-8 $? >$@ -tutor.bar: tutor.bar.utf-8 +tutor2: tutor2.utf-8 iconv -f UTF-8 -t ISO-8859-1 $? >$@ -tutor.ca.utf-8: tutor.ca +tutor1.bar tutor2.bar: + iconv -f UTF-8 -t ISO-8859-1 $@.utf-8 >$@ + +tutor1.ca.utf-8: tutor1.ca iconv -f ISO-8859-1 -t UTF-8 $? >$@ -tutor.eo: tutor.eo.utf-8 - iconv -f UTF-8 -t ISO-8859-3 $? >$@ +tutor2.ca: tutor2.ca.utf-8 + iconv -f UTF-8 -t ISO-8859-1 $? >$@ -tutor.de.utf-8: tutor.de - iconv -f ISO-8859-1 -t UTF-8 $? >$@ +tutor1.cs tutor2.cs : + iconv -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ + +tutor1.cs.cp1250 tutor2.cs.cp1250 : + iconv -f UTF-8 -t CP1250 $(@:.cp1250=).utf-8 >$@ -tutor.el: tutor.el.utf-8 - iconv -f UTF-8 -t ISO-8859-7 $? >$@ +tutor1.da tutor2.da : + iconv -f UTF-8 -t ISO-8859-4 $@.utf-8 >$@ -tutor.el.cp737: tutor.el.utf-8 - iconv -f UTF-8 -t CP737 $? >$@ +tutor1.de.utf-8: tutor1.de + iconv -f ISO-8859-1 -t UTF-8 $? >$@ -tutor.es: tutor.es.utf-8 +tutor2.de: tutor2.de.utf-8 iconv -f UTF-8 -t ISO-8859-1 $? >$@ -tutor.fr.utf-8: tutor.fr - iconv -f ISO-8859-1 -t UTF-8 $? >$@ +tutor1.el tutor2.el: + iconv -f UTF-8 -t ISO-8859-7 $@.utf-8 >$@ + +tutor1.el.cp737 tutor2.el.cp737: + iconv -f UTF-8 -t CP737 $(@:.cp737=.utf-8) >$@ -tutor.hu: tutor.hu.utf-8 - iconv -f UTF-8 -t ISO-8859-2 $? >$@ +tutor1.eo tutor2.eo: + iconv -f UTF-8 -t ISO-8859-3 $@.utf-8 >$@ -tutor.hu.cp1250: tutor.hu.utf-8 - iconv -f UTF-8 -t CP1250 $? >$@ +tutor1.es tutor2.es: + iconv -f UTF-8 -t ISO-8859-1 $@.utf-8 >$@ -tutor.it.utf-8: tutor.it +tutor1.fr.utf-8: tutor1.fr iconv -f ISO-8859-1 -t UTF-8 $? >$@ -tutor.hr: tutor.hr.utf-8 - iconv -f UTF-8 -t ISO-8859-2 $? >$@ +tutor2.fr: tutor2.fr.utf-8 + iconv -f UTF-8 -t ISO-8859-1 $? >$@ -tutor.hr.cp1250: tutor.hr.utf-8 - iconv -f UTF-8 -t CP1250 $? >$@ +tutor1.hr tutor2.hr: + iconv -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ -tutor.ja.sjis: tutor.ja.utf-8 - iconv -f UTF-8 -t CP932 $? >$@ +tutor1.hr.cp1250 tutor2.hr.cp1250: + iconv -f UTF-8 -t CP1250 $(@:.cp1250=.utf-8) >$@ -tutor.ja.euc: tutor.ja.utf-8 - iconv -f UTF-8 -t EUC-JP $? >$@ +tutor1.hu tutor2.hu: + iconv -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ -tutor.ko.euc: tutor.ko.utf-8 - iconv -f UTF-8 -t EUC-KR $? >$@ +tutor1.hu.cp1250 tutor2.hu.cp1250: + iconv -f UTF-8 -t CP1250 $(@:.cp1250=.utf-8) >$@ -tutor.nl: tutor.nl.utf-8 +tutor1.it.utf-8: tutor1.it + iconv -f ISO-8859-1 -t UTF-8 $? >$@ + +tutor2.it: tutor2.it.utf-8 iconv -f UTF-8 -t ISO-8859-1 $? >$@ -tutor.no.utf-8: tutor.no +tutor1.ja.sjis tutor2.ja.sjis: + iconv -f UTF-8 -t CP932 $(@:.sjis=.utf-8) >$@ + +tutor1.ja.euc tutor2.ja.euc: + iconv -f UTF-8 -t EUC-JP $(@:.euc=.utf-8) >$@ + +tutor1.ko tutor2.ko: + ln $@.utf-8 $@ + +tutor1.ko.euc tutor2.ko.euc: + iconv -f UTF-8 -t EUC-KR $(@:.euc=.utf-8) >$@ + +tutor1.nl tutor2.nl: + iconv -f UTF-8 -t ISO-8859-1 $@.utf-8 >$@ + +tutor1.no.utf-8: tutor1.no iconv -f ISO-8859-1 -t UTF-8 $? >$@ +tutor2.no: tutor2.no.utf-8 + iconv -f UTF-8 -t ISO-8859-1 $? >$@ + # nb is an alias for no -tutor.nb: tutor.no - cp $? $@ +tutor1.nb tutor2.nb: + ln $(@:.nb=.no) $@ -tutor.nb.utf-8: tutor.no.utf-8 - cp $? $@ +tutor1.nb.utf-8 tutor2.nb.utf-8: + ln $(@:.nb.utf-8=.no.utf-8) $@ -tutor.ru: tutor.ru.utf-8 - iconv -f UTF-8 -t KOI8-R $? >$@ +tutor1.pl tutor2.pl : + iconv -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ -tutor.ru.cp1251: tutor.ru.utf-8 - iconv -f UTF-8 -t CP1251 $? >$@ +tutor1.pl.cp1250 tutor2.pl.cp1250 : + iconv -f UTF-8 -t CP1250 $(@:.cp1250=).utf-8 >$@ -tutor.tr.iso9: tutor.tr.utf-8 - iconv -f UTF-8 -t ISO-8859-9 $? >$@ +tutor1.pt tutor2.pt : + iconv -f UTF-8 -t ISO-8859-15 $@.utf-8 >$@ -tutor.sv.utf-8: tutor.sv - iconv -f ISO-8859-1 -t UTF-8 $? >$@ +tutor1.ru tutor2.ru: + iconv -f UTF-8 -t KOI8-R $@.utf-8 >$@ + +tutor1.ru.cp1251 tutor2.ru.cp1251: + iconv -f UTF-8 -t CP1251 $(@:.cp1251=.utf-8) >$@ + +tutor1.sk tutor2.sk : + iconv -f UTF-8 -t ISO-8859-2 $@.utf-8 >$@ + +tutor1.sk.cp1250 tutor2.sk.cp1250 : + iconv -f UTF-8 -t CP1250 $(@:.cp1250=).utf-8 >$@ + +tutor1.sr.cp1250 tutor2.sr.cp1250 : + iconv -f UTF-8 -t CP1250 $(@:.cp1250=).utf-8 >$@ + +tutor1.sv.utf-8: tutor1.sv + iconv -f ISO-8859-15 -t UTF-8 $? >$@ + +tutor2.sv: tutor2.sv.utf-8 + iconv -f UTF-8 -t ISO-8859-15 $? >$@ + +tutor1.tr.iso9 tutor2.tr.iso9: + iconv -f UTF-8 -t ISO-8859-9 $(@:.iso9=.utf-8) >$@ + +tutor1.zh.utf-8: tutor1.zh.big5 + iconv -f BIG-5 -t UTF-8 -c $? >$@ -tutor.zh.utf-8: tutor.zh.big5 - iconv -f BIG-5 -t UTF-8 $? >$@ +tutor2.zh.big5: tutor2.zh.utf-8 + iconv -f UTF-8 -t BIG-5 -c $? >$@ clean: - for G in $(CONVERTED); do if [ -f $$G ]; then rm -f $$G; fi; done + for G in $(CONVERTED); do if [ -f ./$$G ]; then rm -f ./$$G; fi; done; From 6fa304f27d630f4c11c903a61d434f739230e8e1 Mon Sep 17 00:00:00 2001 From: RestorerZ Date: Mon, 2 Dec 2024 20:19:52 +0100 Subject: [PATCH 055/244] runtime(tutor): update the tutor files and re-number the chapters closes: #16110 Signed-off-by: RestorerZ Signed-off-by: Christian Brabandt --- Filelist | 30 +- runtime/doc/usr_01.txt | 4 +- runtime/doc/vimtutor-it.1 | 2 +- runtime/doc/vimtutor-it.UTF-8.1 | 2 +- runtime/doc/vimtutor.1 | 15 +- runtime/doc/vimtutor.man | 14 +- runtime/tutor/README.ru.utf-8.txt | 31 +- runtime/tutor/README.txt | 33 +- runtime/tutor/tutor.pl.cp1250 | 995 ---------------- runtime/tutor/tutor.sk.cp1250 | 1008 ----------------- runtime/tutor/tutor.vim | 27 +- runtime/tutor/{tutor => tutor1} | 113 +- runtime/tutor/{tutor.bar => tutor1.bar} | 108 +- .../{tutor.bar.utf-8 => tutor1.bar.utf-8} | 108 +- .../tutor/{tutor.bg.utf-8 => tutor1.bg.utf-8} | 68 +- runtime/tutor/{tutor.ca => tutor1.ca} | 88 +- .../tutor/{tutor.ca.utf-8 => tutor1.ca.utf-8} | 92 +- runtime/tutor/{tutor.cs => tutor1.cs} | 86 +- .../{tutor.cs.cp1250 => tutor1.cs.cp1250} | 86 +- .../tutor/{tutor.cs.utf-8 => tutor1.cs.utf-8} | 86 +- runtime/tutor/{tutor.da => tutor1.da} | 70 +- .../tutor/{tutor.da.utf-8 => tutor1.da.utf-8} | 68 +- runtime/tutor/{tutor.de => tutor1.de} | 112 +- .../tutor/{tutor.de.utf-8 => tutor1.de.utf-8} | 112 +- runtime/tutor/{tutor.el => tutor1.el} | 88 +- .../tutor/{tutor.el.cp737 => tutor1.el.cp737} | 88 +- .../tutor/{tutor.el.utf-8 => tutor1.el.utf-8} | 88 +- runtime/tutor/{tutor.eo => tutor1.eo} | 76 +- .../tutor/{tutor.eo.utf-8 => tutor1.eo.utf-8} | 76 +- runtime/tutor/{tutor.es => tutor1.es} | 108 +- .../tutor/{tutor.es.utf-8 => tutor1.es.utf-8} | 108 +- runtime/tutor/{tutor.fr => tutor1.fr} | 108 +- .../tutor/{tutor.fr.utf-8 => tutor1.fr.utf-8} | 108 +- runtime/tutor/{tutor.hr => tutor1.hr} | 106 +- .../{tutor.hr.cp1250 => tutor1.hr.cp1250} | 106 +- .../tutor/{tutor.hr.utf-8 => tutor1.hr.utf-8} | 106 +- runtime/tutor/{tutor.hu => tutor1.hu} | 88 +- .../{tutor.hu.cp1250 => tutor1.hu.cp1250} | 88 +- .../tutor/{tutor.hu.utf-8 => tutor1.hu.utf-8} | 88 +- runtime/tutor/{tutor.info => tutor1.info} | Bin runtime/tutor/{tutor.it => tutor1.it} | 110 +- .../tutor/{tutor.it.utf-8 => tutor1.it.utf-8} | 112 +- runtime/tutor/{tutor.ja.euc => tutor1.ja.euc} | 110 +- .../tutor/{tutor.ja.sjis => tutor1.ja.sjis} | 110 +- .../tutor/{tutor.ja.utf-8 => tutor1.ja.utf-8} | 110 +- runtime/tutor/{tutor.ko.utf-8 => tutor1.ko} | 110 +- runtime/tutor/{tutor.ko.euc => tutor1.ko.euc} | 110 +- runtime/tutor/{tutor.ko => tutor1.ko.utf-8} | 110 +- .../tutor/{tutor.lt.utf-8 => tutor1.lt.utf-8} | 112 +- .../tutor/{tutor.lv.utf-8 => tutor1.lv.utf-8} | 112 +- runtime/tutor/{tutor.no => tutor1.nb} | 108 +- .../tutor/{tutor.no.utf-8 => tutor1.nb.utf-8} | 108 +- runtime/tutor/{tutor.nl => tutor1.nl} | 110 +- .../tutor/{tutor.nl.utf-8 => tutor1.nl.utf-8} | 110 +- runtime/tutor/{tutor.nb => tutor1.no} | 108 +- .../tutor/{tutor.nb.utf-8 => tutor1.no.utf-8} | 108 +- runtime/tutor/{tutor.pl => tutor1.pl} | 106 +- runtime/tutor/tutor1.pl.cp1250 | 995 ++++++++++++++++ .../tutor/{tutor.pl.utf-8 => tutor1.pl.utf-8} | 106 +- runtime/tutor/{tutor.pt => tutor1.pt} | 120 +- .../tutor/{tutor.pt.utf-8 => tutor1.pt.utf-8} | 110 +- runtime/tutor/{tutor.ru => tutor1.ru} | 219 ++-- .../{tutor.ru.cp1251 => tutor1.ru.cp1251} | 219 ++-- .../tutor/{tutor.ru.utf-8 => tutor1.ru.utf-8} | 219 ++-- runtime/tutor/{tutor.sk => tutor1.sk} | 106 +- runtime/tutor/tutor1.sk.cp1250 | 1008 +++++++++++++++++ .../tutor/{tutor.sk.utf-8 => tutor1.sk.utf-8} | 106 +- .../{tutor.sr.cp1250 => tutor1.sr.cp1250} | 494 ++++---- .../tutor/{tutor.sr.utf-8 => tutor1.sr.utf-8} | 112 +- runtime/tutor/{tutor.sv => tutor1.sv} | 88 +- .../tutor/{tutor.sv.utf-8 => tutor1.sv.utf-8} | 88 +- .../tutor/{tutor.tr.iso9 => tutor1.tr.iso9} | 108 +- .../tutor/{tutor.tr.utf-8 => tutor1.tr.utf-8} | 108 +- .../tutor/{tutor.uk.utf-8 => tutor1.uk.utf-8} | 100 +- runtime/tutor/{tutor.utf-8 => tutor1.utf-8} | 124 +- .../tutor/{tutor.vi.utf-8 => tutor1.vi.utf-8} | 88 +- .../tutor/{tutor.zh.big5 => tutor1.zh.big5} | 0 runtime/tutor/{tutor.zh.euc => tutor1.zh.euc} | 0 .../tutor/{tutor.zh.utf-8 => tutor1.zh.utf-8} | 0 .../{tutor.zh_cn.utf-8 => tutor1.zh_cn.utf-8} | 0 .../{tutor.zh_tw.utf-8 => tutor1.zh_tw.utf-8} | 0 runtime/tutor/tutor2 | 4 +- runtime/tutor/tutor2.utf-8 | 4 +- 83 files changed, 5626 insertions(+), 5552 deletions(-) delete mode 100644 runtime/tutor/tutor.pl.cp1250 delete mode 100644 runtime/tutor/tutor.sk.cp1250 rename runtime/tutor/{tutor => tutor1} (92%) rename runtime/tutor/{tutor.bar => tutor1.bar} (92%) rename runtime/tutor/{tutor.bar.utf-8 => tutor1.bar.utf-8} (92%) rename runtime/tutor/{tutor.bg.utf-8 => tutor1.bg.utf-8} (96%) rename runtime/tutor/{tutor.ca => tutor1.ca} (91%) rename runtime/tutor/{tutor.ca.utf-8 => tutor1.ca.utf-8} (91%) rename runtime/tutor/{tutor.cs => tutor1.cs} (93%) rename runtime/tutor/{tutor.cs.cp1250 => tutor1.cs.cp1250} (93%) rename runtime/tutor/{tutor.cs.utf-8 => tutor1.cs.utf-8} (93%) rename runtime/tutor/{tutor.da => tutor1.da} (95%) rename runtime/tutor/{tutor.da.utf-8 => tutor1.da.utf-8} (95%) rename runtime/tutor/{tutor.de => tutor1.de} (93%) rename runtime/tutor/{tutor.de.utf-8 => tutor1.de.utf-8} (93%) rename runtime/tutor/{tutor.el => tutor1.el} (93%) rename runtime/tutor/{tutor.el.cp737 => tutor1.el.cp737} (93%) rename runtime/tutor/{tutor.el.utf-8 => tutor1.el.utf-8} (93%) rename runtime/tutor/{tutor.eo => tutor1.eo} (93%) rename runtime/tutor/{tutor.eo.utf-8 => tutor1.eo.utf-8} (93%) rename runtime/tutor/{tutor.es => tutor1.es} (94%) rename runtime/tutor/{tutor.es.utf-8 => tutor1.es.utf-8} (94%) rename runtime/tutor/{tutor.fr => tutor1.fr} (92%) rename runtime/tutor/{tutor.fr.utf-8 => tutor1.fr.utf-8} (92%) rename runtime/tutor/{tutor.hr => tutor1.hr} (93%) rename runtime/tutor/{tutor.hr.cp1250 => tutor1.hr.cp1250} (93%) rename runtime/tutor/{tutor.hr.utf-8 => tutor1.hr.utf-8} (93%) rename runtime/tutor/{tutor.hu => tutor1.hu} (92%) rename runtime/tutor/{tutor.hu.cp1250 => tutor1.hu.cp1250} (92%) rename runtime/tutor/{tutor.hu.utf-8 => tutor1.hu.utf-8} (92%) rename runtime/tutor/{tutor.info => tutor1.info} (100%) rename runtime/tutor/{tutor.it => tutor1.it} (93%) rename runtime/tutor/{tutor.it.utf-8 => tutor1.it.utf-8} (93%) rename runtime/tutor/{tutor.ja.euc => tutor1.ja.euc} (93%) rename runtime/tutor/{tutor.ja.sjis => tutor1.ja.sjis} (93%) rename runtime/tutor/{tutor.ja.utf-8 => tutor1.ja.utf-8} (93%) rename runtime/tutor/{tutor.ko.utf-8 => tutor1.ko} (92%) rename runtime/tutor/{tutor.ko.euc => tutor1.ko.euc} (91%) rename runtime/tutor/{tutor.ko => tutor1.ko.utf-8} (92%) rename runtime/tutor/{tutor.lt.utf-8 => tutor1.lt.utf-8} (92%) rename runtime/tutor/{tutor.lv.utf-8 => tutor1.lv.utf-8} (91%) rename runtime/tutor/{tutor.no => tutor1.nb} (93%) rename runtime/tutor/{tutor.no.utf-8 => tutor1.nb.utf-8} (93%) rename runtime/tutor/{tutor.nl => tutor1.nl} (92%) rename runtime/tutor/{tutor.nl.utf-8 => tutor1.nl.utf-8} (92%) rename runtime/tutor/{tutor.nb => tutor1.no} (93%) rename runtime/tutor/{tutor.nb.utf-8 => tutor1.no.utf-8} (93%) rename runtime/tutor/{tutor.pl => tutor1.pl} (92%) create mode 100644 runtime/tutor/tutor1.pl.cp1250 rename runtime/tutor/{tutor.pl.utf-8 => tutor1.pl.utf-8} (92%) rename runtime/tutor/{tutor.pt => tutor1.pt} (92%) rename runtime/tutor/{tutor.pt.utf-8 => tutor1.pt.utf-8} (93%) rename runtime/tutor/{tutor.ru => tutor1.ru} (88%) rename runtime/tutor/{tutor.ru.cp1251 => tutor1.ru.cp1251} (88%) rename runtime/tutor/{tutor.ru.utf-8 => tutor1.ru.utf-8} (89%) rename runtime/tutor/{tutor.sk => tutor1.sk} (93%) create mode 100644 runtime/tutor/tutor1.sk.cp1250 rename runtime/tutor/{tutor.sk.utf-8 => tutor1.sk.utf-8} (93%) rename runtime/tutor/{tutor.sr.cp1250 => tutor1.sr.cp1250} (60%) rename runtime/tutor/{tutor.sr.utf-8 => tutor1.sr.utf-8} (93%) rename runtime/tutor/{tutor.sv => tutor1.sv} (93%) rename runtime/tutor/{tutor.sv.utf-8 => tutor1.sv.utf-8} (93%) rename runtime/tutor/{tutor.tr.iso9 => tutor1.tr.iso9} (94%) rename runtime/tutor/{tutor.tr.utf-8 => tutor1.tr.utf-8} (94%) rename runtime/tutor/{tutor.uk.utf-8 => tutor1.uk.utf-8} (93%) rename runtime/tutor/{tutor.utf-8 => tutor1.utf-8} (92%) rename runtime/tutor/{tutor.vi.utf-8 => tutor1.vi.utf-8} (93%) rename runtime/tutor/{tutor.zh.big5 => tutor1.zh.big5} (100%) rename runtime/tutor/{tutor.zh.euc => tutor1.zh.euc} (100%) rename runtime/tutor/{tutor.zh.utf-8 => tutor1.zh.utf-8} (100%) rename runtime/tutor/{tutor.zh_cn.utf-8 => tutor1.zh_cn.utf-8} (100%) rename runtime/tutor/{tutor.zh_tw.utf-8 => tutor1.zh_tw.utf-8} (100%) diff --git a/Filelist b/Filelist index caac66cdbd..4e02b22809 100644 --- a/Filelist +++ b/Filelist @@ -766,14 +766,13 @@ RT_ALL = \ runtime/tools/README.txt \ runtime/tools/[a-z]*[a-z0-9] \ runtime/tutor/README.txt \ - runtime/tutor/tutor \ + runtime/tutor/tutor1 \ runtime/tutor/en/vim-01-beginner.tutor \ runtime/tutor/en/vim-01-beginner.tutor.json \ runtime/tutor/tutor.tutor \ runtime/tutor/tutor.tutor.json \ runtime/tutor/tutor.vim \ runtime/tutor/tutor2 \ - runtime/tutor/tutor2.utf-8 \ runtime/vimrc_example.vim \ runtime/pack/dist/opt/cfilter/plugin/cfilter.vim \ runtime/pack/dist/opt/comment/plugin/comment.vim \ @@ -1058,19 +1057,20 @@ LANG_GEN = \ runtime/tutor/README.*.txt \ runtime/tutor/Makefile \ runtime/tutor/Make_all.mak \ - runtime/tutor/tutor.utf-8 \ - runtime/tutor/tutor.?? \ - runtime/tutor/tutor.??.utf-8 \ - runtime/tutor/tutor.??.euc \ - runtime/tutor/tutor.??.sjis \ - runtime/tutor/tutor.??.iso9 \ - runtime/tutor/tutor.??.big5 \ - runtime/tutor/tutor.??.cp1250 \ - runtime/tutor/tutor.??.cp1251 \ - runtime/tutor/tutor.??.cp737 \ - runtime/tutor/tutor.??_??.utf-8 \ - runtime/tutor/tutor.bar \ - runtime/tutor/tutor.bar.utf-8 \ + runtime/tutor/tutor1.utf-8 \ + runtime/tutor/tutor1.?? \ + runtime/tutor/tutor1.??.utf-8 \ + runtime/tutor/tutor1.??.euc \ + runtime/tutor/tutor1.??.sjis \ + runtime/tutor/tutor1.??.iso9 \ + runtime/tutor/tutor1.??.big5 \ + runtime/tutor/tutor1.??.cp1250 \ + runtime/tutor/tutor1.??.cp1251 \ + runtime/tutor/tutor1.??.cp737 \ + runtime/tutor/tutor1.??_??.utf-8 \ + runtime/tutor/tutor1.bar \ + runtime/tutor/tutor1.bar.utf-8 \ + runtime/tutor/tutor2.utf-8 \ runtime/spell/README.txt \ runtime/spell/??/*.diff \ runtime/spell/??/main.aap \ diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt index 604e26bfec..8a513e8bb2 100644 --- a/runtime/doc/usr_01.txt +++ b/runtime/doc/usr_01.txt @@ -145,13 +145,13 @@ On other systems, you have to do a little work: 1. Copy the tutor file. You can do this with Vim (it knows where to find it): > - vim --clean -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' + vim --clean -c 'e $VIMRUNTIME/tutor/tutor1' -c 'w! TUTORCOPY' -c 'q' < This will write the file "TUTORCOPY" in the current directory. To use a translated version of the tutor, append the two-letter language code to the filename. For French: > - vim --clean -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' + vim --clean -c 'e $VIMRUNTIME/tutor/tutor1.fr' -c 'w! TUTORCOPY' -c 'q' < 2. Edit the copied file with Vim: > diff --git a/runtime/doc/vimtutor-it.1 b/runtime/doc/vimtutor-it.1 index 28d921b95a..47952c7ecc 100644 --- a/runtime/doc/vimtutor-it.1 +++ b/runtime/doc/vimtutor-it.1 @@ -76,7 +76,7 @@ vimtutor --language bar --chapter 1 --gui .fi .SH FILE .TP 15 -/usr/local/lib/vim/vim??/tutor/tutor[.lingua] +/usr/local/lib/vim/vim??/tutor/tutor1[.lingua] I file di testo per il capitolo uno di .B Vimtutor . diff --git a/runtime/doc/vimtutor-it.UTF-8.1 b/runtime/doc/vimtutor-it.UTF-8.1 index 47b68b52ee..3eccff7e32 100644 --- a/runtime/doc/vimtutor-it.UTF-8.1 +++ b/runtime/doc/vimtutor-it.UTF-8.1 @@ -76,7 +76,7 @@ vimtutor --language bar --chapter 1 --gui .fi .SH FILE .TP 15 -/usr/local/lib/vim/vim??/tutor/tutor[.lingua] +/usr/local/lib/vim/vim??/tutor/tutor1[.lingua] I file di testo per il capitolo uno di .B Vimtutor . diff --git a/runtime/doc/vimtutor.1 b/runtime/doc/vimtutor.1 index 87f09785ff..7f3200454f 100644 --- a/runtime/doc/vimtutor.1 +++ b/runtime/doc/vimtutor.1 @@ -19,11 +19,12 @@ The is useful for people that want to learn their first .B Vim commands. -The optional [language] argument is the two-letter name of a language, like -"it" or "es". +The optional [ISO639] argument is the two or three letter name of a language, +like "it" or "es". .PP .B Vimtutor -only opens temporary copies of the original tutor files, there is no danger of overwriting the lessons. +only opens temporary copies of the original tutor files, there is no danger +of overwriting the lessons. .PP .B Vim is always started in @@ -32,7 +33,8 @@ compatible mode. .SH OPTIONS .TP .BR \-l ", " \-\-language =\fIISO639\fR -Set the two or three letter language code. E.g. 'it', 'es', 'bar'. Defaults to language of locale if available, else to English. +Set the two or three letter language code. E.g. 'it', 'es', 'bar'. +Defaults to language of locale if available, else to English. .TP .BR \-c ", " \-\-chapter =\fINUMBER\fR Set the chapter number. Defaults to chapter one. @@ -75,7 +77,7 @@ vimtutor --language bar --chapter 1 --gui .fi .SH FILES .TP 15 -/usr/local/share/vim/vim??/tutor/tutor[.language] +/usr/local/share/vim/vim??/tutor/tutor1[.language] The .B Vimtutor chapter one text file(s). @@ -93,7 +95,8 @@ script used to copy the text file. .SH AUTHOR .B The Vi Tutorial -was originally written for Vi by Michael C. Pierce and Robert K. Ware, Colorado School of Mines using ideas supplied by Charles Smith, Colorado State University. +was originally written for Vi by Michael C. Pierce and Robert K. Ware, Colorado +School of Mines using ideas supplied by Charles Smith, Colorado State University. .B E-mail: bware@mines.colorado.edu (now invalid). .PP Modified for diff --git a/runtime/doc/vimtutor.man b/runtime/doc/vimtutor.man index 29b56cb97d..44cb9daccf 100644 --- a/runtime/doc/vimtutor.man +++ b/runtime/doc/vimtutor.man @@ -1,5 +1,7 @@ VIMTUTOR(1) General Commands Manual VIMTUTOR(1) + + NAME vimtutor - the Vim tutor @@ -13,8 +15,8 @@ DESCRIPTION Vimtutor starts the Vim tutor. The Vimtutor is useful for people that want to learn their first Vim - commands. The optional [language] argument is the two-letter name of a - language, like "it" or "es". + commands. The optional [ISO639] argument is the two or three letter + name of a language, like "it" or "es". Vimtutor only opens temporary copies of the original tutor files, there is no danger of overwriting the lessons. @@ -24,8 +26,8 @@ DESCRIPTION OPTIONS -l, --language=ISO639 Set the two or three letter language code. E.g. 'it', 'es', - 'bar'. Defaults to language of locale if available, else to Eng†- lish. + 'bar'. Defaults to language of locale if available, else to + English. -c, --chapter=NUMBER Set the chapter number. Defaults to chapter one. @@ -53,7 +55,7 @@ EXAMPLES vimtutor --language bar --chapter 1 --gui FILES - /usr/local/share/vim/vim??/tutor/tutor[.language] + /usr/local/share/vim/vim??/tutor/tutor1[.language] The Vimtutor chapter one text file(s). /usr/local/share/vim/vim??/tutor/tutor2[.language] @@ -75,4 +77,6 @@ AUTHOR SEE ALSO vim(1) + + 2024 November 04 VIMTUTOR(1) diff --git a/runtime/tutor/README.ru.utf-8.txt b/runtime/tutor/README.ru.utf-8.txt index 58be0d5270..60ac961d48 100644 --- a/runtime/tutor/README.ru.utf-8.txt +++ b/runtime/tutor/README.ru.utf-8.txt @@ -5,7 +5,7 @@ операции над текÑтом Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ редактора Vim. Файл, Ñодержащий обучающие уроки, называетÑÑ Â«tutor». Чтобы начать Ñ Ð½Ð¸Ð¼ -работать, проÑто наберите команду "vim tutor" и Ñледуйте инÑтрукциÑм, +работать, проÑто наберите команду "vim tutor1" и Ñледуйте инÑтрукциÑм, преведённым в уроках. Ð—Ð°Ð´Ð°Ð½Ð¸Ñ Ð² учебнике предполагают редактирование файла, поÑтому ÐЕ ДЕЛÐЙТЕ ЭТОГО Ð’ ОРИГИÐÐЛЬÐОЙ КОПИИ ФÐЙЛÐ. @@ -20,20 +20,27 @@ (303) 273-3987 bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet +Ð’Ñе вышеÑказанное, каÑающееÑÑ Ð¿ÐµÑ€Ð²Ð¾Ð¹ главы учебника, также отноÑитÑÑ ÐºÐ¾ +второй главе учебника. За иÑключением того, что Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ главы +необходимо воÑпользоватьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ "vim tutor2". + +Ð’Ñ‚Ð¾Ñ€Ð°Ñ Ð³Ð»Ð°Ð²Ð° учебника была напиÑана Полом Д. Паркером (Paul D. Parker). Переводы ----------- -Файлы tutor.xx и tutor.xx.utf-8 ÑвлÑÑŽÑ‚ÑÑ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°Ð¼Ð¸ учебника (где xx — код -Ñзыка). Кодировка текÑта в файлах tutor.xx может быть latin1 или Ð´Ñ€ÑƒÐ³Ð°Ñ -Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°. ЕÑли не требуетÑÑ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´ в такой традиционной -кодировке, вам нужно проÑто подготовить файл tutor.xx.utf-8. -ЕÑли необходима Ð´Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° текÑта, вы также можете Ñделать такой файл, -его наименование должно быть tutor.xx.enc (замените «enc» на фактичеÑкое -название кодировки). Возможно, что Ð´Ð»Ñ Ñтого потребуетÑÑ Ð½Ð°Ñтроить файл -«tutor.vim». -Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° tutor.xx из tutor.xx.utf-8 можно иÑпользовать команду "make". -ПоÑмотрите файл «Makefile», чтобы получить подробной информации. (Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… -Ñзыков файл tutor.xx.utf-8 ÑоздаётÑÑ Ð¸Ð· tutor.xx в Ñилу ÑложившихÑÑ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½). +Файлы tutor1.xx и tutor1.xx.utf-8 Ð´Ð»Ñ Ð¿ÐµÑ€Ð²Ð¾Ð¹ главыи, и tutor2.xx и +tutor2.xx.utf-8 Ð´Ð»Ñ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ главы, ÑвлÑÑŽÑ‚ÑÑ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°Ð¼Ð¸ учебника (где xx — код +Ñзыка). Кодировка текÑта в файлах tutor1.xx или tutor2.xx может быть latin1 или +Ð´Ñ€ÑƒÐ³Ð°Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°. ЕÑли не требуетÑÑ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´ в такой традиционной +кодировке, вам нужно проÑто подготовить файл tutor1.xx.utf-8 tutor2.xx.utf-8. +ЕÑли необходима Ð´Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° текÑта, вы также можете Ñделать такой файл, его +наименование должно быть tutor1.xx.enc tutor1.xx.enc (замените «enc» на +фактичеÑкое название кодировки). Возможно, что Ð´Ð»Ñ Ñтого потребуетÑÑ Ð½Ð°Ñтроить +файл «tutor.vim». +Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° tutor1.xx или tutor2.xx из tutor1.xx.utf-8 или +tutor2.xx.utf-8 ÑоответÑтвенно, можно иÑпользовать команду "make". ПоÑмотрите +файл «Makefile», чтобы получить подробную информацию. (Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… Ñзыков файл +tutor1.xx.utf-8 ÑоздаётÑÑ Ð¸Ð· tutor1.xx в Ñилу иÑторичеÑких причин). [Брам Моленар (Bram Moolenaar) и др. изменили Ñтот файл Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° Vim] diff --git a/runtime/tutor/README.txt b/runtime/tutor/README.txt index 060268e303..a8b48a4058 100644 --- a/runtime/tutor/README.txt +++ b/runtime/tutor/README.txt @@ -4,12 +4,12 @@ Most new users can get through it in less than one hour. The result is that you can do a simple editing task using the Vim editor. Tutor is a file that contains the tutorial lessons. You can simply -execute "vim tutor" and then follow the instructions in the lessons. +execute "vim tutor1" and then follow the instructions in the lessons. The lessons tell you to modify the file, so DON'T DO THIS ON YOUR ORIGINAL COPY. -On Unix you can also use the "vimtutor" program. It will make a -scratch copy of the tutor first. +On UNIX-like systems you can also use the "vimtutor" program. +It will make a scratch copy of the tutor first. I have considered adding more advanced lessons but have not found the time. Please let me know how you like it and send any improvements you @@ -19,19 +19,26 @@ Bob Ware, Colorado School of Mines, Golden, Co 80401, USA (303) 273-3987 bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet +All of the above regarding chapter one of the tutorial also applies to chapter +two of the tutorial. Except that you must use the command “vim tutor2†to open +chapter two. + +The chapter two of the tutorial was written by Paul D. Parker. Translation ----------- - -The tutor.xx and tutor.xx.utf-8 files are translated files (where xx is the -language code). The encoding of tutor.xx might be latin1 or other traditional +The files tutor1.xx and tutor1.xx.utf-8 for chapter one and tutor2.xx and +tutor2.xx.utf-8 for chapter two of the tutorial are translated files (where xx +is the language code). +The encoding of tutor1.xx or tutor2.xx might be latin1 or other traditional encoding. If you don't need a translation with such traditional encoding, -you just need to prepare the tutor.xx.utf-8 file. -If you need another encoding, you can also prepare a file named tutor.xx.enc -(replace enc with the actual encoding name). You might also need to adjust the -tutor.vim file. -The "make" command can be used for creating tutor.xx from tutor.xx.utf-8. -See the Makefile for detail. (For some languages, tutor.xx.utf-8 is created -from tutor.xx for historical reasons.) +you just need to prepare the tutor1.xx.utf-8 or tutor2.xx.utf-8 file. +If you need another encoding, you can also prepare a file named tutor1.xx.enc or +tutor2.xx.enc (replace enc with the actual encoding name). You might also need +to adjust the tutor.vim file. +The "make" command can be used for creating tutor1.xx or tutor2.xx from +tutor.xx.utf-8 or tutor2.xx.utf-8, respectively. +See the Makefile for detail. (For some languages, tutor1.xx.utf-8 is created +from tutor1.xx for historical reasons.) [This file was modified for Vim by Bram Moolenaar et al.] diff --git a/runtime/tutor/tutor.pl.cp1250 b/runtime/tutor/tutor.pl.cp1250 deleted file mode 100644 index 129f8ec4f5..0000000000 --- a/runtime/tutor/tutor.pl.cp1250 +++ /dev/null @@ -1,995 +0,0 @@ -=============================================================================== -= W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = -=============================================================================== - - Vim to potê¿ny edytor, który posiada wiele poleceñ, zbyt du¿o, by - wyjaœniæ je wszystkie w tym tutorialu. Ten przewodnik ma nauczyæ - Ciê pos³ugiwaæ siê wystarczaj¹co wieloma komendami, byœ móg³ ³atwo - u¿ywaæ Vima jako edytora ogólnego przeznaczenia. - - Czas potrzebny na ukoñczenie tutoriala to 25 do 30 minut i zale¿y - od tego jak wiele czasu spêdzisz na eksperymentowaniu. - - UWAGA: - Polecenia wykonywane w czasie lekcji zmodyfikuj¹ tekst. Zrób - wczeœniej kopiê tego pliku do æwiczeñ (jeœli zacz¹³eœ komend¹ - "vimtutor", to ju¿ pracujesz na kopii). - - Pamiêtaj, ¿e przewodnik ten zosta³ zaprojektowany do nauki poprzez - æwiczenia. Oznacza to, ¿e musisz wykonywaæ polecenia, by nauczyæ siê ich - prawid³owo. Jeœli bêdziesz jedynie czyta³ tekst, szybko zapomnisz wiele - poleceñ! - - Teraz upewnij siê, ¿e nie masz wciœniêtego Caps Locka i wciskaj j - tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.1.: PORUSZANIE SIÊ KURSOREM - - ** By wykonaæ ruch kursorem, wciœnij h, j, k, l jak pokazano. ** - - ^ - k Wskazówka: h jest po lewej - < h l > l jest po prawej - j j wygl¹da jak strza³ka w dó³ - v - 1. Poruszaj kursorem dopóki nie bêdziesz pewien, ¿e pamiêtasz polecenia. - - 2. Trzymaj j tak d³ugo a¿ bêdzie siê powtarza³. - Teraz wiesz jak dojœæ do nastêpnej lekcji. - - 3. U¿ywaj¹c strza³ki w dó³ przejdŸ do nastêpnej lekcji. - -Uwaga: Jeœli nie jesteœ pewien czegoœ co wpisa³eœ, wciœnij , by wróciæ do - trybu Normal. Wtedy powtórz polecenie. - -Uwaga: Klawisze kursora tak¿e powinny dzia³aæ, ale u¿ywaj¹c hjkl bêdziesz - w stanie poruszaæ siê o wiele szybciej, jak siê tylko przyzwyczaisz. - Naprawdê! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.2.: WYCHODZENIE Z VIM-a - - !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca³¹ lekcjê !! - - 1. Wciœnij (aby upewniæ siê, ¿e jesteœ w trybie Normal). - 2. Wpisz: :q!. - To spowoduje wyjœcie z edytora PORZUCAJ¥C wszelkie zmiany, jakie - zd¹¿y³eœ zrobiæ. Jeœli chcesz zapamiêtaæ zmiany i wyjœæ, - wpisz: :wq - - 3. Kiedy widzisz znak zachêty pow³oki wpisz komendê, ¿eby wróciæ - do tutoriala. Czyli: vimtutor - - 4. Jeœli chcesz zapamiêtaæ polecenia, wykonaj kroki 1. do 3., aby - wyjœæ i wróciæ do edytora. - -UWAGA: :q! porzuca wszelkie zmiany jakie zrobi³eœ. W nastêpnych - lekcjach dowiesz siê jak je zapamiêtywaæ. - - 5. Przenieœ kursor do lekcji 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE - - ** Wciœnij x aby usun¹æ znak pod kursorem. ** - - 1. Przenieœ kursor do linii poni¿ej oznaczonej --->. - - 2. By poprawiæ b³êdy, naprowadŸ kursor na znak do usuniêcia. - - 3. Wciœnij x aby usun¹æ niechciany znak. - - 4. Powtarzaj kroki 2. do 4. dopóki zdanie nie jest poprawne. - ----> Kkrowa prrzeskoczy³a prrzez ksiiê¿ycc. - - 5. Teraz, kiedy zdanie jest poprawione, przejdŸ do Lekcji 1.4. - -UWAGA: Ucz siê przez æwiczenie, nie wkuwanie. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) - - - ** Wciœnij i aby wstawiæ tekst. ** - - 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. - - 2. Aby poprawiæ pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, - gdzie tekst ma byæ wstawiony. - - 3. Wciœnij i a nastêpnie wpisz konieczne poprawki. - - 4. Po poprawieniu b³êdu wciœnij , by wróciæ do trybu Normal. - Powtarzaj kroki 2. do 4., aby poprawiæ ca³e zdanie. - ----> W tej brkje trochê . ----> W tej linii brakuje trochê tekstu. - - 5. Kiedy czujesz siê swobodnie wstawiaj¹c tekst, przejdŸ do - podsumowania poni¿ej. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) - - - ** Wciœnij A by dodaæ tekst. ** - - 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. - Nie ma znaczenia, który to bêdzie znak. - - 2. Wciœnij A i wpisz odpowiednie dodatki. - - 3. Kiedy tekst zosta³ dodany, wciœnij i wróæ do trybu Normalnego. - - 4. Przenieœ kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., - aby poprawiæ zdanie. - ----> Brakuje tu tro - Brakuje tu trochê tekstu. ----> Tu te¿ trochê bra - Tu te¿ trochê brakuje. - - 5. Kiedy ju¿ utrwali³eœ æwiczenie, przejdŸ do lekcji 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.6.: EDYCJA PLIKU - - ** U¿yj :wq aby zapisaæ plik i wyjœæ. ** - - !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca³¹ lekcjê !! - - 1. Zakoñcz tutorial tak jak w lekcji 1.2.: :q! - lub, jeœli masz dostêp do innego terminala, wykonaj kolejne kroki tam. - - 2. W pow³oce wydaj polecenie: vim tutor - "vim" jest poleceniem uruchamiaj¹cym edytor Vim. 'tutor' to nazwa pliku, - jaki chcesz edytowaæ. U¿yj pliku, który mo¿e zostaæ zmieniony. - - 3. Dodaj i usuñ tekst tak, jak siê nauczy³eœ w poprzednich lekcjach. - - 4. Zapisz plik ze zmianami i opuœæ Vima: :wq - - 5. Jeœli zakoñczy³eœ vimtutor w kroku 1., uruchom go ponownie i przejdŸ - do podsumowania poni¿ej. - - 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 1. PODSUMOWANIE - - 1. Poruszasz kursorem u¿ywaj¹c "strza³ek" i klawiszy hjkl . - h (w lewo) j (w dó³) k (do góry) l (w prawo) - - 2. By wejœæ do Vima, (z pow³oki) wpisz: - vim NAZWA_PLIKU - - 3. By wyjœæ z Vima, wpisz: - :q! by usun¹æ wszystkie zmiany. - LUB: :wq by zmiany zachowaæ. - - 4. By usun¹æ znak pod kursorem, wciœnij: x - - 5. By wstawiæ tekst przed kursorem lub dodaæ: - i wpisz tekst wstawi przed kursorem - A wpisz tekst doda na koñcu linii - -UWAGA: Wciœniêcie przeniesie Ciê z powrotem do trybu Normal - lub odwo³a niechciane lub czêœciowo wprowadzone polecenia. - -Teraz mo¿emy kontynuowaæ i przejœæ do Lekcji 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.1.: POLECENIE DELETE (usuwanie) - - - ** Wpisz dw by usun¹æ wyraz. ** - - 1. Wciœnij , by upewniæ siê, ¿e jesteœ w trybie Normal. - - 2. Przenieœ kursor do linii poni¿ej oznaczonej --->. - - 3. Przesuñ kursor na pocz¹tek wyrazu, który chcesz usun¹æ. - - 4. Wpisz dw by usun¹æ wyraz. - - UWAGA: Litera d pojawi siê na dole ekranu. Vim czeka na wpisanie w . - Jeœli zobaczysz inny znak, oznacza to, ¿e wpisa³eœ coœ Ÿle; wciœnij - i zacznij od pocz¹tku. - ----> Jest tu parê papier wyrazów, które kamieñ nie nale¿¹ do no¿yce tego zdania. - - 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie bêdzie poprawne, potem - przejdŸ do Lekcji 2.2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.2.: WIÊCEJ POLECEÑ USUWAJ¥CYCH - - - ** Wpisz d$ aby usun¹æ tekst do koñca linii. ** - - 1. Wciœnij aby siê upewniæ, ¿e jesteœ w trybie Normal. - - 2. Przenieœ kursor do linii poni¿ej oznaczonej --->. - - 3. Przenieœ kursor do koñca poprawnego zdania (PO pierwszej . ). - - 4. Wpisz d$ aby usun¹æ resztê linii. - ----> Ktoœ wpisa³ koniec tego zdania dwukrotnie. zdania dwukrotnie. - - - 5. PrzejdŸ do Lekcji 2.3., by zrozumieæ co siê sta³o. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.3.: O OPERATORACH I RUCHACH - - - Wiele poleceñ zmieniaj¹cych tekst jest z³o¿onych z operatora i ruchu. - Format dla polecenia usuwaj¹cego z operatorem d jest nastêpuj¹cy: - - d ruch - - gdzie: - d - operator usuwania. - ruch - na czym polecenie bêdzie wykonywane (lista poni¿ej). - - Krótka lista ruchów: - w - do pocz¹tku nastêpnego wyrazu WY£¥CZAJ¥C pierwszy znak. - e - do koñca bie¿¹cego wyrazu, W£¥CZAJ¥C ostatni znak. - $ - do koñca linii, W£¥CZAJ¥C ostatni znak. - -W ten sposób wpisanie de usunie znaki od kursora do koñca wyrazu. - -UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor - tak, jak to okreœlono. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.4.: U¯YCIE MNO¯NIKA DLA RUCHU - - - ** Wpisanie liczby przed ruchem powtarza ruch odpowiedni¹ iloœæ razy. ** - - 1. Przenieœ kursor na pocz¹tek linii poni¿ej zaznaczonej --->. - - 2. Wpisz 2w aby przenieœæ kursor o dwa wyrazy do przodu. - - 3. Wpisz 3e aby przenieœæ kursor do koñca trzeciego wyrazu w przód. - - 4. Wpisz 0 (zero), aby przenieœæ kursor na pocz¹tek linii. - - 5. Powtórz kroki 2. i 3. z innymi liczbami. - - - ---> To jest zwyk³y wiersz z wyrazami, po których mo¿esz siê poruszaæ. - - 6. PrzejdŸ do lekcji 2.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.5.: U¯YCIE MNO¯NIKA, BY WIÊCEJ USUN¥Æ - - - ** Wpisanie liczby z operatorem powtarza go odpowiedni¹ iloœæ razy. ** - - W wy¿ej wspomnianej kombinacji operatora usuwania i ruchu podaj mno¿nik - przed ruchem, by wiêcej usun¹æ: - d liczba ruch - - 1. Przenieœ kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. - - 2. Wpisz 2dw aby usun¹æ dwa wyrazy KAPITALIKAMI. - - 3. Powtarzaj kroki 1. i 2. z innymi mno¿nikami, aby usun¹æ kolejne wyrazy - KAPITALIKAMI jednym poleceniem - ----> ta ASD WE linia QWE ASDF ZXCV FG wyrazów zosta³a ERT FGH CF oczyszczona. - -UWAGA: Mno¿nik pomiêdzy operatorem d i ruchem dzia³a podobnie do ruchu bez - operatora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.6.: OPEROWANIE NA LINIACH - - - ** Wpisz dd aby usun¹æ ca³¹ liniê. ** - - Z powodu czêstoœci usuwania ca³ych linii, projektanci Vi zdecydowali, ¿e - bêdzie ³atwiej wpisaæ dwa razy d aby usun¹æ liniê. - - 1. Przenieœ kursor do drugiego zdania z wierszyka poni¿ej. - 2. Wpisz dd aby usun¹æ wiersz. - 3. Teraz przenieœ siê do czwartego wiersza. - 4. Wpisz 2dd aby usun¹æ dwa wiersze. - ----> 1) Ró¿e s¹ czerwone, ----> 2) B³oto jest fajne, ----> 3) Fio³ki s¹ niebieskie, ----> 4) Mam samochód, ----> 5) Zegar podaje czas, ----> 6) Cukier jest s³odki, ----> 7) I ty te¿. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.7.: POLECENIE UNDO (cofnij) - - - ** Wciœnij u aby cofn¹æ skutki ostatniego polecenia. - U zaœ, by cofn¹æ skutki dla ca³ej linii. ** - - 1. Przenieœ kursor do zdania poni¿ej oznaczonego ---> i umieœæ go na - pierwszym b³êdzie. - 2. Wpisz x aby usun¹æ pierwszy niechciany znak. - 3. Teraz wciœnij u aby cofn¹æ skutki ostatniego polecenia. - 4. Tym razem popraw wszystkie b³êdy w linii u¿ywaj¹c polecenia x . - 5. Teraz wciœnij wielkie U aby przywróciæ liniê do oryginalnego stanu. - 6. Teraz wciœnij u kilka razy, by cofn¹æ U i poprzednie polecenia. - 7. Teraz wpisz CTRL-R (trzymaj równoczeœnie wciœniête klawisze CTRL i R) - kilka razy, by cofn¹æ cofniêcia. - ----> Poopraw b³êdyyy w teej liniii i zaamiieñ je prrzez coofnij. - - 8. To s¹ bardzo po¿yteczne polecenia. - - PrzejdŸ teraz do podsumowania Lekcji 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 2. PODSUMOWANIE - - - 1. By usun¹æ znaki od kursora do nastêpnego wyrazu, wpisz: dw - 2. By usun¹æ znaki od kursora do koñca linii, wpisz: d$ - 3. By usun¹æ ca³¹ liniê: dd - 4. By powtórzyæ ruch, poprzedŸ go liczb¹: 2w - 5. Format polecenia zmiany to: - operator [liczba] ruch - gdzie: - operator - to, co trzeba zrobiæ (np. d dla usuwania) - [liczba] - opcjonalne, ile razy powtórzyæ ruch - ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), - $ (do koñca linii) etc. - - 6. By przejœæ do pocz¹tku linii, u¿yj zera: 0 - 7. By cofn¹æ poprzednie polecenie, wpisz: u (ma³e u) - By cofn¹æ wszystkie zmiany w linii, wpisz: U (wielkie U) - By cofn¹æ cofniêcie, wpisz: CTRL-R - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.1.: POLECENIE PUT (wstaw) - - - ** Wpisz p by wstawiæ ostatnie usuniêcia za kursorem. ** - - 1. Przenieœ kursor do pierwszej linii ---> poni¿ej. - - 2. Wpisz dd aby usun¹æ liniê i przechowaæ j¹ w rejestrze Vima. - - 3. Przenieœ kursor do linii c), POWY¯EJ tej, gdzie usuniêta linia powinna - siê znajdowaæ. - - 4. Wciœnij p by wstawiæ liniê poni¿ej kursora. - - 5. Powtarzaj kroki 2. do 4. a¿ znajd¹ siê w odpowiednim porz¹dku. - ----> d) Jak dwa anio³ki. ----> b) Na dole fio³ki, ----> c) A my siê kochamy, ----> a) Na górze ró¿e, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.2.: POLECENIE REPLACE (zast¹p) - - - ** Wpisz rx aby zast¹piæ znak pod kursorem na x . ** - - 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej ---> - - 2. Ustaw kursor na pierwszym b³êdzie. - - 3. Wpisz r a potem znak jaki powinien go zast¹piæ. - - 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bêdzie taka, jak druga. - ----> Kjedy ten wiersz bi³ wstókiwany, ktoœ wcizn¹³ perê z³ych klawirzy! ----> Kiedy ten wiersz by³ wstukiwany, ktoœ wcisn¹³ parê z³ych klawiszy! - - 5. Teraz czas na Lekcjê 3.3. - - -UWAGA: Pamiêtaj, by uczyæ siê æwicz¹c, a nie pamiêciowo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.3.: OPERATOR CHANGE (zmieñ) - - ** By zmieniæ do koñca wyrazu, wpisz ce . ** - - 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. - - 2. Umieœæ kursor na u w lunos. - - 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). - - 4. Wciœnij i przejdŸ do nastêpnej planowanej zmiany. - - 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie bêdzie takie same, - jak drugie. - ----> Ta lunos ma pire s³ów, które t¿ina zbnic u¿ifajonc pcmazu zmieñ. ----> Ta linia ma parê s³ów, które trzeba zmieniæ u¿ywaj¹c polecenia zmieñ. - - Zauwa¿, ¿e ce nie tylko zamienia wyraz, ale tak¿e zmienia tryb na - Insert (wprowadzanie). - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.4.: WIÊCEJ ZMIAN U¯YWAJ¥C c - - - ** Polecenie change u¿ywa takich samych ruchów, jak delete. ** - - 1. Operator change dzia³a tak samo, jak delete. Format wygl¹da tak: - - c [liczba] ruch - - 2. Ruchy s¹ tak¿e takie same, np.: w (wyraz), $ (koniec linii) etc. - - 3. Przenieœ siê do pierwszej linii poni¿ej oznaczonej ---> - - 4. Ustaw kursor na pierwszym b³êdzie. - - 5. Wpisz c$ , popraw koniec wiersza i wciœnij . - ----> Koniec tego wiersza musi byæ poprawiony, aby wygl¹da³ tak, jak drugi. ----> Koniec tego wiersza musi byæ poprawiony u¿ywaj¹c polecenia c$ . - -UWAGA: Mo¿esz u¿ywaæ aby poprawiaæ b³êdy w czasie pisania. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 3. PODSUMOWANIE - - - 1. Aby wstawiæ tekst, który zosta³ wczeœniej usuniêty wciœnij p . To - polecenie wstawia skasowany tekst PO kursorze (jeœli ca³a linia - zosta³a usuniêta, zostanie ona umieszczona w linii poni¿ej kursora). - - 2. By zamieniæ znak pod kursorem, wciœnij r a potem znak, który ma zast¹piæ - oryginalny. - - 3. Operator change pozwala Ci na zast¹pienie od kursora do miejsca, gdzie - zabra³by Ciê ruch. Np. wpisz ce aby zamieniæ tekst od kursora do koñca - wyrazu, c$ aby zmieniæ tekst do koñca linii. - - 4. Format do polecenia change (zmieñ): - - c [liczba] obiekt - - Teraz przejdŸ do nastêpnej lekcji. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.1.: PO£O¯ENIE KURSORA ORAZ STATUS PLIKU - - ** Naciœnij CTRL-G aby zobaczyæ swoje po³o¿enie w pliku i status - pliku. Naciœnij G aby przejœæ do linii w pliku. ** - - UWAGA: Przeczytaj ca³¹ lekcjê zanim wykonasz jakieœ polecenia!!! - - 1. Przytrzymaj klawisz CTRL i wciœnij g . U¿ywamy notacji CTRL-G. - Na dole strony pojawi siê pasek statusu z nazw¹ pliku i pozycj¹ w pliku. - Zapamiêtaj numer linii dla potrzeb kroku 3. - -UWAGA: Mo¿esz te¿ zobaczyæ pozycjê kursora w prawym, dolnym rogu ekranu. - Dzieje siê tak kiedy ustawiona jest opcja 'ruler' (wiêcej w lekcji 6.). - - 2. Wciœnij G aby przejœæ na koniec pliku. - Wciœnij gg aby przejœæ do pocz¹tku pliku. - - 3. Wpisz numer linii, w której by³eœ a potem G . To przeniesie Ciê - z powrotem do linii, w której by³eœ kiedy wcisn¹³eœ CTRL-G. - - 4. Jeœli czujesz siê wystarczaj¹co pewnie, wykonaj kroki 1-3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.2.: POLECENIE SZUKAJ - - - ** Wpisz / a nastêpnie wyra¿enie, aby je znaleŸæ. ** - - 1. W trybie Normal wpisz / . Zauwa¿, ¿e znak ten oraz kursor pojawi¹ - siê na dole ekranu tak samo, jak polecenie : . - - 2. Teraz wpisz b³ond . To jest s³owo, którego chcesz szukaæ. - - 3. By szukaæ tej samej frazy ponownie, po prostu wciœnij n . - Aby szukaæ tej frazy w przeciwnym, kierunku wciœnij N . - - 4. Jeœli chcesz szukaæ frazy do ty³u, u¿yj polecenia ? zamiast / . - - 5. Aby wróciæ gdzie by³eœ, wciœnij CTRL-O. Powtarzaj, by wróciæ dalej. CTRL-I - idzie do przodu. - -Uwaga: 'b³ond' to nie jest metoda, by przeliterowaæ b³¹d; 'b³ond' to b³¹d. -Uwaga: Kiedy szukanie osi¹gnie koniec pliku, bêdzie kontynuowane od pocz¹tku - o ile opcja 'wrapscan' nie zosta³a przestawiona. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.3.: W POSZUKIWANIU PARUJ¥CYCH NAWIASÓW - - - ** Wpisz % by znaleŸæ paruj¹cy ), ], lub } . ** - - 1. Umieœæ kursor na którymœ z (, [, lub { w linii poni¿ej oznaczonej --->. - - 2. Teraz wpisz znak % . - - 3. Kursor powinien siê znaleŸæ na paruj¹cym nawiasie. - - 4. Wciœnij % aby przenieœæ kursor z powrotem do paruj¹cego nawiasu. - - 5. Przenieœ kursor do innego (,),[,],{ lub } i zobacz co robi % . - ----> To ( jest linia testowa z (, [, ] i {, } . )) - -Uwaga: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu - z niesparowanymi nawiasami! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) - - - ** Wpisz :s/stary/nowy/g aby zamieniæ 'stary' na 'nowy'. ** - - 1. Przenieœ kursor do linii poni¿ej oznaczonej --->. - - 2. Wpisz :s/czaas/czas . Zauwa¿, ¿e to polecenie zmienia - tylko pierwsze wyst¹pienie 'czaas' w linii. - - 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianê (substytucjê) - globalnie w ca³ej linii. Zmienia wszystkie wyst¹pienia 'czaas' w linii. - ----> Najlepszy czaas na zobaczenie naj³adniejszych kwiatów to czaas wiosny. - - 4. Aby zmieniæ wszystkie wyst¹pienia ³añcucha znaków pomiêdzy dwoma liniami, - wpisz: :#,#s/stare/nowe/g gdzie #,# s¹ numerami linii ograniczaj¹cych - region, gdzie ma nast¹piæ zamiana. - wpisz :%s/stare/nowe/g by zmieniæ wszystkie wyst¹pienia w ca³ym pliku. - wpisz :%s/stare/nowe/gc by zmieniæ wszystkie wyst¹pienia w ca³ym - pliku, prosz¹c o potwierdzenie za ka¿dym razem. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 4. PODSUMOWANIE - - 1. CTRL-G poka¿e Twoj¹ pozycjê w pliku i status pliku. SHIFT-G przenosi - Ciê do koñca pliku. - G przenosi do koñca pliku. - liczba G przenosi do linii [liczba]. - gg przenosi do pierwszej linii. - - 2. Wpisanie / a nastêpnie ³añcucha znaków szuka ³añcucha DO PRZODU. - Wpisanie ? a nastêpnie ³añcucha znaków szuka ³añcucha DO TY£U. - Po wyszukiwaniu wciœnij n by znaleŸæ nastêpne wyst¹pienie szukanej - frazy w tym samym kierunku lub N by szukaæ w kierunku przeciwnym. - CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. - - 3. Wpisanie % gdy kursor znajduje siê na (,),[,],{, lub } lokalizuje - paruj¹cy znak. - - 4. By zamieniæ pierwszy stary na nowy w linii, wpisz :s/stary/nowy - By zamieniæ wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g - By zamieniæ frazy pomiêdzy dwoma liniami # wpisz :#,#s/stary/nowy/g - By zamieniæ wszystkie wyst¹pienia w pliku, wpisz :%s/stary/nowy/g - By Vim prosi³ Ciê o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE? - - - ** Wpisz :! a nastêpnie zewnêtrzne polecenie, by je wykonaæ. ** - - 1. Wpisz znajome polecenie : by ustawiæ kursor na dole ekranu. To pozwala - na wprowadzenie komendy linii poleceñ. - - 2. Teraz wstaw ! (wykrzyknik). To umo¿liwi Ci wykonanie dowolnego - zewnêtrznego polecenia pow³oki. - - 3. Jako przyk³ad wpisz ls za ! a nastêpnie wciœnij . To polecenie - poka¿e spis plików w Twoim katalogu, tak jakbyœ by³ przy znaku zachêty - pow³oki. Mo¿esz te¿ u¿yæ :!dir jeœli ls nie dzia³a. - -Uwaga: W ten sposób mo¿na wykonaæ wszystkie polecenia pow³oki. -Uwaga: Wszystkie polecenia : musz¹ byæ zakoñczone . - Od tego momentu nie zawsze bêdziemy o tym wspominaæ. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW - - - ** By zachowaæ zmiany w tekœcie, wpisz :w NAZWA_PLIKU . ** - - 1. Wpisz :!dir lub :!ls by zobaczyæ spis plików w katalogu. - Ju¿ wiesz, ¿e musisz po tym wcisn¹æ . - - 2. Wybierz nazwê pliku, jaka jeszcze nie istnieje, np. TEST. - - 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw¹ pliku jak¹ wybra³eœ.) - - 4. To polecenie zapamiêta ca³y plik (Vim Tutor) pod nazw¹ TEST. - By to sprawdziæ, wpisz :!dir lub :!ls ¿eby znowu zobaczyæ listê plików. - -Uwaga: Zauwa¿, ¿e gdybyœ teraz wyszed³ z Vima, a nastêpnie wszed³ ponownie - poleceniem vim TEST , plik by³by dok³adn¹ kopi¹ tutoriala, kiedy go - zapisywa³eœ. - - 5. Teraz usuñ plik wpisuj¹c (MS-DOS): :!del TEST - lub (Unix): :!rm TEST - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU - - - ** By zachowaæ czêœæ pliku, wpisz v ruch :w NAZWA_PLIKU ** - - 1. Przenieœ kursor do tego wiersza. - - 2. Wciœnij v i przenieœ kursor do punktu 5. Zauwa¿, ¿e tekst zosta³ - podœwietlony. - - 3. Wciœnij znak : . Na dole ekranu pojawi siê :'<,'> . - - 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. - Upewnij siê, ¿e widzisz :'<,'>w TEST zanim wciœniesz Enter. - - 5. Vim zapisze wybrane linie do pliku TEST. U¿yj :!dir lub :!ls , ¿eby to - zobaczyæ. Jeszcze go nie usuwaj! U¿yjemy go w nastêpnej lekcji. - -UWAGA: Wciœniêcie v zaczyna tryb Wizualny. Mo¿esz poruszaæ kursorem, by - zmieniæ rozmiary zaznaczenia. Mo¿esz te¿ u¿yæ operatora, by zrobiæ coœ - z tekstem. Na przyk³ad d usuwa tekst. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.4.: WSTAWIANIE I £¥CZENIE PLIKÓW - - - ** By wstawiæ zawartoœæ pliku, wpisz :r NAZWA_PLIKU ** - - 1. Umieœæ kursor tu¿ powy¿ej tej linii. - -UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdŸ - do DO£U, by zobaczyæ ponownie tê lekcjê. - - 2. Teraz wczytaj plik TEST u¿ywaj¹c polecenia :r TEST , gdzie TEST - jest nazw¹ pliku. - Wczytany plik jest umieszczony poni¿ej linii z kursorem. - - 3. By sprawdziæ czy plik zosta³ wczytany, cofnij kursor i zobacz, ¿e - teraz s¹ dwie kopie Lekcji 5.3., orygina³ i kopia z pliku. - -UWAGA: Mo¿esz te¿ wczytaæ wyjœcie zewnêtrznego polecenia. Na przyk³ad - :r !ls wczytuje wyjœcie polecenia ls i umieszcza je pod poni¿ej - kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 5. PODSUMOWANIE - - - 1. :!polecenie wykonuje polecenie zewnêtrzne. - - U¿ytecznymi przyk³adami s¹: - - :!dir - pokazuje spis plików w katalogu. - - :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. - - 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazw¹ NAZWA_PLIKU. - - 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. - - 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do - bie¿¹cego pliku poni¿ej kursora. - - 5. :r !dir wczytuje wyjœcie polecenia dir i umieszcza je poni¿ej kursora. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.1.: POLECENIE OPEN (otwórz) - - - ** Wpisz o by otworzyæ liniê poni¿ej kursora i przenieœæ siê do - trybu Insert (wprowadzanie). ** - - 1. Przenieœ kursor do linii poni¿ej oznaczonej --->. - - 2. Wpisz o (ma³e), by otworzyæ liniê PONI¯EJ kursora i przenieœæ siê - do trybu Insert (wprowadzanie). - - 3. Wpisz trochê tekstu i wciœnij by wyjœæ z trybu Insert (wprowadzanie). - ----> Po wciœniêciu o kursor znajdzie siê w otwartej linii w trybie Insert. - - 4. By otworzyæ liniê POWY¯EJ kursora, wciœnij wielkie O zamiast ma³ego - o . Wypróbuj to na linii poni¿ej. - ----> Otwórz liniê powy¿ej wciskaj¹c SHIFT-O gdy kursor bêdzie na tej linii. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.2.: POLECENIE APPEND (dodaj) - - - ** Wpisz a by dodaæ tekst ZA kursorem. ** - - 1. Przenieœ kursor do pocz¹tku pierwszej linii poni¿ej oznaczonej ---> - - 2. Wciskaj e dopóki kursor nie bêdzie na koñcu li . - - 3. Wpisz a (ma³e), aby dodaæ tekst ZA znakiem pod kursorem. - - 4. Dokoñcz wyraz tak, jak w linii poni¿ej. Wciœnij aby opuœciæ tryb - Insert. - - 5. U¿yj e by przejœæ do kolejnego niedokoñczonego wyrazu i powtarzaj kroki - 3. i 4. - ----> Ta li poz Ci æwi dodaw teks do koñ lin ----> Ta linia pozwoli Ci æwiczyæ dodawanie tekstu do koñca linii. - -Uwaga: a , i oraz A prowadz¹ do trybu Insert, jedyn¹ ró¿nic¹ jest miejsce, - gdzie nowe znaki bêd¹ dodawane. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) - - - ** Wpisz wielkie R by zamieniæ wiêcej ni¿ jeden znak. ** - - 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. Przenieœ - kursor do pierwszego xxx . - - 2. Wciœnij R i wpisz numer poni¿ej w drugiej linii, tak, ¿e zast¹pi on - xxx. - - 3. Wciœnij by opuœciæ tryb Replace. Zauwa¿, ¿e reszta linii pozostaje - niezmieniona. - - 5. Powtarzaj kroki by wymieniæ wszystkie xxx. - ----> Dodanie 123 do xxx daje xxx. ----> Dodanie 123 do 456 daje 579. - -UWAGA: Tryb Replace jest jak tryb Insert, ale ka¿dy znak usuwa istniej¹cy - znak. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU - - - ** u¿yj operatora y aby skopiowaæ tekst i p aby go wkleiæ ** - - 1. PrzejdŸ do linii oznaczonej ---> i umieœæ kursor za "a)". - - 2. WejdŸ w tryb Wizualny v i przenieœ kursor na pocz¹tek "pierwszy". - - 3. Wciœnij y aby kopiowaæ (yankowaæ) podœwietlony tekst. - - 4. Przenieœ kursor do koñca nastêpnej linii: j$ - - 5. Wciœnij p aby wkleiæ (wpakowaæ) tekst. Dodaj: a drugi . - - 6. U¿yj trybu Wizualnego, aby wybraæ " element.", yankuj go y , przejdŸ do - koñca nastêpnej linii j$ i upakuj tam tekst z p . - ----> a) to jest pierwszy element. - b) -Uwaga: mo¿esz u¿yæ y jako operatora; yw kopiuje jeden wyraz. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.5.: USTAWIANIE OPCJI - - -** Ustawianie opcji tak, by szukaj lub substytucja ignorowa³y wielkoœæ liter ** - - 1. Szukaj 'ignore' wpisuj¹c: /ignore - Powtórz szukanie kilka razy naciskaj¹c klawisz n . - - 2. Ustaw opcjê 'ic' (Ignore case -- ignoruj wielkoœæ liter) poprzez - wpisanie: :set ic - - 3. Teraz szukaj 'ignore' ponownie wciskaj¹c: n - Zauwa¿, ¿e Ignore i IGNORE tak¿e s¹ teraz znalezione. - - 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is - - 5. Teraz wprowadŸ polecenie szukaj ponownie i zobacz co siê zdarzy: - /ignore - - 6. Aby wy³¹czyæ ignorowanie wielkoœci liter: :set noic - -Uwaga: Aby usun¹æ podœwietlanie dopasowañ, wpisz: :nohlsearch -Uwaga: Aby ignorowaæ wielkoœæ liter dla jednego wyszukiwania: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 6. PODSUMOWANIE - - - 1. Wpisanie o otwiera liniê PONI¯EJ kursora. - Wpisanie O otwiera liniê POWY¯EJ kursora. - - 2. Wpisanie a wstawia tekst ZA znakiem, na którym jest kursor. - Wpisanie A dodaje tekst na koñcu linii. - - 3. Polecenie e przenosi do koñca wyrazu. - 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. - 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki - nie zostanie wciœniêty . - 6. Wpisanie ":set xxx" ustawia opcjê "xxx". Niektóre opcje: - 'ic' 'ignorecase' ignoruj wielkoœæ znaków - 'is' 'incsearch' poka¿ czêœciowe dopasowania - 'hls' 'hlsearch' podœwietl wszystkie dopasowania - Mo¿esz u¿yæ zarówno d³ugiej, jak i krótkiej formy. - 7. Dodaj "no", aby wy³¹czyæ opcjê: :set noic - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.1. JAK UZYSKAÆ POMOC? - - ** U¿ycie systemu pomocy on-line ** - - Vim posiada bardzo dobry system pomocy on-line. By zacz¹æ, spróbuj jednej - z trzech mo¿liwoœci: - - wciœnij klawisz (jeœli taki masz) - - wciœnij klawisz (jeœli taki masz) - - wpisz :help - - Przeczytaj tekst w oknie pomocy, aby dowiedzieæ siê jak dzia³a pomoc. - wpisz CTRL-W CTRL-W aby przeskoczyæ z jednego okna do innego - wpisz :q aby zamkn¹æ okno pomocy. - - Mo¿esz te¿ znaleŸæ pomoc na ka¿dy temat podaj¹c argument polecenia ":help". - Spróbuj tych (nie zapomnij wcisn¹æ ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO - - ** W³¹cz mo¿liwoœci Vima ** - - Vim ma o wiele wiêcej mo¿liwoœci ni¿ Vi, ale wiêkszoœæ z nich jest domyœlnie - wy³¹czona. Jeœli chcesz w³¹czyæ te mo¿liwoœci na starcie musisz utworzyæ - plik "vimrc". - - 1. Pocz¹tek edycji pliku "vimrc" zale¿y od Twojego systemu: - :edit ~/.vimrc dla Uniksa - :edit ~/_vimrc dla MS-Windows - 2. Teraz wczytaj przyk³adowy plik "vimrc": - :read $VIMRUNTIME/vimrc_example.vim - 3. Zapisz plik: - :w - - Nastêpnym razem, gdy zaczniesz pracê w Vimie bêdzie on u¿ywaæ podœwietlania - sk³adni. Mo¿esz dodaæ wszystkie swoje ulubione ustawienia do tego pliku - "vimrc". - Aby uzyskaæ wiêcej informacji, wpisz :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 7.3.: UZUPE£NIANIE - - - ** Uzupe³nianie linii poleceñ z CTRL-D i ** - - 1. Upewnij siê, ¿e Vim nie jest w trybie kompatybilnoœci: :set nocp - - 2. Zerknij, jakie pliki s¹ w bie¿¹cym katalogu: :!ls lub :!dir - - 3. Wpisz pocz¹tek polecenia: :e - - 4. Wciœnij CTRL-D i Vim poka¿e listê poleceñ, jakie zaczynaj¹ siê na "e". - - 5. Wciœnij i Vim uzupe³ni polecenie do ":edit". - - 6. Dodaj spacjê i zacznij wpisywaæ nazwê istniej¹cego pliku: :edit FIL - - 7. Wciœnij . Vim uzupe³ni nazwê (jeœli jest niepowtarzalna). - -UWAGA: Uzupe³nianie dzia³a dla wielu poleceñ. Spróbuj wcisn¹æ CTRL-D i . - U¿yteczne zw³aszcza przy :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 7. PODSUMOWANIE - - - 1. Wpisz :help albo wciœnij lub aby otworzyæ okno pomocy. - - 2. Wpisz :help cmd aby uzyskaæ pomoc o cmd . - - 3. Wpisz CTRL-W CTRL-W aby przeskoczyæ do innego okna. - - 4. Wpisz :q aby zamkn¹æ okno pomocy. - - 5. Utwórz plik startowy vimrc aby zachowaæ wybrane ustawienia. - - 6. Po poleceniu : , wciœnij CTRL-D aby zobaczyæ mo¿liwe uzupe³nienia. - Wciœnij aby u¿yæ jednego z nich. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Tutaj siê koñczy tutorial Vima. Zosta³ on pomyœlany tak, aby daæ krótki - przegl¹d jego mo¿liwoœci, wystarczaj¹cy byœ móg³ go u¿ywaæ. Jest on - daleki od kompletnoœci, poniewa¿ Vim ma o wiele, wiele wiêcej poleceñ. - - Dla dalszej nauki rekomendujemy ksi¹¿kê: - Vim - Vi Improved - autor Steve Oualline - Wydawca: New Riders - Pierwsza ksi¹¿ka ca³kowicie poœwiêcona Vimowi. U¿yteczna zw³aszcza dla - pocz¹tkuj¹cych. Zawiera wiele przyk³adów i ilustracji. - Zobacz https://iccf-holland.org./click5.html - - Starsza pozycja i bardziej o Vi ni¿ o Vimie, ale tak¿e warta - polecenia: - Learning the Vi Editor - autor Linda Lamb - Wydawca: O'Reilly & Associates Inc. - To dobra ksi¹¿ka, by dowiedzieæ siê niemal wszystkiego, co chcia³byœ zrobiæ - z Vi. Szósta edycja zawiera te¿ informacje o Vimie. - - Po polsku wydano: - Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins - Wydawca: Helion 2001 (O'Reilly). - ISBN: 83-7197-472-8 - http://helion.pl/ksiazki/vilek.htm - Jest to ksi¹¿eczka zawieraj¹ca spis poleceñ vi i jego najwa¿niejszych - klonów (miêdzy innymi Vima). - - Edytor vi - autorzy Linda Lamb i Arnold Robbins - Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania - ISBN: 83-7197-539-2 - http://helion.pl/ksiazki/viedyt.htm - Rozszerzona wersja Learning the Vi Editor w polskim t³umaczeniu. - - Ten tutorial zosta³ napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, - Colorado School of Mines korzystaj¹c z pomocy Charlesa Smitha, - Colorado State University. - E-mail: bware@mines.colorado.edu. - - Zmodyfikowane dla Vima przez Brama Moolenaara. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Przet³umaczone przez Miko³aja Machowskiego, - Sierpieñ 2001, - rev. Marzec 2002 - 2nd rev. Wrzesieñ 2004 - 3rd rev. Marzec 2006 - 4th rev. Grudzieñ 2008 - Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl diff --git a/runtime/tutor/tutor.sk.cp1250 b/runtime/tutor/tutor.sk.cp1250 deleted file mode 100644 index a1aee207c5..0000000000 --- a/runtime/tutor/tutor.sk.cp1250 +++ /dev/null @@ -1,1008 +0,0 @@ -=============================================================================== -= V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = -=============================================================================== - - Vim je ve¾mi výkonný editor, ktorý má príliž ve¾a príkazov na to aby - mohli byt všetky popísané vo výuke akou je táto. Táto výuka - popisuje dostatoèné množstvo príkazov nato aby bolo možné používa - Vim ako viacúèelový editor. - - Približný èas potrebný na prebratie tejto výuky je 25-30 minút, - závisí na tom, ko¾ko je stráveného èasu s preskúšavaním. - - UPOZORNENIE: - Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby - sa mohlo precvièova na òom (pri štarte "vimtutor" je toto kópia). - - Je dôležité zapamäta si, že táto výuka je vytvorená pre výuku - používaním. To znamená, že je potrebné si príkazy vyskúša, aby bolo - uèenie správne. Ak len èitas text, príkazy zabudneš! - - Presvedè sa, že Caps-Lock NIEJE stlaèený a stlaèt klávesu - j nieko¾ko krát, aby sa kurzor posunul nato¾ko, že lekcia 1.1 - celkom zaplní obrazovku. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.1: POHYB KURZOROM - - - ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** - ^ - k Funkcia: Klávesa h je na¾avo a vykoná pohyb do¾ava. - < h l > Klávesa l je napravo a vykoná pohyb doprava. - j Klávesa j vyzerá ako šípka dole - v - 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. - - 2. Drž stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ----> Teraz sa už vieš pohybova na nasledujúcu lekciu. - - 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. - -Poznámka: Ak si niesi istý tým èo si napísal, stlaè - na prechod do normálneho módu. - -Poznámka: Kurzorové klávesy sú tiež funkèné. Ale používaním hjkl sa budeš - schopný pohybova rýchlejšie, keï si zvykneš ich používa. Naozaj! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.2: ZATVÁRANIE VIMU - - - !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! - - 1. Stlaè klávesu (aby si sa uèite nachádzal v normálnom móde) - - 2. Napíš: :q! . - Tým ukonèíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. - - 3. Keï sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš - spe do tejto výuky. To môže by: vimtutor - - 4. Ak si si tieto kroky spo¾ahlivo zapamätal, vykonaj kroky 1 až 3, pre - ukonèenie a znovu spustenie editora. - -POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O nieko¾ko lekcií - sa nauèíš ako uloži zmeny do súboru - - 5. presuò kurzor dole na lekciu 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE - - -** Stlaèenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** - - 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - - 2. Aby si mohol odstráni chyby, pohybuj kurzorom kým neprejde na znak, - ktorý chceš zmaza. - - 3. Stlaè klávesu x aby sa zmazal nechcený znak. - - 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. - ----> Kraava skooèilla ccezz mesiiac. - - 5. Ak je veta správna, prejdi na lekciu 1.4. - -POZNÁMKA: Neskúšaj si zapamäta obsah tejto výuky, ale sa uè používaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE - - - ** Stlaèenie klávesy i umožòuje vkladanie textu. ** - - 1. Presuò kurzor nižšie na prvý riadok za znaèku --->. - - 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, - presuò kurzor na prvý znak za misto, kde má by text vložený. - - 3. Stlaè klávesu i a napíš potrebný text. - - 4. Po opravení každej chyby, stlaè pre návrat do normálneho módu. - Zopakuj kroky 2 až 4 kým nieje veta správna. - ----> Tu je text chýbajúci tejto. ----> Tu je nejaký text chýbajúci od tejto èiary. - - 5. Keï sa dostatoène nauèíš vklada text, prejdi na nasledujúce zhrnutie. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE - - - ** Stlaèenie klávesy A umožòuje pridáva text. ** - - 1. Presuò kurozr nižšie na prvý riadok za znaèkou --->. - Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. - - 2. Stlaè klávesu A a napíš potrebný text. - - 3. Po pridaní textu stlaè klávesu pre návrat do Normálneho módu. - - 4. Presuò kurozr na druhý riadok oznaèený ---> a zopakuj - kroky 2 a 3 kým nieje veta správna. - ----> Tu je nejaký text chýbajúci o - Tu je nejaký text chýbajúci od tia¾to. ----> Tu tiež chýba nej - Tu tiež chýba nejaký text. - - 5. Keï sa dostatoène nauèíš pridáva text, prejdi na lekciu 1.6. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6: EDITÁCIA SÚBORU - - - ** Napísaním :wq sa súbor uloží a zavrie ** - -!! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! - -1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! - -2. Do príkazového riadku napíš príkaz: vim tutor - 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, - ktorý chceš editova. Použi taký súbor, ktorý môžeš meni. - -3. Vlož a zmaž text tak, ako si sa nauèil v predošlých lekciach. - -4. Ulož súbor so zmenami a opusti Vim príkazom: :wq - -5. Reštartuj vimtutor a presuò sa dole na nasledujúce zhrnutie. - -6. Urob tak po preèítaní predošlých krokov a porozumeniu im. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZHRNUTIE LEKCIE 1 - - - 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. - h (do lava) j (dole) k (hore) l (doprava) - - 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME - - 3. Na ukonèenie Vimu napíš: :q! pre zrušenie všetkých zmien - alebo napíš: :wq pre uloženie zmien. - - 4. Na zmazanie znaku na mieste kurzora napíš: x - - 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: - i napíš vkladaný text vkladanie pred kurzor - A napíš pridávaný text vkladanie za riadok - -POZNÁMKA: Stlaèenie a premiestní do normálneho módu alebo zruší - nejaký nechcený a èiastoène dokonèený príkaz. - -Teraz pokraèuj lekciou 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.1: Mazacie príkazy - - - ** Napísanie príkazu dw zmaže znaky do konca slova. ** - -1. Stlaè aby si bol bezpeène v normálnom móde. - -2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - -3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza. - -4. Napíš dw aby slovo zmizlo. - -POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keï ho - napíšeš. Vim na teba poèká, aby si mohol napísa - písmeno w. Ak vidíš nieèo iné ako d , tak si napísal - nesprávny znak; stlaè a zaèni znova. - ----> Tu je nieko¾ko slov zábava, ktoré nie patria list do tejto vety. - -5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV - - - ** Napísanie príkazu d$ zmaže znaky do konca riadku ** - -1. Stlaè aby si bol bezpeène v normálnom móde. - -2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - -3. Presuò kurzor na koniec správnej vety (ZA prvú bodku). - -4. Napíš d$ aby sa zmazali znaky do konca riadku. - ----> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. - - -5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.3: OPERÁTORY A POHYBY - - Ve¾a príkazov, ktoré menia text sú odvodené od operátorov a pohybov. - Formát pre príkaz mazania klávesou d je nasledovný: - - d pohyb - - kde: - d - je mazací operátor - pohyb - je to èo operátor vykonáva (vypísané nižšie) - - Krátky list pohybov: - w - do zaèiatku ïalšieho slova, okrem jeho prvého písmena. - e - do konca terajšieho slova, vrátane posledného znaku. - $ - do konca riadku, vrátane posledného znaku - - Takže napísaním de sa zmaže všetko od kurzora do konca slova. - -POZNÁMKA: Stlaèením iba pohybu v normálnom móde bez operátora - sa presunie kurzor tak ako je to špecivikované. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.4: Použitie viacnásobného pohybu - - - ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** - - 1. Presuò kurozr nižšie na zaèiatok riadku oznaèeného --->. - - 2. Napíš 2w a kurozr sa presunie o dve slová vpred. - - 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. - - 4. Napíš 0 (nula) a kurozr sa presunie na zaèiatok riadku. - - 5. Zopakuj kroky 2 a 3 s rôznymi èíslami. - ----> Toto je riadok so slovami po kotrých sa môžete pohybova. - - 6. Prejdi na lekciu 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE - - - ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** - - V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož poèet - pred pohyb pre docielenie hromadného mazania: - d èíslo pohyb - - 1. Presuò kurzor na prvé slovo písané VE¼KÝMI PÍSMENAMI - v riadku oznaèenom --->. - - 2. Napíš 2dw a zmažeš dve slová písané VE¼KÝMI PÍSMENAMI - - 3. Zopakuj kroky 1 a 2 s použitím rôzneho èísla tak aby si zmazal slová - písané ve¾kými písmenami jedným príkazom. - ----> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. - -POZNÁMKA: Èíslo medzi operátorom d a pohybom funguje podobne ako pri - použití s pohybom bez operátora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.6: OPERÁCIE S RIADKAMI - - - ** Napísanie príkazu dd zmaže celý riadok. ** - -Vzh¾adom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, -že bude jednoduchšie maza celý riadok napísaním dvoch písmen d. - -1. Presuò kurzor na druhý riadok v texte na spodu. -2. Napíš dd aby si zmazal riadok. -3. Prejdi na štvrtý riadok. -4. Napíš 2dd aby si zmazal dva riadky. - - 1) Ruže sú èervené, - 2) Blato je zábavné, - 3) Fialky sú modré, - 4) Mám auto, - 5) Hodinky ukazujú èas, - 6) Cukor je sladký, - 7) A to si ty. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.7: PRÍKAZ UNDO - - -** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** - -1. Presuò kurzor nižšie na riadok oznaèený znaèkou ---> a premiestni ho na - prvú chybu. -2. Napíš x pre zmazanie prvého nechceného riadku. -3. Teraz napíš u èím vrátíš spä posledne vykonaný príkaz. -4. Teraz oprav všetky chyby na riadku použitím príkazu x . -5. Teraz napíš ve¾ké U èím vrátíš riadok do pôvodného stavu. -6. Teraz napíš u nieko¾ko krát, èím vrátíš spä príkaz U. -7. Teraz napíš CTRL-R (drž klávesu CTRL stlaèenú kým stláèaš R) nieko¾ko - krát, èím vrátíš spä predtým vrátené príkazy (undo z undo). - ----> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. - - 8. Tieto príkazy sú èasto používané. Teraz prejdi na zhrnutie lekcie 2. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 2 ZHRNUTIE - - - 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw - - 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ - - 3. Pre zmazanie celého riadku napíš: dd - - 4. Pre zopakovanie pohybu, napíš pred neho èíslo: 2w - - 5. Formát pre píkaz: - - operátor [èíslo] pohyb - kde: - operátor - èo treba robi, napríklad d pre zmazanie - [èíslo] - je volite¾ný poèet pre opakovanie pohybu - pohyb - pohyb po texte vzh¾adom na operátor, napríklad w (slovo), - $ (do konca riadku), atï. - - 6. Pre pohyb na zaèiatok riadku použi nulu: 0 - - 7. Pre vrátenie spä predošlej operácie napíš: u (malé u) - Pre vrátenie všetkých úprav na riadku napíš: U (ve¾ké U) - Pre vrátenie vrátených úprav napíš: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.1: PRÍKAZ VLOŽI - - - ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** - - 1. Presuò kurzor nižšie na prvý riadok textu. - - 2. Napíš dd èím zmažeš riadok a uložíš ho do buffera editora Vim. - - 3. Presuò kurzor vyššie tam, kam zmazaný riadok patrí. - - 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. - - 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. - ----> d) Tiež sa dokážeš vzdeláva? ----> b) Fialky sú modré, ----> c) Inteligencia sa vzdeláva, ----> a) Ruže sú èervené, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.2: PRÍKAZ NAHRADENIA - - - ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** - - 1. Presuò kurzor nižšie na prví riadok textu oznaèeného znaèkou --->. - - 2. Presuò kurzor na zaèiatok prvej chyby. - - 3. napíš r a potom znak, ktorý tam má by. - - 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. - ----> Kaï bol tento riasok píaaný, niekro stlašil nesprábne klávesy! ----> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! - - 5. Teraz prejdi na lekciu 3.2. - -POZNÁMKA: Pamätaj si, že nauèi sa môžeš len používanim, nie pamätaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.3. PRÍKAZ ÚPRAVY - - - ** Ak chceš zmeni èas slova do konca slova, napíš ce . ** - - 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. - - 2. Umiestni kurzor na písmeno o v slove rosfpl. - - 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) - - 4. Stlaè a prejdi na ïalší znak, ktorý treba zmeni. - - 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. - ----> Tento rosfpl má nieko¾ko skic, ktoré je pirewvbí zmeni piyuèán príkazu. ----> Tento riadok má nieko¾ko slov, ktoré je potrebné zmeni použitím príkazu. - -Poznámka, že ce zmaže slovo a nastaví vkladací mód. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.4: VIAC ZMIEN POUŽITÍM c - - - ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** - - 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: - - c [èíslo] pohyb - - 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). - - 3. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. - - 4. Presuò kurzor na prvú chybu. - - 5. napíš c$ aby si mohol upravi zvyšok riadku pod¾a druhého - a stlaè . - ----> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ----> Koniec tohto riadku potrebuje opravi použitím príkazu c$ . - -POZNÁMKA: Môžeš použi klávesu backspace na úpravu zmien poèas písania. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 3 ZHRNUTIE - - - 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný - text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). - - 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý - nahradí pôvodný znak. - - 3. Príkaz na upravenie umožòuje zmeni od kurzora až po miesto, ktoré - urèuje pohyb. napr. Napíš ce èím zmníš text od pozície - kurzora do konca slova, c$ zmení text do konca riadku. - - 4. Formát pre nahradenie je: - - c [èíslo] pohyb - - -Teraz prejdi na nalsedujúcu lekciu. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.1: POZÍCIA A STATUS SÚBORU - - - ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. - Napíš G pre presun na riadok v súbore. ** - - Poznámka: Preèítaj si celú túto lekciu skôr ako zaèneš vykonáva kroky!! - - 1. Drž stlaèenú klávesu Ctrl a stlaè g . Toto nazývame CTRL-G. - Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou - v súbore. Zapamätajsi si èíslo riadku pre použitie v kroku 3. - - 2. Stlaè G èím sa dostaneš na spodok súboru. - Napíš gg èím sa dostaneš na zaèiatok súboru. - - 3. Napíš èíslo riadku na ktorom si sa nachádzal a stlaè G. To a - vráti na riadok, na ktorom si prvý krát stlaèil CTRL-G. - - 4. Ak sa cítíš schopný vykona teto kroky, vykonaj kroky 1 až 3. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.2: PRÍKAZ VYH¼ADÁVANIA - - - ** Napíš / nasledované reazcom pre vyh¾adanie príslušného reazca. ** - - 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu - s kurzorom zobrazí v dolnej èasti obrazovky s : príkazom. - - 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyh¾ada. - - 3. Pre vyh¾adanie ïalšieho výskytu rovnakého reazca, stlaè jednoducho n. - Pre vyh¾adanie ïalšieho výskytu rovnakého reazca opaèným smerom, - N. - - 4. Ak chceš vyh¾ada reazec v spätnom smere, použí príkaz ? miesto - príkazu /. - - 5. Pre návrat na miesto z ktorého si prišiel stlaè CTRL-O (drž stlaèenú - klávesu Ctrl poèas stlaèenia klávesy o). Zopakuj pre ïalší návrat - spä. CTRL-I ide vpred. - -POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. -POZNÁMKA: Keï vyh¾adávanie dosiahne koniec tohto súboru, bude pokraèova na - zaèiatku, dokia¾ nieje resetované nastavenie 'wrapscan' . - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.3: VYH¼ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK - - - ** Napíš % pre vyh¾adanie príslušného znaku ),], alebo } . ** - - 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie - oznaèeného znaèkou --->. - - 2. Teraz napíš znak % . - - 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. - - 4. Napíš % pre presun kurzoru spä na otvárajúcu zátvorku. - - 5. Presuò kurzor na iný zo znakov (,),[,],{ alebo } a všimni si - èo % vykonáva. - ----> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) - -Poznámka: Toto je ve¾mi výhodné použí pri ladení programu s chýbajúcimi - uzatvárajúcimi zátvorkami! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.4: PRÍKAZ NAHRADENIA - - - ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** - - 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - - 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý - výskyt "thee" v riadku. - - 3. Teraz napíš :s/thee/the/g èo znamená celkové nahradenie v riadku. - Toto nahradí všetky výskyty v riadku. - ----> Thee best time to see thee flowers in thee spring. - - 4. Pre zmenu všetkých výskytov daného reazca medzi dvomi ridakami, - napíš :#,#s/starý/nový/g kde #,# sú èísla dvoch riadkov, v rozsahu - ktorých sa nahradenie vykoná. - napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku - napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, - s otázkou èi nahradi alebo nie - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 4 ZHRNUTIE - - - 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. - G a premiestni na koniec riadku. - èíslo G a premiestni na riadok s èíslom. - gg a presunie na prvý riadok - - 2. Napísanie / nasledované reazcom vyh¾adá reazec smerom DOPREDU. - Napísanie ? nasledované reazcom vyh¾ada reazec smerom DOZADU. - Napísanie n po vyh¾adávaní, vyh¾adá nasledujúci výskyt reazca - v rovnakom smere, prièom N vyh¾adá v opaènom smere. - CTRL-O a vráti spä na staršiu pozíciu, CTRL-I na novšiu pozíciu. - - 3. Napísanie % keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu - párnu zátvorku. - - 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový - Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g - Pre nahradenie reazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g - Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g - Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.1 AKO SPUSTI VONKAJŠÍ PRÍKAZ - - - ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** - - 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. - To umožní napísa príkaz. - - 2. Teraz napíš ! (výkrièník). To umožní spusti hociaký vonkajší príkaz - z príkazového riadku. - - 3. Ako príklad napíš ls za ! a stlaè . Tento príkaz - zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. - Alebo použi :!dir ak ls nefunguje. - -Poznámka: Takto je možné spusti hociaký vonkajší príkaz s argumentami. -Poznámka: Všetky príkazy : musia by dokonèené stlaèením - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV - - - ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** - - 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. - Už vieš, že musíš za týmto stlaèi . - - 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. - - 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) - - 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. - Pre overenie napíš :!dir , èím zobrazíš obsah adresára. - -Poznámka: že ak ukonèíš prácu s editorom Vim a znovu ho spustíš príkazom - vim TEST, súbor bude kópia výuky, keï si ho uložil. - - 5. Teraz odstráò súbor napísaním (MS-DOS): :!del TEST - alebo (Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE - - - ** Pre uloženie èasti súboru, napíš v pohyb :w FILENAME ** - - 1. Presuò kurozr na tento riadok. - - 2. Stlaè v a presuò kurozr na piatu položku dole. Poznámka, že - tento text je vyznaèený (highlighted). - - 3. Stlaè klávesu : . V spodnej èasti okna sa objaví :'<,'>. - - 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. - Skontroluj, e vidíš :'<,'>w TEST predtým než stlaèíš Enter. - - 5. Vim zapíše oznaèené riadky do súboru TEST. Použi :!dir alebo :!ls - pre overenie. Zatial ho ešte nemaž! Použijeme ho v ïalšej lekcii. - -POZNÁMKA: Stlaèením klávesy v sa spustí vizuálne oznaèovanie. - Môžeš pohybova kurzorom pre upresnenie vyznaèeného textu. - Potom môžeš použi operátor pre vykonanie nejakej akcie - s textom. Napríklad d zmaže vyznaèený text. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV - - - ** Pre vloženie obsahu súboru, napíš :r FILENAME ** - - 1. Premiestni kurzor nad tento riadok. - -POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuò - dole, aby si videl túto lekciu. - - 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov - súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. - -POZNÁMKA: Môžeš tiež naèíta výstup vonkajšieho príkazu. Napríklad :r !ls - naèíta výstup príkazu ls a umiestni ho za pozíciu kurzora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 5 ZHRNUTIE - - - 1. :!príkaz spustí vonkajší príkaz. - - Niektoré využite¾né príklady sú: - (MS_DOS) (UNIX) - :!dir :!ls - zobrazí obsah adresára - :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME - - 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. - - 3. v pohyb :w FILENAME uloží vizuálne oznaèené riadky do - súboru FILENAME. - - 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho - súboru za pozíciou kurzora. - - 5. :r !dir naèíta výstup z príkazu dir a vloží ho za pozíciu kurzora. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.1: PRÍKAZ OTVORI - - -** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** - - 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - - 2. Napíš o (malé písmeno) pre vloženie èistého riadku pod kurzorm - a prepnutie do vkladacieho módu. - - 3. Teraz skopíruj riadok oznaèený ---> a stlaè pre ukonèenie - vkladacieho módu. - ----> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho - módu. - - 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš ve¾ké O , - namiesto malého o. Vyskúšaj si to na riadku dole. - ----> Vlož riadok nad týmto napísaním O, keï kurzor je na tomto riadku. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.2: PRÍKAZ PRIDA - - - ** Napíš a pre vloženie textu ZA kurzor. ** - - 1. Presuò kurzor nižšie na koniec prvého riadku oznaèeného znaèkou ---> - - 2. Stlaè klávesu e dokia¾ kurozr nieje na konci riadku. - - 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. - - 4. Dokonèí slovo tak ako je to v druhom riadku. Stlaš pre - opustenie vkladacieho módu. - - 5. Použi e na presun na ïalšie nedokonèené slovo a zopakuj kroky 3 a 4. - ----> Tento ri ti dovo¾uje nácv priávan testu na koniec riadku. ----> Tento riadok ti dovo¾uje nácvik pridávania textu na koniec riadku. - -POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde - sa znaky vkladajú. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA - - - ** Napíš ve¾ké R pre nahradenie viac ako jedného znaku. ** - - 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. Premiestni - kurzor na zaèiatok prvého výskytu xxx. - - 2. Teraz napíš R a napíš èíslo uvedené v druhom riadku, takže - sa ním nahradí pôvodné xxx. - - 3. Stlaè pre opustenie nahradzovacieho módu. Poznámka, že zvyšok - riadku zostane nezmenený. - - 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. - ----> Pridaním 123 ku xxx dostaneš xxx. ----> Pridaním 123 ku 456 dostaneš 579. - -POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak - zmaže existujúci znak. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Lekcia 6.4: Copy Paste textu - - ** použí operátor y pre copy textku a p pre jeho paste ** - - 1. Choï nižšie na riadok oznaèený ---> a umiestni kurozr za "a)". - - 2. Naštartuj vizuálny mód použitím v a presuò kurozr pred "first". - - 3. Napíš y pre vystrihnutie (copy) oznaèeného textu. - - 4. Presuò kurozr na koniec ïalšieho riadku: j$ - - 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . - - 6. Použi vizuálny mód pre oznaèenie "položka.", vystrihni to - použitím y, presuò sa na koniec nasledujúceho riadku použitím j$ - a vlož sem text použitím p. - ----> a) toto je prvá položka ----> b) - -POZNÁMKA: Môžeš použi tiež y ako operátor; yw vystrihne jedno slovo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.5: NASTAVENIE MOŽNOSTÍ - - -** Nastav možnosti, takže vyh¾adávanie alebo nahradzovanie ignoruje - rozlišovanie ** - - - 1. Vyh¾adaj reazec 'ignore' napísaním: - /ignore - Zopakuj vyh¾adávanie nieko¾ko krát stlaèením klávesy n . - - 2. Nastav možnos 'ic' (Ignore case) napísaním príkazu: - :set ic - - 3. Teraz vyh¾adaj reazec 'ingore' znova stlaèením klávesy n - Poznámka, že teraz sú vyh¾adané aj Ignore a IGNORE. - - 4. Nastav možnosi 'hlsearch' a 'incsearch': - :set hls is - - 5. Teraz spusti vyh¾adávací príkaz znovu, a pozri èo sa stalo: - /ignore - - 6. Pre opetovné zapnutie rozlyšovania ve¾kých a malých písmen - napíš: :set noic - -POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch -POZNÁMKA: Ak chceš nerozlyšova ve¾kos písmen len pre jedno - použitie vyh¾adávacieho príkazu, použi \c: /ignore\c - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 6 ZHRNUTIE - - - 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. - Napíš O pre otvorenie riadku nad kurzorom. - - 2. Napíš a pre vkladanie textu ZA kurzor. - Napíš A pre vkladanie textu za koncom riadku. - - 3. Príkaz e presunie kurozr na koniec slova - - 4. Operátor y vystrihne (skopíruje) text, p ho vloží. - - 5. Napísanie ve¾kého R prepne do nahradzovacieho módu, kým nieje - stlaèené . - - 6. Napísanie ":set xxx" nastaví možnos "xxx". Niektoré nastavenia sú: - 'ic' 'ignorecase' ignoruje ve¾ké a malé písmená poèas vyh¾adávania. - 'is' 'incsearch' zobrazuje èiastoèné reazce vyh¾adávaného reazca. - 'hls' 'hlsearch' vyznaèí všetky vyh¾adávané reazce. - Môžeš použi hociktorý z dlhých a krátkych názvov možností. - - 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.1: ZÍSKANIE NÁPOVEDY - - - ** Používaj on-line systém nápovedy ** - - Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden - z týchto troch: - - stlaè klávesu (ak nejakú máš) - - stlaè klávesu (ak nejakú máš) - - napíš :help - - Èítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. - Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. - Napíš :q èím zatvoríš okno nápovedy. - - Môžeš nájs help ku hociakej téme pridaním argumentu ku príkazu ":help". - Vyskúšaj tieto (nezabudni stlaèi ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU - - ** Zapni funkcie editora Vim ** - - Vim má omnoho viac funkcii než Vi, ale veèšina z nich je implicitne - vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. - - 1. Zaèni editova "vimrc" súbor, to závisí na použitom systéme: - :e ~/.vimrc pre Unix - :e ~/_vimrc pre MS-Windows - - 2. Teraz si preèítaj text príkladu "vimrc" súboru: - - :r $VIMRUNTIME/vimrc_example.vim - - 3. Ulož súbor: - :w - - Pri nasledujúcom štarte editora Vim sa použije zvýrazòovanie syntaxe. - Do "vimrc" súboru môžeš prida všetky svoje uprednostòované nastavenia. - Pre viac informácii napíš :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7.3 DOKONÈENIE - - ** Dokonèi príkaz na príkazovom riadku použitím CTRL-D a ** - - 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp - - 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir - - 3. Napíš zaèiatok príkazu: :e - - 4. Stlaè CTRL-D a Vim zobrazí zoznam príkazov zaèínajúcich "e". - - 5. Stlaè a Vim dokonèí meno príkazu na ":edit". - - 6. Teraz pridaj medzerník a zaèiatok mena existujúceho súboru: - :edit FIL - - 7. Stlaè . Vim dokonèí meno (ak je jedineèné). - -POZNÁMKA: Dokonèovanie funguje pre ve¾a príkazov. Vyskúšaj stlaèenie - CTRL-D a . Špeciálne je to užitoèné pre príkaz :help. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7 ZHRNUTIE - - 1. Napíš :help alebo stlaè alebo pre otvorenie okna nápovedy. - - 2. Napíš :help príkaz pre vyh¾adanie nápovedy ku príkazu príkaz. - - 3. Napíš CTRL-W CTRL-W na preskoèenie do iného okna. - - 4. Napíš :q pre zatvorenie okna nápovedy - - 5. Vytvor štartovací skript vimrc pre udržanie uprednostòovaných nastavení. - - 6. Poèas písania príkazu : stlaè CTRL-D pre zobrazenie dokonèení. - Stlaè pre použitie jedného z dokonèení. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - - Toto vymedzuje výuku Vimu. Toto je urèené pre strucný preh¾ad o editore - Vim, úplne postaèujúce pre ¾ahké a obstojné používanie tohto editora. - Táto výuka je ïaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. - Ako ïalšie si preèítaj užívat¾ský manuál: ":help user-manual". - - Pre ïalšie èítanie a štúdium je odporúèaná kniha: - Vim - Vi Improved - od Steve Oualline - Vydavate¾: New Riders - Prvá kniha urèená pre Vim. Špeciálne vhodná pre zaèiatoèníkov. - Obsahuje množstvo príkladov a obrázkov. - Pozri na https://iccf-holland.org/click5.html - - Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúèaná: - Learning the Vi Editor - od Linda Lamb - Vydavate¾: O'Reilly & Associates Inc. - Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. - Šieste vydanie obsahuje tiež informácie o editore Vim. - - Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, - Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. - - Modifikované pre Vim od Bram Moolenaar. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preklad do Slovenèiny: ¼uboš Èelko - e-mail: celbos@inmail.sk - Last Change: 2006 Apr 18 - encoding: cp1250 diff --git a/runtime/tutor/tutor.vim b/runtime/tutor/tutor.vim index 551231ab42..1ca4b2d9d3 100644 --- a/runtime/tutor/tutor.vim +++ b/runtime/tutor/tutor.vim @@ -1,7 +1,7 @@ " Vim tutor support file " Author: Eduardo F. Amatria " Maintainer: The·Vim·Project· -" Last Change: 2023 Aug 13 +" Last Change: 2024 Nov 17 " This Vim script is used for detecting if a translation of the " tutor file exist, i.e., a tutor.xx file, where xx is the language. @@ -13,7 +13,7 @@ " 1. Build the extension of the file, if any: let s:ext = "" if strlen($xx) > 1 - let s:ext = "." . $xx + let s:ext = "." .. $xx else let s:lang = "" " Check that a potential value has at least two letters. @@ -51,7 +51,7 @@ else elseif s:lang =~ "Bulgarian" let s:ext = ".bg" else - let s:ext = "." . strpart(s:lang, 0, 2) + let s:ext = "." .. strpart(s:lang, 0, 2) endif endif endif @@ -177,28 +177,25 @@ endif " If 'encoding' is utf-8 s:ext must end in utf-8. if &enc == 'utf-8' && s:ext !~ '\.utf-8' - let s:ext .= '.utf-8' + let s:ext ..= '.utf-8' endif " 2. Build the name of the file and chapter -let s:chapter = exists("$CHAPTER") ? $CHAPTER : '' -if s:chapter == "1" - let s:chapter = '' -endif +let s:chapter = exists("$CHAPTER") ? $CHAPTER : 1 -let s:tutorfile = "/tutor/tutor" . s:chapter -let s:tutorxx = $VIMRUNTIME . s:tutorfile . s:ext +let s:tutorfile = "/tutor/tutor" .. s:chapter +let s:tutorxx = $VIMRUNTIME .. s:tutorfile .. s:ext " 3. Finding the file: if filereadable(s:tutorxx) let $TUTOR = s:tutorxx -elseif s:ext !~ '\.utf-8' && filereadable(s:tutorxx . ".utf-8") +elseif s:ext !~ '\.utf-8' && filereadable(s:tutorxx .. ".utf-8") " Fallback to utf-8 if available. - let $TUTOR = s:tutorxx . ".utf-8" + let $TUTOR = s:tutorxx .. ".utf-8" else - let $TUTOR = $VIMRUNTIME . s:tutorfile - echo "The file " . s:tutorxx . " does not exist.\n" - echo "Copying English version: " . $TUTOR + let $TUTOR = $VIMRUNTIME .. s:tutorfile + echo "The file " .. s:tutorxx .. " does not exist.\n" + echo "Copying English version: " .. $TUTOR 4sleep endif diff --git a/runtime/tutor/tutor b/runtime/tutor/tutor1 similarity index 92% rename from runtime/tutor/tutor rename to runtime/tutor/tutor1 index 3ddcda1614..5d1483c06f 100644 --- a/runtime/tutor/tutor +++ b/runtime/tutor/tutor1 @@ -1,12 +1,13 @@ =============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = +=============================================================================== += C H A P T E R ONE = =============================================================================== Vim is a very powerful editor that has many commands, too many to explain in a tutor such as this. This tutor is designed to describe enough of the commands that you will be able to easily use Vim as an all-purpose editor. - The approximate time required to complete the tutor is 30 minutes, depending upon how much time is spent with experimentation. @@ -17,12 +18,12 @@ It is important to remember that this tutor is set up to teach by use. That means that you need to execute the commands to learn them properly. If you only read the text, you will forget the commands! - Now, make sure that your Caps-Lock key is NOT depressed and press the j key enough times to move the cursor so that lesson 1.1 completely fills the screen. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: MOVING THE CURSOR + Lesson 1.1.1: MOVING THE CURSOR ** To move the cursor, press the h,j,k,l keys as indicated. ** @@ -36,7 +37,7 @@ 2. Hold down the down key (j) until it repeats. Now you know how to move to the next lesson. - 3. Using the down key, move to lesson 1.2. + 3. Using the down key, move to lesson 1.1.2. NOTE: If you are ever unsure about something you typed, press to place you in Normal mode. Then retype the command you wanted. @@ -45,7 +46,7 @@ NOTE: The cursor keys should also work. But using hjkl you will be able to move around much faster, once you get used to it. Really! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: EXITING VIM + Lesson 1.1.2: EXITING VIM !! NOTE: Before executing any of the steps below, read this entire lesson!! @@ -64,11 +65,11 @@ NOTE: The cursor keys should also work. But using hjkl you will be able to NOTE: :q! discards any changes you made. In a few lessons you will learn how to save the changes to a file. - 5. Move the cursor down to lesson 1.3. + 5. Move the cursor down to lesson 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: TEXT EDITING - DELETION + Lesson 1.1.3: TEXT EDITING - DELETION ** Press x to delete the character under the cursor. ** @@ -84,14 +85,14 @@ NOTE: :q! discards any changes you made. In a few lessons you ---> The ccow jumpedd ovverr thhe mooon. - 5. Now that the line is correct, go on to lesson 1.4. + 5. Now that the line is correct, go on to lesson 1.1.4. NOTE: As you go through this tutor, do not try to memorize, learn by usage. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: TEXT EDITING - INSERTION + Lesson 1.1.4: TEXT EDITING - INSERTION ** Press i to insert text. ** @@ -109,12 +110,12 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. ---> There is text misng this . ---> There is some text missing from this line. - 5. When you are comfortable inserting text move to lesson 1.5. + 5. When you are comfortable inserting text move to lesson 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: TEXT EDITING - APPENDING + Lesson 1.1.5: TEXT EDITING - APPENDING ** Press A to append text. ** @@ -134,17 +135,17 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. ---> There is also some text miss There is also some text missing here. - 5. When you are comfortable appending text move to lesson 1.6. + 5. When you are comfortable appending text move to lesson 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: EDITING A FILE + Lesson 1.1.6: EDITING A FILE ** Use :wq to save a file and exit. ** !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. If you have access to another terminal, do the following there. - Otherwise, exit this tutor as you did in lesson 1.2: :q! + Otherwise, exit this tutor as you did in lesson 1.1.2: :q! 2. At the shell prompt type this command: vim file.txt 'vim' is the command to start the Vim editor, 'file.txt' is the name of @@ -160,7 +161,7 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. 6. After reading the above steps and understanding them: do it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1 SUMMARY + Lesson 1.1 SUMMARY 1. The cursor is moved using either the arrow keys or the hjkl keys. @@ -180,10 +181,10 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. NOTE: Pressing will place you in Normal mode or will cancel an unwanted and partially completed command. -Now continue with lesson 2. +Now continue with lesson 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: DELETION COMMANDS + Lesson 1.2.1: DELETION COMMANDS ** Type dw to delete a word. ** @@ -202,11 +203,11 @@ Now continue with lesson 2. ---> There are a some words fun that don't belong paper in this sentence. - 5. Repeat steps 3 and 4 until the sentence is correct and go to lesson 2.2. + 5. Repeat steps 3 and 4 until the sentence is correct and go to lesson 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: MORE DELETION COMMANDS + Lesson 1.2.2: MORE DELETION COMMANDS ** Type d$ to delete to the end of the line. ** @@ -222,14 +223,14 @@ Now continue with lesson 2. ---> Somebody typed the end of this line twice. end of this line twice. - 5. Move on to lesson 2.3 to understand what is happening. + 5. Move on to lesson 1.2.3 to understand what is happening. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: ON OPERATORS AND MOTIONS + Lesson 1.2.3: ON OPERATORS AND MOTIONS Many commands that change text are made from an operator and a motion. @@ -252,7 +253,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will move the cursor as specified. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: USING A COUNT FOR A MOTION + Lesson 1.2.4: USING A COUNT FOR A MOTION ** Typing a number before a motion repeats it that many times. ** @@ -269,13 +270,13 @@ NOTE: Pressing just the motion while in Normal mode without an operator will ---> This is just a line with words you can move around in. - 6. Move on to lesson 2.5. + 6. Move on to lesson 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: USING A COUNT TO DELETE MORE + Lesson 1.2.5: USING A COUNT TO DELETE MORE ** Typing a number with an operator repeats it that many times. ** @@ -298,7 +299,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: OPERATING ON LINES + Lesson 1.2.6: OPERATING ON LINES ** Type dd to delete a whole line. ** @@ -322,7 +323,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will Doubling to operate on a line also works for operators mentioned below. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: THE UNDO COMMAND + Lesson 1.2.7: THE UNDO COMMAND ** Press u to undo the last commands, U to fix a whole line. ** @@ -339,13 +340,13 @@ Doubling to operate on a line also works for operators mentioned below. ---> Fiix the errors oon thhis line and reeplace them witth undo. - 8. These are very useful commands. Now move on to the lesson 2 Summary. + 8. These are very useful commands. Now move on to the lesson 1.2 Summary. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2 SUMMARY + Lesson 1.2 SUMMARY 1. To delete from the cursor up to the next word type: dw 2. To delete from the cursor up to the end of the word type: de @@ -368,7 +369,7 @@ Doubling to operate on a line also works for operators mentioned below. To undo the undos, type: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: THE PUT COMMAND + Lesson 1.3.1: THE PUT COMMAND ** Type p to put previously deleted text after the cursor. ** @@ -391,7 +392,7 @@ Doubling to operate on a line also works for operators mentioned below. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: THE REPLACE COMMAND + Lesson 1.3.2: THE REPLACE COMMAND ** Type rx to replace the character at the cursor with x . ** @@ -407,14 +408,14 @@ Doubling to operate on a line also works for operators mentioned below. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Now move on to lesson 3.3. + 5. Now move on to lesson 1.3.3. NOTE: Remember that you should be learning by doing, not memorization. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: THE CHANGE OPERATOR + Lesson 1.3.3: THE CHANGE OPERATOR ** To change until the end of a word, type ce . ** @@ -437,7 +438,7 @@ Notice that ce deletes the word and places you in Insert mode. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: MORE CHANGES USING c + Lesson 1.3.4: MORE CHANGES USING c ** The change operator is used with the same motions as delete. ** @@ -460,7 +461,7 @@ Notice that ce deletes the word and places you in Insert mode. NOTE: You can use the Backspace key to correct mistakes while typing. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3 SUMMARY + Lesson 1.3 SUMMARY 1. To put back text that has just been deleted, type p . This puts the @@ -483,7 +484,7 @@ Now go on to the next lesson. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: CURSOR LOCATION AND FILE STATUS + Lesson 1.4.1: CURSOR LOCATION AND FILE STATUS ** Type CTRL-G to show your location in the file and the file status. Type G to move to a line in the file. ** @@ -506,7 +507,7 @@ NOTE: You may see the cursor position in the lower right corner of the screen 4. If you feel confident to do this, execute steps 1 through 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: THE SEARCH COMMAND + Lesson 1.4.2: THE SEARCH COMMAND ** Type / followed by a phrase to search for the phrase. ** @@ -529,7 +530,7 @@ NOTE: When the search reaches the end of the file it will continue at the start, unless the 'wrapscan' option has been reset. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: MATCHING PARENTHESES SEARCH + Lesson 1.4.3: MATCHING PARENTHESES SEARCH ** Type % to find a matching ),], or } . ** @@ -552,7 +553,7 @@ NOTE: This is very useful in debugging a program with unmatched parentheses! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: THE SUBSTITUTE COMMAND + Lesson 1.4.4: THE SUBSTITUTE COMMAND ** Type :s/old/new/g to substitute 'new' for 'old'. ** @@ -575,7 +576,7 @@ NOTE: This is very useful in debugging a program with unmatched parentheses! with a prompt whether to substitute or not. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4 SUMMARY + Lesson 1.4 SUMMARY 1. CTRL-G displays your location in the file and the file status. @@ -598,7 +599,7 @@ NOTE: This is very useful in debugging a program with unmatched parentheses! To ask for confirmation each time add 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND + Lesson 1.5.1: HOW TO EXECUTE AN EXTERNAL COMMAND ** Type :! followed by an external command to execute that command. ** @@ -621,7 +622,7 @@ NOTE: All : commands must be finished by hitting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: MORE ON WRITING FILES + Lesson 1.5.2: MORE ON WRITING FILES ** To save the changes made to the text, type :w FILENAME ** @@ -644,7 +645,7 @@ NOTE: If you were to exit Vim and start it again with vim TEST , the file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: SELECTING TEXT TO WRITE + Lesson 1.5.3: SELECTING TEXT TO WRITE ** To save part of the file, type v motion :w FILENAME ** @@ -667,14 +668,14 @@ NOTE: Pressing v starts Visual selection. You can move the cursor around to do something with the text. For example, d deletes the text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: RETRIEVING AND MERGING FILES + Lesson 1.5.4: RETRIEVING AND MERGING FILES ** To insert the contents of a file, type :r FILENAME ** 1. Place the cursor just above this line. -NOTE: After executing Step 2 you will see text from lesson 5.3. Then move +NOTE: After executing Step 2 you will see text from lesson 1.5.3. Then move DOWN to see this lesson again. 2. Now retrieve your TEST file using the command :r TEST where TEST is @@ -682,7 +683,7 @@ NOTE: After executing Step 2 you will see text from lesson 5.3. Then move The file you retrieve is placed below the cursor line. 3. To verify that a file was retrieved, cursor back and notice that there - are now two copies of lesson 5.3, the original and the file version. + are now two copies of lesson 1.5.3, the original and the file version. NOTE: You can also read the output of an external command. For example, :r !ls reads the output of the ls command and puts it below the @@ -690,7 +691,7 @@ NOTE: You can also read the output of an external command. For example, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5 SUMMARY + Lesson 1.5 SUMMARY 1. :!command executes an external command. @@ -713,7 +714,7 @@ NOTE: You can also read the output of an external command. For example, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: THE OPEN COMMAND + Lesson 1.6.1: THE OPEN COMMAND ** Type o to open a line below the cursor and place you in Insert mode. ** @@ -736,7 +737,7 @@ NOTE: You can also read the output of an external command. For example, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: THE APPEND COMMAND + Lesson 1.6.2: THE APPEND COMMAND ** Type a to insert text AFTER the cursor. ** @@ -759,7 +760,7 @@ NOTE: a, i and A all go to the same Insert mode, the only difference is where the characters are inserted. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: ANOTHER WAY TO REPLACE + Lesson 1.6.3: ANOTHER WAY TO REPLACE ** Type a capital R to replace more than one character. ** @@ -782,7 +783,7 @@ NOTE: Replace mode is like Insert mode, but every typed character deletes an existing character. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: COPY AND PASTE TEXT + Lesson 1.6.4: COPY AND PASTE TEXT ** Use the y operator to copy text and p to paste it ** @@ -806,7 +807,7 @@ NOTE: Replace mode is like Insert mode, but every typed character deletes an NOTE: You can also use y as an operator: yw yanks one word, yy yanks the whole line, then p puts that line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: SET OPTION + Lesson 1.6.5: SET OPTION ** Set an option so a search or substitute ignores case ** @@ -829,7 +830,7 @@ NOTE: To remove the highlighting of matches enter: :nohlsearch NOTE: If you want to ignore case for just one search command, use \c in the phrase: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6 SUMMARY + Lesson 1.6 SUMMARY 1. Type o to open a line BELOW the cursor and start Insert mode. Type O to open a line ABOVE the cursor. @@ -852,7 +853,7 @@ NOTE: If you want to ignore case for just one search command, use \c 7. Prepend "no" to switch an option off: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.1: GETTING HELP + Lesson 1.7.1: GETTING HELP ** Use the on-line help system ** @@ -875,7 +876,7 @@ NOTE: If you want to ignore case for just one search command, use \c :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.2: CREATE A STARTUP SCRIPT + Lesson 1.7.2: CREATE A STARTUP SCRIPT ** Enable Vim features ** @@ -898,7 +899,7 @@ NOTE: If you want to ignore case for just one search command, use \c For more information type :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: COMPLETION + Lesson 1.7.3: COMPLETION ** Command line completion with CTRL-D and ** @@ -921,7 +922,7 @@ NOTE: Completion works for many commands. Just try pressing CTRL-D and . It is especially useful for :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 SUMMARY + Lesson 1.7 SUMMARY 1. Type :help or press or to open a help window. diff --git a/runtime/tutor/tutor.bar b/runtime/tutor/tutor1.bar similarity index 92% rename from runtime/tutor/tutor.bar rename to runtime/tutor/tutor1.bar index ec30eddaf1..a8a9c8a995 100644 --- a/runtime/tutor/tutor.bar +++ b/runtime/tutor/tutor1.bar @@ -1,5 +1,7 @@ =============================================================================== = G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7 = +=============================================================================== += C H A P T E R - 1 = =============================================================================== Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z @@ -20,9 +22,9 @@ Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst - de gantze Letzn 1.1 auf n Bildschirm haast. + de gantze Letzn 1.1.1 auf n Bildschirm haast. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.1: MIT N MÖRKL UMAYNANDFARN + Letzn 1.1.1: MIT N MÖRKL UMAYNANDFARN ** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** ^ Ayn Öslsbrugg: @@ -35,7 +37,7 @@ 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso kimmst gan dyr naehstn Letzn. - 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. + 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.1.2. Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft zipfst ; naacher bist wider ganz gwon in dyr Befelhs-Artweis. @@ -45,7 +47,7 @@ Non hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- für, däß myn bei +dene bleibt. Pröblt s ainfach aus! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.2: ÖNN WIMM AUSSCHALTTN + Letzn 1.1.2: ÖNN WIMM AUSSCHALTTN ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- @@ -68,7 +70,7 @@ Anm Dautticht speichertst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.3: GWORT BARECHTN - LÖSCHN + Letzn 1.1.3: GWORT BARECHTN - LÖSCHN ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** @@ -84,14 +86,14 @@ Anm ---> De Kkuue sprangg übber nn Maanad. - 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. + 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.1.4. weiter. Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.4: GWORT BARECHTN - EINFÜEGN + Letzn 1.1.4: GWORT BARECHTN - EINFÜEGN ** Druck i , dyrmitst öbbs einfüegst. ** @@ -110,11 +112,11 @@ Und ganz wichtig: Dyrweilst d ---> Daader gt dd öbbs b. ---> Daader geet diend öbbs ab. - 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. + 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.5: GWORT BARECHTN - ANFÜEGN + Letzn 1.1.5: GWORT BARECHTN - ANFÜEGN ** Druck A gan n Gwort Anfüegn. ** @@ -135,9 +137,9 @@ Und ganz wichtig: Dyrweilst d ---> Aau daader stee Aau daader steet öbbs Unvollstöndigs. - 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. + 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.6: AYN DAUTTICHT BARECHTN + Letzn 1.1.6: AYN DAUTTICHT BARECHTN ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** @@ -145,7 +147,7 @@ Und ganz wichtig: Dyrweilst d !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze Letzn durch!! - 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! + 1. Verlaaß also s Blat, wie s in dyr Letzn 1.1.2. haisst, mit :q! ! 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit @@ -160,7 +162,7 @@ Und ganz wichtig: Dyrweilst d 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 1 + ZAMMENFASSUNG VON DYR LETZN 1.1 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. @@ -181,9 +183,9 @@ Und ganz wichtig: Dyrweilst d Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ayn Faudung ab, dö wo dyr schiefgangen ist. - Ietz tue mit dyr Letzn 2 weiter. + Ietz tue mit dyr Letzn 1.2 weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.1.: LÖSHFAUDUNGEN + Letzn 1.2.1: LÖSHFAUDUNGEN ** Demmlt dw , dyrmitst ayn Wort löschst. ** @@ -204,9 +206,9 @@ Anm ---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr - Letzn 2.2. + Letzn 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN + Letzn 1.2.2: NON MEERER LÖSHFAUDUNGEN ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** @@ -222,14 +224,14 @@ Anm ---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. - 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. + 5. Gee weiter gan dyr Letzn 1.2.3, dyrmitst versteest, was daader ablaaufft. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.3: PFEMERER UND WOLENDER + Letzn 1.2.3: PFEMERER UND WOLENDER Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- @@ -252,7 +254,7 @@ Anm entspröchet weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN + Letzn 1.2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel entspröchet oft gangen. ** @@ -269,13 +271,13 @@ Anm ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. - 6. Gee weiter gan dyr Letzn 2.5. + 6. Gee weiter gan dyr Letzn 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN + Letzn 1.2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN ** Ayn Zal vor aynn Pfemerer füert dönn entspröchet oft aus. ** @@ -298,7 +300,7 @@ Anm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.6: ARECHTN AUF ZEILN + Letzn 1.2.6: ARECHTN AUF ZEILN ** Zipf dd , um ayn gantze Zeil z löschn. ** @@ -321,7 +323,7 @@ Anm ---> 7) Dirndl, dein Gschau. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) + Letzn 1.2.7: RUGGGÖNGIG MACHEN (RUGGLN) ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** @@ -342,9 +344,9 @@ Anm ---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- der her. 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. - Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. + Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 2 + ZAMMENFASSUNG VON DYR LETZN 1.2 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw @@ -367,7 +369,7 @@ Anm Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.1: ANFÜEGN (»put«) + Letzn 1.3.1: ANFÜEGN (»put«) ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** @@ -390,7 +392,7 @@ Anm ---> c) Bedachtn kan myn lernen. ---> a) Roosn seind root. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.2: ERSÖTZN (»replace«) + Letzn 1.3.2: ERSÖTZN (»replace«) ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** @@ -406,14 +408,14 @@ Anm ---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! ---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! - 5. Ietz tue mit dyr Letzn 3.3 weiter. + 5. Ietz tue mit dyr Letzn 1.3.3 weiter. Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn mit n Auswendiglernen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.3: ÖNDERN (»change«) + Letzn 1.3.3: ÖNDERN (»change«) ** Um hinst eyn s Wortend z öndern, zipf ce . ** @@ -459,7 +461,7 @@ ce l Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 3 + ZAMMENFASSUNG VON DYR LETZN 1.3 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös @@ -482,7 +484,7 @@ Ietz tue mit dyr naehstn Letzn weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND + Letzn 1.4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND ** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** @@ -505,7 +507,7 @@ Anm 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.2: DYR BEFELH ZO N SUECHEN + Letzn 1.4.2: DYR BEFELH ZO N SUECHEN ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** @@ -528,7 +530,7 @@ Anm Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.3: DE GÖGNKLAMMERN FINDDN + Letzn 1.4.3: DE GÖGNKLAMMERN FINDDN ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** @@ -551,7 +553,7 @@ Anm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) + Letzn 1.4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** @@ -574,7 +576,7 @@ Anm Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 4 + ZAMMENFASSUNG VON DYR LETZN 1.4 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. G bringt di an s End von dyr Dautticht. @@ -597,7 +599,7 @@ Anm Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN + Letzn 1.5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** @@ -620,7 +622,7 @@ Und wolgm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT + Letzn 1.5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM . ** @@ -643,7 +645,7 @@ Anm 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH beziehungsweis bei aynn Unixgebäu mit :!rm POCH . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN + Letzn 1.5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN ** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** @@ -666,7 +668,7 @@ Anm Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös Gwort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN + Letzn 1.5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** @@ -674,14 +676,14 @@ Anm 1. Sötz önn Mörkl über dö Zeil daader. OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus - dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- + dyr Letzn 1.5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- derfinddst. 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; - und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s + und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 1.5.3. geit, s Urniss und de eingfüegte Dauttichtfassung. Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- @@ -689,7 +691,7 @@ Anm unterhalb n Mörkl ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 5 + ZAMMENFASSUNG VON DYR LETZN 1.5 1. :!FAUDUNG füert aynn ausserignen Befelh aus. @@ -712,7 +714,7 @@ Anm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.1: ZEIL ÖFFNEN (»open«) + Letzn 1.6.1: ZEIL ÖFFNEN (»open«) ** Zipf o , um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** @@ -735,7 +737,7 @@ Anm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.2: GWORT ANFÜEGN (»append«) + Letzn 1.6.2: GWORT ANFÜEGN (»append«) ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** @@ -758,7 +760,7 @@ Anm Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) + Letzn 1.6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** @@ -781,7 +783,7 @@ Anm mlte Zaichen löscht ayn vorhanddns. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.4: GWORT AAMEN UND EINFÜEGN + Letzn 1.6.4: GWORT AAMEN UND EINFÜEGN ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** @@ -804,7 +806,7 @@ Anm Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw zo n Beispil aamt hinst eyn n naehstn Wortanfang (aane dönn selber). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.5: SCHALTTER SÖTZN + Letzn 1.6.5: SCHALTTER SÖTZN ** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** ** schreibung übergeet. ** @@ -827,7 +829,7 @@ Anm Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c in n Suechausdruk: /übergee\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 6 + ZAMMENFASSUNG VON DYR LETZN 1.6 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z ginnen. @@ -850,7 +852,7 @@ Anm 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.1: AYN HILFGWORT AUFRUEFFEN + Letzn 1.7.1: AYN HILFGWORT AUFRUEFFEN ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung". ** @@ -873,7 +875,7 @@ Anm :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF + Letzn 1.7.2: ERSTÖLL AYN GIN-SCHRIPF ** Mutz önn Wimm mit de einbautn Faehigkeitn auf. ** @@ -896,7 +898,7 @@ Anm Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn willst. Meerer dyrzue erfarst unter: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.3: VERGÖNTZN + Letzn 1.7.3: VERGÖNTZN ** Befelhszeilnvergöntzung mit d und ** @@ -919,7 +921,7 @@ Anm Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach d und . Bsunders nützlich ist dös bei :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 7 + ZAMMENFASSUNG VON DYR LETZN 1.7 1. Zipf :help oder druck oder , um ayn Hilffenster z öffnen. diff --git a/runtime/tutor/tutor.bar.utf-8 b/runtime/tutor/tutor1.bar.utf-8 similarity index 92% rename from runtime/tutor/tutor.bar.utf-8 rename to runtime/tutor/tutor1.bar.utf-8 index 42bea0eac2..74c3889d67 100644 --- a/runtime/tutor/tutor.bar.utf-8 +++ b/runtime/tutor/tutor1.bar.utf-8 @@ -1,5 +1,7 @@ =============================================================================== = G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7 = +=============================================================================== += C H A P T E R - 1 = =============================================================================== Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z @@ -20,9 +22,9 @@ Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst - de gantze Letzn 1.1 auf n Bildschirm haast. + de gantze Letzn 1.1.1 auf n Bildschirm haast. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.1: MIT N MÖRKL UMAYNANDFARN + Letzn 1.1.1: MIT N MÖRKL UMAYNANDFARN ** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** ^ Ayn Öslsbrugg: @@ -35,7 +37,7 @@ 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso kimmst gan dyr naehstn Letzn. - 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. + 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.1.2. Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft zipfst ; naacher bist wider ganz gwon in dyr Befelhs-Artweis. @@ -45,7 +47,7 @@ Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, af hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- für, däß myn bei +dene bleibt. Pröblt s ainfach aus! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.2: ÖNN WIMM AUSSCHALTTN + Letzn 1.1.2: ÖNN WIMM AUSSCHALTTN ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÃœERST, LIS LIEBER ZEERST DE GANTZE LET- @@ -68,7 +70,7 @@ Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschrib Dautticht speichertst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.3: GWORT BARECHTN - LÖSCHN + Letzn 1.1.3: GWORT BARECHTN - LÖSCHN ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** @@ -84,14 +86,14 @@ Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschrib ---> De Kkuue sprangg übber nn Maanad. - 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. + 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.1.4. weiter. Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.4: GWORT BARECHTN - EINFÃœEGN + Letzn 1.1.4: GWORT BARECHTN - EINFÃœEGN ** Druck i , dyrmitst öbbs einfüegst. ** @@ -110,11 +112,11 @@ Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn ---> Daader gt dd öbbs b. ---> Daader geet diend öbbs ab. - 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. + 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.5: GWORT BARECHTN - ANFÃœEGN + Letzn 1.1.5: GWORT BARECHTN - ANFÃœEGN ** Druck A gan n Gwort Anfüegn. ** @@ -135,9 +137,9 @@ Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn ---> Aau daader stee Aau daader steet öbbs Unvollstöndigs. - 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. + 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.6: AYN DAUTTICHT BARECHTN + Letzn 1.1.6: AYN DAUTTICHT BARECHTN ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** @@ -145,7 +147,7 @@ Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze Letzn durch!! - 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! + 1. Verlaaß also s Blat, wie s in dyr Letzn 1.1.2. haisst, mit :q! ! 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit @@ -160,7 +162,7 @@ Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 1 + ZAMMENFASSUNG VON DYR LETZN 1.1 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. @@ -181,9 +183,9 @@ Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ayn Faudung ab, dö wo dyr schiefgangen ist. - Ietz tue mit dyr Letzn 2 weiter. + Ietz tue mit dyr Letzn 1.2 weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.1.: LÖSHFAUDUNGEN + Letzn 1.2.1: LÖSHFAUDUNGEN ** Demmlt dw , dyrmitst ayn Wort löschst. ** @@ -204,9 +206,9 @@ Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr - Letzn 2.2. + Letzn 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN + Letzn 1.2.2: NON MEERER LÖSHFAUDUNGEN ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** @@ -222,14 +224,14 @@ Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. - 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. + 5. Gee weiter gan dyr Letzn 1.2.3, dyrmitst versteest, was daader ablaaufft. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.3: PFEMERER UND WOLENDER + Letzn 1.2.3: PFEMERER UND WOLENDER Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- @@ -252,7 +254,7 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör entspröchet weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN + Letzn 1.2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel entspröchet oft gangen. ** @@ -269,13 +271,13 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. - 6. Gee weiter gan dyr Letzn 2.5. + 6. Gee weiter gan dyr Letzn 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN + Letzn 1.2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN ** Ayn Zal vor aynn Pfemerer füert dönn entspröchet oft aus. ** @@ -298,7 +300,7 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.6: ARECHTN AUF ZEILN + Letzn 1.2.6: ARECHTN AUF ZEILN ** Zipf dd , um ayn gantze Zeil z löschn. ** @@ -321,7 +323,7 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör ---> 7) Dirndl, dein Gschau. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) + Letzn 1.2.7: RUGGGÖNGIG MACHEN (RUGGLN) ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** @@ -342,9 +344,9 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör ---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- der her. 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. - Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. + Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 2 + ZAMMENFASSUNG VON DYR LETZN 1.2 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw @@ -367,7 +369,7 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.1: ANFÃœEGN (»put«) + Letzn 1.3.1: ANFÃœEGN (»put«) ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** @@ -390,7 +392,7 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör ---> c) Bedachtn kan myn lernen. ---> a) Roosn seind root. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.2: ERSÖTZN (»replace«) + Letzn 1.3.2: ERSÖTZN (»replace«) ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** @@ -406,14 +408,14 @@ Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mör ---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! ---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! - 5. Ietz tue mit dyr Letzn 3.3 weiter. + 5. Ietz tue mit dyr Letzn 1.3.3 weiter. Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn mit n Auswendiglernen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.3: ÖNDERN (»change«) + Letzn 1.3.3: ÖNDERN (»change«) ** Um hinst eyn s Wortend z öndern, zipf ce . ** @@ -459,7 +461,7 @@ ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 3 + ZAMMENFASSUNG VON DYR LETZN 1.3 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös @@ -482,7 +484,7 @@ Ietz tue mit dyr naehstn Letzn weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND + Letzn 1.4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND ** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** @@ -505,7 +507,7 @@ Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bi 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.2: DYR BEFELH ZO N SUECHEN + Letzn 1.4.2: DYR BEFELH ZO N SUECHEN ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** @@ -528,7 +530,7 @@ Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bi Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.3: DE GÖGNKLAMMERN FINDDN + Letzn 1.4.3: DE GÖGNKLAMMERN FINDDN ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** @@ -551,7 +553,7 @@ Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in ay ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) + Letzn 1.4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** @@ -574,7 +576,7 @@ Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in ay Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 4 + ZAMMENFASSUNG VON DYR LETZN 1.4 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. G bringt di an s End von dyr Dautticht. @@ -597,7 +599,7 @@ Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in ay Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÃœERN + Letzn 1.5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÃœERN ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** @@ -620,7 +622,7 @@ Und wolgmörkt: Alle Befelh, wo mit : angeend, müessend mit bst ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.2: NON MEERER DRÃœBER, WIE MYN DAUTTICHTN SCHREIBT + Letzn 1.5.2: NON MEERER DRÃœBER, WIE MYN DAUTTICHTN SCHREIBT ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM . ** @@ -643,7 +645,7 @@ Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH beziehungsweis bei aynn Unixgebäu mit :!rm POCH . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN + Letzn 1.5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN ** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** @@ -666,7 +668,7 @@ Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös Gwort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.4: EINLÖSN UND ZAMMENFÃœERN VON DAUTTICHTN + Letzn 1.5.4: EINLÖSN UND ZAMMENFÃœERN VON DAUTTICHTN ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** @@ -674,14 +676,14 @@ Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um 1. Sötz önn Mörkl über dö Zeil daader. OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus - dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- + dyr Letzn 1.5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- derfinddst. 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. 3. Um zo n Ãœberprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; - und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s + und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 1.5.3. geit, s Urniss und de eingfüegte Dauttichtfassung. Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- @@ -689,7 +691,7 @@ Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei unterhalb n Mörkl ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 5 + ZAMMENFASSUNG VON DYR LETZN 1.5 1. :!FAUDUNG füert aynn ausserignen Befelh aus. @@ -712,7 +714,7 @@ Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.1: ZEIL ÖFFNEN (»open«) + Letzn 1.6.1: ZEIL ÖFFNEN (»open«) ** Zipf o , um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** @@ -735,7 +737,7 @@ Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.2: GWORT ANFÃœEGN (»append«) + Letzn 1.6.2: GWORT ANFÃœEGN (»append«) ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** @@ -758,7 +760,7 @@ Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) + Letzn 1.6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** @@ -781,7 +783,7 @@ Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds einde mlte Zaichen löscht ayn vorhanddns. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.4: GWORT AAMEN UND EINFÃœEGN + Letzn 1.6.4: GWORT AAMEN UND EINFÃœEGN ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** @@ -804,7 +806,7 @@ Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds einde Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw zo n Beispil aamt hinst eyn n naehstn Wortanfang (aane dönn selber). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.5: SCHALTTER SÖTZN + Letzn 1.6.5: SCHALTTER SÖTZN ** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** ** schreibung übergeet. ** @@ -827,7 +829,7 @@ Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsea Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c in n Suechausdruk: /übergee\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 6 + ZAMMENFASSUNG VON DYR LETZN 1.6 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z ginnen. @@ -850,7 +852,7 @@ Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \ 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.1: AYN HILFGWORT AUFRUEFFEN + Letzn 1.7.1: AYN HILFGWORT AUFRUEFFEN ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung". ** @@ -873,7 +875,7 @@ Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF + Letzn 1.7.2: ERSTÖLL AYN GIN-SCHRIPF ** Mutz önn Wimm mit de einbautn Faehigkeitn auf. ** @@ -896,7 +898,7 @@ Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \ Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn willst. Meerer dyrzue erfarst unter: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.3: VERGÖNTZN + Letzn 1.7.3: VERGÖNTZN ** Befelhszeilnvergöntzung mit d und ** @@ -919,7 +921,7 @@ Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \ Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach d und . Bsunders nützlich ist dös bei :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 7 + ZAMMENFASSUNG VON DYR LETZN 1.7 1. Zipf :help oder druck oder , um ayn Hilffenster z öffnen. diff --git a/runtime/tutor/tutor.bg.utf-8 b/runtime/tutor/tutor1.bg.utf-8 similarity index 96% rename from runtime/tutor/tutor.bg.utf-8 rename to runtime/tutor/tutor1.bg.utf-8 index 325ed784e5..0426291e07 100644 --- a/runtime/tutor/tutor.bg.utf-8 +++ b/runtime/tutor/tutor1.bg.utf-8 @@ -23,7 +23,7 @@ j нÑколко пъти, така че Урок 1.1 да Ñе побере на екрана. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.1: ПРИДВИЖВÐÐЕ ÐРПОКÐЗÐЛЕЦР+ Урок 1.1.1: ПРИДВИЖВÐÐЕ ÐРПОКÐЗÐЛЕЦР** За да премеÑтите показалеца, натиÑкайте клавишите h,j,k,l както е указано. ** @@ -46,7 +46,7 @@ hjkl ще можете да Ñе придвижвате по-бързо, Ñлед като Ñвикнете. ÐаиÑтина! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.2: Излизане от VIM (quit) + Урок 1.1.2: Излизане от VIM (quit) Важно!!! Преди да изпълните коÑто и да е от Ñтъпките по-долу, прочетете @@ -70,7 +70,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.3: ПРОМЯÐÐ ÐРТЕКСТ - ИЗТРИВÐÐЕ (DELETE) + Урок 1.1.3: ПРОМЯÐÐ ÐРТЕКСТ - ИЗТРИВÐÐЕ (DELETE) ** ÐатиÑнете x , за да изтриете буквата под показалеца. ** @@ -93,7 +93,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.4: ПРОМЯÐÐ ÐРТЕКСТ - ВЪВЕЖДÐÐЕ (INSERT) + Урок 1.1.4: ПРОМЯÐÐ ÐРТЕКСТ - ВЪВЕЖДÐÐЕ (INSERT) ** Бележка на преводача ** @@ -133,7 +133,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.5: ПРОМЯÐÐ ÐРТЕКСТ - ДОБÐВЯÐЕ (APPEND) + Урок 1.1.5: ПРОМЯÐÐ ÐРТЕКСТ - ДОБÐВЯÐЕ (APPEND) ** ÐатиÑнете A (SHIFT+a) , за да добавите текÑÑ‚. ** @@ -157,14 +157,14 @@ 5. След като овладеете добавÑнето на текÑÑ‚, отидете на Урок 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.6: ПРОМЯÐÐ ÐРФÐЙЛ + Урок 1.1.6: ПРОМЯÐÐ ÐРФÐЙЛ ** Използвайте :wq (write and quit), за да запишете файла и излезете. ** Внимание! Преди да изпълните коÑто и да е от Ñтъпките долу, прочетете Ñ†ÐµÐ»Ð¸Ñ ÑƒÑ€Ð¾Ðº!! - 1. Излезте от ÑамоучителÑ, както направихте в Урок 1.2: :q! + 1. Излезте от ÑамоучителÑ, както направихте в Урок 1.1.2: :q! Или, ако имате доÑтъп до друг терминал, направете Ñледното там. 2. Ðа ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ напишете Ñледното и натиÑнете : vim tutor @@ -205,7 +205,7 @@ Сега продължете Ñ Ð£Ñ€Ð¾Ðº 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.1: КОМÐÐДИ ЗРИЗТРИВÐÐЕ + Урок 1.2.1: КОМÐÐДИ ЗРИЗТРИВÐÐЕ ** Въведете dw , за да изтриете дума. ** @@ -229,7 +229,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.2: ОЩЕ КОМÐÐДИ ЗРИЗТРИВÐÐЕ + Урок 1.2.2: ОЩЕ КОМÐÐДИ ЗРИЗТРИВÐÐЕ ** Въведете d$ , за да изтриете вÑичко до ÐºÑ€Ð°Ñ Ð½Ð° реда. ** @@ -252,7 +252,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.3: ЗРОПЕРÐТОРИТЕ И ДВИЖЕÐИЯТР+ Урок 1.2.3: ЗРОПЕРÐТОРИТЕ И ДВИЖЕÐИЯТРМного команди, които променÑÑ‚ текÑÑ‚, Ñе ÑÑŠÑтоÑÑ‚ от оператор и движение. @@ -276,7 +276,7 @@ Ñъответното мÑÑто. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.4: ИЗПОЛЗВÐÐЕ ÐРБРОЯЧ ПРИ ДВИЖЕÐИЕ + Урок 1.2.4: ИЗПОЛЗВÐÐЕ ÐРБРОЯЧ ПРИ ДВИЖЕÐИЕ ** Ðко въведете чиÑло преди движението, то Ñе Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñ Ñ‚Ð¾Ð»ÐºÐ¾Ð²Ð° пъти @@ -300,7 +300,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.5: ИЗПОЛЗВÐЙТЕ БРОЯЧ, ЗРДРТРИЕТЕ ПОВЕЧЕ + Урок 1.2.5: ИЗПОЛЗВÐЙТЕ БРОЯЧ, ЗРДРТРИЕТЕ ПОВЕЧЕ ** Ðко въведете чиÑло преди оператор, дейÑтвието Ñе Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñ Ñ‚Ð¾Ð»ÐºÐ¾Ð²Ð° пъти @@ -325,7 +325,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.6: РÐБОТРС РЕДОВЕ + Урок 1.2.6: РÐБОТРС РЕДОВЕ ** Въведете dd , за да изтриете цÑл ред. ** @@ -348,7 +348,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.7: ОТМЯÐÐ + Урок 1.2.7: ОТМЯÐÐ ** ÐатиÑнете u , за да отмените (undo) поÑледната команда; U , за @@ -396,7 +396,7 @@ За да отмените отмените, натиÑнете CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.1: КОМÐÐДÐТРЗРПОСТÐВЯÐЕ (PUT) + Урок 1.3.1: КОМÐÐДÐТРЗРПОСТÐВЯÐЕ (PUT) ** Въведете p , за да поÑтавите изтрит преди това текÑÑ‚ Ñлед @@ -421,7 +421,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.2: КОМÐÐДÐТРЗРЗÐМЕСТВÐÐЕ (REPLACE) + Урок 1.3.2: КОМÐÐДÐТРЗРЗÐМЕСТВÐÐЕ (REPLACE) ** Въведете rx , за да замеÑтите буквата под показалеца Ñ x . ** @@ -445,7 +445,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.3: ОПЕРÐТОРЪТ ЗРПРОМЯÐÐ (CHANGE) + Урок 1.3.3: ОПЕРÐТОРЪТ ЗРПРОМЯÐÐ (CHANGE) ** За да промените от мÑÑтото на показалеца до ÐºÑ€Ð°Ñ Ð½Ð° дума, въведете ce . ** @@ -468,7 +468,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.4: ОЩЕ ПРОМЕÐИ С ИЗПОЛЗВÐÐЕ ÐÐ c + Урок 1.3.4: ОЩЕ ПРОМЕÐИ С ИЗПОЛЗВÐÐЕ ÐÐ c ** Операторът за промÑна Ñе използва ÑÑŠÑ Ñъщите Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÑ‚Ð¾ при триене ** @@ -517,7 +517,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.1: МЕСТОПОЛОЖЕÐИЕ ÐРПОКÐЗÐЛЕЦРИ СЪСТОЯÐИЕ ÐРФÐЙЛР+ Урок 1.4.1: МЕСТОПОЛОЖЕÐИЕ ÐРПОКÐЗÐЛЕЦРИ СЪСТОЯÐИЕ ÐРФÐЙЛР** Въведете CTRL-G, за да видите къде Ñе намирате във файла и неговото ÑÑŠÑтоÑние. Въведете G , за да отидете на нÑкой ред. ** @@ -540,7 +540,7 @@ 4. Ðко вече Ñе чувÑтвате уверени, изпълнете Ñтъпките от 1 до 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.2: КОМÐÐДÐТРЗРТЪРСЕÐЕ + Урок 1.4.2: КОМÐÐДÐТРЗРТЪРСЕÐЕ ** Въведете / , поÑледвана от фраза, за да потърÑите фразата. ** @@ -565,7 +565,7 @@ началото на файла, оÑвен ако наÑтройката 'wrapscan' е била нулирана. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.3: ТЪРСЕÐЕ ÐРСЪОТВЕТСТВÐЩИ СКОБИ + Урок 1.4.3: ТЪРСЕÐЕ ÐРСЪОТВЕТСТВÐЩИ СКОБИ ** Въведете % , за да на мерите Ñъответната ),], или } . ** @@ -589,7 +589,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.4: КОМÐÐДÐТРЗРЗÐМЕСТВÐÐЕ (SUBSTITUTE) + Урок 1.4.4: КОМÐÐДÐТРЗРЗÐМЕСТВÐÐЕ (SUBSTITUTE) ** Въведете :s/Ñтаро/ново/g за да замеÑтите 'Ñтаро' ÑÑŠÑ 'ново'. ** @@ -640,7 +640,7 @@ За да бъдете питани при вÑÑко Ñъвпадение, добавете 'c' :%s/низ/друг/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.1: КÐК ДРИЗПЪЛÐИМ ВЪÐШÐРКОМÐÐДР+ Урок 1.5.1: КÐК ДРИЗПЪЛÐИМ ВЪÐШÐРКОМÐÐДР** Въведете :! , поÑледвано от външна команда, за да Ñ Ð¸Ð·Ð¿ÑŠÐ»Ð½Ð¸Ñ‚Ðµ. ** @@ -662,7 +662,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.2: ПОВЕЧЕ ЗРЗÐПИСВÐÐЕТО ÐРФÐЙЛОВЕ + Урок 1.5.2: ПОВЕЧЕ ЗРЗÐПИСВÐÐЕТО ÐРФÐЙЛОВЕ ** За да запишете промените, направени в текÑта въведете :w ИМЕÐÐФÐЙЛ. ** @@ -687,7 +687,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.3: ИЗБОР ÐРТЕКСТ ЗРЗÐПИС + Урок 1.5.3: ИЗБОР ÐРТЕКСТ ЗРЗÐПИС ** За да запишете чаÑÑ‚ от файла, натиÑнете v , Ñледвано от движение :w FILENAME ** @@ -711,7 +711,7 @@ за да направите нещо Ñ Ñ‚ÐµÐºÑта. Ðапример, d изтрива текÑта. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.4: ИЗВЛИЧÐÐЕ И СЛИВÐÐЕ ÐРФÐЙЛОВЕ + Урок 1.5.4: ИЗВЛИЧÐÐЕ И СЛИВÐÐЕ ÐРФÐЙЛОВЕ ** За да вмъкнете Ñъдържание на файл в текущиÑ, въведете :r ИМЕÐÐФÐЙЛ ** @@ -757,7 +757,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.1: КОМÐÐДÐТРЗРОТВÐРЯÐЕ (OPEN) + Урок 1.6.1: КОМÐÐДÐТРЗРОТВÐРЯÐЕ (OPEN) ** ÐатиÑнете o , за да отворите ред под показалеца и да преминете в @@ -784,7 +784,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.2: КОМÐÐДÐТРЗРДОБÐВЯÐЕ (APPEND) + Урок 1.6.2: КОМÐÐДÐТРЗРДОБÐВЯÐЕ (APPEND) ** ÐатиÑнете a , за да въведете текÑÑ‚ СЛЕД показалеца. ** @@ -808,7 +808,7 @@ разлика е в това, къде Ñе въвеждат знаците. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.3: ДРУГ ÐÐЧИРЗРЗÐМЕСТВÐÐЕ + Урок 1.6.3: ДРУГ ÐÐЧИРЗРЗÐМЕСТВÐÐЕ ** ÐатиÑнете главно R , за да замеÑтите повече от един знак. ** @@ -830,7 +830,7 @@ знак изтрива ÑъщеÑтвуващ знак. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.4: КОПИРÐÐЕ И ЗÐМЕСТВÐÐЕ + Урок 1.6.4: КОПИРÐÐЕ И ЗÐМЕСТВÐÐЕ ** Използвайте операторът y (yank), за да копирате текÑÑ‚ и p (paste), @@ -855,7 +855,7 @@ Важно! Можете да използвате y Ñъщо и като оператор. yw взима цÑла дума. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.5: ЗÐДÐÐ’ÐÐЕ ÐÐ ÐÐСТРОЙКР+ Урок 1.6.5: ЗÐДÐÐ’ÐÐЕ ÐÐ ÐÐСТРОЙКР** Задайте наÑтройка, та при Ñ‚ÑŠÑ€Ñене и замеÑтване, да не Ñе различават @@ -911,7 +911,7 @@ 7. ПоÑтавете "no" отпред за да изключите наÑтройка: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.1: КÐК ДРÐÐМЕРИМ ПОМОЩ + Урок 1.7.1: КÐК ДРÐÐМЕРИМ ПОМОЩ ** Ползвайте наличната ÑиÑтема за помощ ** @@ -934,7 +934,7 @@ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.2: СЪЗДÐЙТЕ СКРИПТ ЗРСТÐРТИРÐÐЕ + Урок 1.7.2: СЪЗДÐЙТЕ СКРИПТ ЗРСТÐРТИРÐÐЕ ** Включване на възможноÑтите на Vim ** @@ -959,7 +959,7 @@ :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.3: ДОВЪРШВÐÐЕ + Урок 1.7.3: ДОВЪРШВÐÐЕ ** Довършване на команди Ñ CTRL-D и ** diff --git a/runtime/tutor/tutor.ca b/runtime/tutor/tutor1.ca similarity index 91% rename from runtime/tutor/tutor.ca rename to runtime/tutor/tutor1.ca index 808a87d61b..6ff996c2b2 100644 --- a/runtime/tutor/tutor.ca +++ b/runtime/tutor/tutor1.ca @@ -19,10 +19,10 @@ Ara assegureu-vos que la tecla de bloqueig de majúscules no està activada i premeu la tecla j per a moure el cursor avall, fins que la - lliçó 1.1 ocupi completament la pantalla. + lliçó 1.1.1 ocupi completament la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.1: MOURE EL CURSOR + Lliçó 1.1.1: MOURE EL CURSOR ** Per a moure el cursor premeu les tecles h, j, k, l tal com s'indica. ** @@ -36,7 +36,7 @@ 2. Mantingueu premuda la tecla avall (j) una estona. ---> Ara ja sabeu com moure-us fins a la següent lliçó. - 3. Usant la tecla avall, aneu a la lliçó 1.2. + 3. Usant la tecla avall, aneu a la lliçó 1.1.2. Nota: Si no esteu segurs de la tecla que heu premut, premeu per a tornar al mode Normal. Llavors torneu a teclejar l'ordre que volíeu. @@ -45,7 +45,7 @@ Nota: Les tecles de moviment del cursor (fletxes) tamb usant hjkl anireu més ràpid un cop us hi hagueu acostumant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.2: ENTRAR I SORTIR DEL VIM + Lliçó 1.1.2: ENTRAR I SORTIR DEL VIM !! NOTA: Abans de seguir els passos següents llegiu *tota* la lliçó!! @@ -66,9 +66,9 @@ Nota: Les tecles de moviment del cursor (fletxes) tamb 4. Si heu memoritzat les ordres, feu els passos anteriors, de l'1 al 3, per a sortir i tornar a entrar a l'editor. Llavors moveu el cursor - avall fins a la lliçó 1.3. + avall fins a la lliçó 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.3: EDITAR TEXT - ESBORRAR + Lliçó 1.1.3: EDITAR TEXT - ESBORRAR ** En mode Normal premeu x per a esborrar el caràcter sota el cursor. ** @@ -84,14 +84,14 @@ Nota: Les tecles de moviment del cursor (fletxes) tamb ---> Unna vaaca vva salttar perr sobbree la llluna. - 5. Ara que la línia és correcta, aneu a la lliçó 1.4. + 5. Ara que la línia és correcta, aneu a la lliçó 1.1.4. NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.4: EDITAR TEXT - INSERIR + Lliçó 1.1.4: EDITAR TEXT - INSERIR ** En mode Normal premeu i per a inserir text. ** @@ -114,7 +114,7 @@ NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 1 SUMARI + LLIÇÓ 1.1 SUMARI 1. El cursor es mou amb les fletxes o bé amb les tecles hjkl. @@ -133,11 +133,11 @@ NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. NOTA: La tecla us porta al mode Normal o cancel·la una ordre que estigui a mitges. -Ara continueu a la lliçó 2. +Ara continueu a la lliçó 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.1: ORDRES PER ESBORRAR + Lliçó 1.2.1: ORDRES PER ESBORRAR ** Teclegeu dw per a esborrar fins al final d'una paraula. ** @@ -156,11 +156,11 @@ NOTA: Les lletres dw apareixeran a la l ---> Hi ha algunes paraules divertit que no pertanyen paper a aquesta frase. 5. Repetiu el passos 3 i 4 fins que la frase sigui correcta i continueu - a la lliçó 2.2. + a la lliçó 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.2: MÉS ORDRES PER ESBORRAR + Lliçó 1.2.2: MÉS ORDRES PER ESBORRAR ** Escriviu d$ per a esborrar fins al final de la línia. ** @@ -176,14 +176,14 @@ NOTA: Les lletres dw apareixeran a la l ---> Algú ha escrit el final d'aquesta línia dos cops. línia dos cops. - 5. Aneu a la lliçó 2.3 per a entendre què està passant. + 5. Aneu a la lliçó 1.2.3 per a entendre què està passant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.3: SOBRE ORDRES I OBJECTES + Lliçó 1.2.3: SOBRE ORDRES I OBJECTES El format de l'ordre d'esborrar d és el següent: @@ -206,7 +206,7 @@ NOTA: Per als aventurers: si teclegeu nom ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.4: UNA EXCEPCIÓ A 'ORDRE-OBJECTE' + Lliçó 1.2.4: UNA EXCEPCIÓ A 'ORDRE-OBJECTE' ** Teclegeu dd per a esborrar tota la línia. ** @@ -229,7 +229,7 @@ NOTA: Per als aventurers: si teclegeu nom 7) Igual que tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.5: L'ORDRE DESFER + Lliçó 1.2.5: L'ORDRE DESFER ** Premeu u per a desfer els canvis, U per a restaurar tota la línia. ** @@ -245,14 +245,14 @@ NOTA: Per als aventurers: si teclegeu nom ---> Correegiu els errors d'aqquesta línia i dessfeu-los aamb desfer. - 8. Aquestes ordres són molt útils. Ara aneu al sumari de la lliçó 2. + 8. Aquestes ordres són molt útils. Ara aneu al sumari de la lliçó 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 2 SUMARI + LLIÇÓ 1.2 SUMARI 1. Per a esborrar del cursor al final de la paraula teclegeu: dw @@ -275,7 +275,7 @@ NOTA: Per als aventurers: si teclegeu nom Per a desfer l'ordre desfer premeu: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.1: L'ORDRE 'POSAR' + Lliçó 1.3.1: L'ORDRE 'POSAR' ** Premeu p per a inserir l'última cosa que heu esborrat @@ -298,7 +298,7 @@ NOTA: Per als aventurers: si teclegeu nom a) Les roses són vermelles, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.2: L'ORDRE SUBSTITUIR + Lliçó 1.3.2: L'ORDRE SUBSTITUIR ** Premeu r i un caràcter per a substituir el caràcter @@ -315,13 +315,13 @@ NOTA: Per als aventurers: si teclegeu nom ---> Quen van escroure aquerta línia, algh va prémer tikles equivocades! ---> Quan van escriure aquesta línia, algú va prémer tecles equivocades! - 5. Ara continueu a la lliçó 3.2. + 5. Ara continueu a la lliçó 1.3.2. NOTA: Recordeu que heu de practicar, no memoritzar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.3: L'ORDRE CANVIAR + Lliçó 1.3.3: L'ORDRE CANVIAR ** Per a canviar una part o tota la paraula, escriviu cw . ** @@ -344,7 +344,7 @@ Noteu que cw no nom ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.4: MÉS CANVIS AMB c + Lliçó 1.3.4: MÉS CANVIS AMB c ** L'ordre canviar s'usa amb els mateixos objectes que l'ordre esborrar. ** @@ -367,7 +367,7 @@ Noteu que cw no nom ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 3 SUMARI + LLIÇÓ 1.3 SUMARI 1. Per a tornar a posar el text que heu esborrat, premeu p . Això posa @@ -390,7 +390,7 @@ Ara aneu a la seg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.1: SITUACIÓ I ESTAT DEL FITXER + Lliçó 1.4.1: SITUACIÓ I ESTAT DEL FITXER ** Premeu CTRL-g per a veure la situació dins del fitxer i el seu estat. @@ -413,7 +413,7 @@ Ara aneu a la seg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.2: L'ORDRE CERCAR + Lliçó 1.4.2: L'ORDRE CERCAR ** Premeu / seguit de la frase que vulgueu cercar. ** @@ -436,7 +436,7 @@ Nota: Quan la cerca arribi al final del fitxer continuar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.3: CERCA DE PARÈNTESIS + Lliçó 1.4.3: CERCA DE PARÈNTESIS ** Premeu % per cercar el ), ], o } corresponent. ** @@ -459,7 +459,7 @@ Nota: Aix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.4: UNA MANERA DE CORREGIR ERRORS + Lliçó 1.4.4: UNA MANERA DE CORREGIR ERRORS ** Escriviu :s/vell/nou/g per a substituir 'vell' per 'nou'. ** @@ -482,7 +482,7 @@ Nota: Aix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 4 SUMARI + LLIÇÓ 1.4 SUMARI 1. Ctrl-g mostra la posició dins del fitxer i l'estat del mateix. @@ -505,7 +505,7 @@ Nota: Aix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.1: COM EXECUTAR UNA ORDRE EXTERNA + Lliçó 1.5.1: COM EXECUTAR UNA ORDRE EXTERNA ** Teclegeu :! seguit d'una ordre externa per a executar-la. ** @@ -528,7 +528,7 @@ Nota: Totes les ordres : s'han d'acabar amb la tecla ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.2: MÉS SOBRE L'ESCRIPTURA DE FITXERS + Lliçó 1.5.2: MÉS SOBRE L'ESCRIPTURA DE FITXERS ** Per a desar els canvis fets, escriviu :w FITXER. ** @@ -551,7 +551,7 @@ Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.3: UNA ORDRE SELECTIVA PER A DESAR + Lliçó 1.5.3: UNA ORDRE SELECTIVA PER A DESAR ** Per a desar una part del fitxer, escriviu :#,# w FITXER ** @@ -574,7 +574,7 @@ Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.4: OBTENIR I AJUNTAR FITXERS + Lliçó 1.5.4: OBTENIR I AJUNTAR FITXERS ** Per a inserir el contingut d'un fitxer, feu :r FITXER ** @@ -583,7 +583,7 @@ Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el 2. Situeu el cursor a dalt de tot d'aquesta pàgina. -NOTA: Després d'executar el Pas 3 veureu la lliçó 5.3. Tireu cap avall +NOTA: Després d'executar el Pas 3 veureu la lliçó 1.5.3. Tireu cap avall fins a aquesta lliçó un altre cop. 3. Ara obtingueu el fitxer PROVA amb l'ordre :r PROVA on PROVA és el @@ -592,12 +592,12 @@ NOTA: Despr NOTA: El fitxer que obtingueu s'insereix en el lloc on hi hagi el cursor. 4. Per a comprovar que s'ha obtingut el fitxer tireu enrere i mireu com - ara hi ha dues còpies de la lliçó 5.3, l'original i la del fitxer. + ara hi ha dues còpies de la lliçó 1.5.3, l'original i la del fitxer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 5 SUMARI + LLIÇÓ 1.5 SUMARI 1. :!ordre executa una ordre externa. @@ -620,7 +620,7 @@ NOTA: El fitxer que obtingueu s'insereix en el lloc on hi hagi el cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.1: L'ORDRE OBRIR + Lliçó 1.6.1: L'ORDRE OBRIR ** Premeu o per a obrir una línia i entrar en mode inserció. ** @@ -643,7 +643,7 @@ Obriu una l ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.2: L'ORDRE AFEGIR + Lliçó 1.6.2: L'ORDRE AFEGIR ** Premeu a per a afegir text DESPRÉS del cursor. ** @@ -666,7 +666,7 @@ Nota: Aix ---> Aquesta línia us permetrà practicar afegir text a final de línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.3: UNA ALTRA MANERA DE SUBSTITUIR + Lliçó 1.6.3: UNA ALTRA MANERA DE SUBSTITUIR ** Teclegeu una R majúscula per a substituir més d'un caràcter. ** @@ -689,7 +689,7 @@ Nota: Aix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.4: ESTABLIR OPCIONS + Lliçó 1.6.4: ESTABLIR OPCIONS ** Feu que les ordres cercar o substituir ignorin les diferències entre majúscules i minúscules ** @@ -712,7 +712,7 @@ Nota: Aix 6. Per a treure el ressaltat dels resultats, feu: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 6 SUMARI + LLIÇÓ 1.6 SUMARI 1. L'ordre o obre una línia a SOTA la del cursor i mou el cursor a la nova @@ -735,7 +735,7 @@ Nota: Aix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 7: ORDRES D'AJUDA + LLIÇÓ 1.7: ORDRES D'AJUDA ** Utilitzeu el sistema intern d'ajuda ** @@ -758,7 +758,7 @@ Nota: Aix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 8: CREAR UN SCRIPT D'INICI + LLIÇÓ 1.8: CREAR UN SCRIPT D'INICI ** Activeu funcions automàticament ** diff --git a/runtime/tutor/tutor.ca.utf-8 b/runtime/tutor/tutor1.ca.utf-8 similarity index 91% rename from runtime/tutor/tutor.ca.utf-8 rename to runtime/tutor/tutor1.ca.utf-8 index f39154b803..98bda7e6c1 100644 --- a/runtime/tutor/tutor.ca.utf-8 +++ b/runtime/tutor/tutor1.ca.utf-8 @@ -19,10 +19,10 @@ Ara assegureu-vos que la tecla de bloqueig de majúscules no està activada i premeu la tecla j per a moure el cursor avall, fins que la - lliçó 1.1 ocupi completament la pantalla. + lliçó 1.1.1 ocupi completament la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.1: MOURE EL CURSOR + Lliçó 1.1.1: MOURE EL CURSOR ** Per a moure el cursor premeu les tecles h, j, k, l tal com s'indica. ** @@ -36,7 +36,7 @@ 2. Mantingueu premuda la tecla avall (j) una estona. ---> Ara ja sabeu com moure-us fins a la següent lliçó. - 3. Usant la tecla avall, aneu a la lliçó 1.2. + 3. Usant la tecla avall, aneu a la lliçó 1.1.2. Nota: Si no esteu segurs de la tecla que heu premut, premeu per a tornar al mode Normal. Llavors torneu a teclejar l'ordre que volíeu. @@ -45,7 +45,7 @@ Nota: Les tecles de moviment del cursor (fletxes) també funcionen. Però usant hjkl anireu més ràpid un cop us hi hagueu acostumant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.2: ENTRAR I SORTIR DEL VIM + Lliçó 1.1.2: ENTRAR I SORTIR DEL VIM !! NOTA: Abans de seguir els passos següents llegiu *tota* la lliçó!! @@ -66,9 +66,9 @@ Nota: Les tecles de moviment del cursor (fletxes) també funcionen. Però 4. Si heu memoritzat les ordres, feu els passos anteriors, de l'1 al 3, per a sortir i tornar a entrar a l'editor. Llavors moveu el cursor - avall fins a la lliçó 1.3. + avall fins a la lliçó 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.3: EDITAR TEXT - ESBORRAR + Lliçó 1.1.3: EDITAR TEXT - ESBORRAR ** En mode Normal premeu x per a esborrar el caràcter sota el cursor. ** @@ -84,14 +84,14 @@ Nota: Les tecles de moviment del cursor (fletxes) també funcionen. Però ---> Unna vaaca vva salttar perr sobbree la llluna. - 5. Ara que la línia és correcta, aneu a la lliçó 1.4. + 5. Ara que la línia és correcta, aneu a la lliçó 1.1.4. NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 1.4: EDITAR TEXT - INSERIR + Lliçó 1.1.4: EDITAR TEXT - INSERIR ** En mode Normal premeu i per a inserir text. ** @@ -114,7 +114,7 @@ NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 1 SUMARI + LLIÇÓ 1.1 SUMARI 1. El cursor es mou amb les fletxes o bé amb les tecles hjkl. @@ -133,11 +133,11 @@ NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. NOTA: La tecla us porta al mode Normal o cancel·la una ordre que estigui a mitges. -Ara continueu a la lliçó 2. +Ara continueu a la lliçó 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.1: ORDRES PER ESBORRAR + Lliçó 1.2.1: ORDRES PER ESBORRAR ** Teclegeu dw per a esborrar fins al final d'una paraula. ** @@ -156,11 +156,11 @@ NOTA: Les lletres dw apareixeran a la línia de baix de la pantalla mentre ---> Hi ha algunes paraules divertit que no pertanyen paper a aquesta frase. 5. Repetiu el passos 3 i 4 fins que la frase sigui correcta i continueu - a la lliçó 2.2. + a la lliçó 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.2: MÉS ORDRES PER ESBORRAR + Lliçó 1.2.2: MÉS ORDRES PER ESBORRAR ** Escriviu d$ per a esborrar fins al final de la línia. ** @@ -176,14 +176,14 @@ NOTA: Les lletres dw apareixeran a la línia de baix de la pantalla mentre ---> Algú ha escrit el final d'aquesta línia dos cops. línia dos cops. - 5. Aneu a la lliçó 2.3 per a entendre què està passant. + 5. Aneu a la lliçó 1.2.3 per a entendre què està passant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.3: SOBRE ORDRES I OBJECTES + Lliçó 1.2.3: SOBRE ORDRES I OBJECTES El format de l'ordre d'esborrar d és el següent: @@ -206,7 +206,7 @@ NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.4: UNA EXCEPCIÓ A 'ORDRE-OBJECTE' + Lliçó 1.2.4: UNA EXCEPCIÓ A 'ORDRE-OBJECTE' ** Teclegeu dd per a esborrar tota la línia. ** @@ -229,7 +229,7 @@ NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, 7) Igual que tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 2.5: L'ORDRE DESFER + Lliçó 1.2.5: L'ORDRE DESFER ** Premeu u per a desfer els canvis, U per a restaurar tota la línia. ** @@ -245,14 +245,14 @@ NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, ---> Correegiu els errors d'aqquesta línia i dessfeu-los aamb desfer. - 8. Aquestes ordres són molt útils. Ara aneu al sumari de la lliçó 2. + 8. Aquestes ordres són molt útils. Ara aneu al sumari de la lliçó 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 2 SUMARI + LLIÇÓ 1.2 SUMARI 1. Per a esborrar del cursor al final de la paraula teclegeu: dw @@ -275,7 +275,7 @@ NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, Per a desfer l'ordre desfer premeu: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.1: L'ORDRE 'POSAR' + Lliçó 1.3.1: L'ORDRE 'POSAR' ** Premeu p per a inserir l'última cosa que heu esborrat @@ -298,7 +298,7 @@ NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, a) Les roses són vermelles, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.2: L'ORDRE SUBSTITUIR + Lliçó 1.3.2: L'ORDRE SUBSTITUIR ** Premeu r i un caràcter per a substituir el caràcter @@ -315,13 +315,13 @@ NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, ---> Quen van escroure aquerta línia, algh va prémer tikles equivocades! ---> Quan van escriure aquesta línia, algú va prémer tecles equivocades! - 5. Ara continueu a la lliçó 3.2. + 5. Ara continueu a la lliçó 1.3.2. NOTA: Recordeu que heu de practicar, no memoritzar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.3: L'ORDRE CANVIAR + Lliçó 1.3.3: L'ORDRE CANVIAR ** Per a canviar una part o tota la paraula, escriviu cw . ** @@ -344,7 +344,7 @@ Noteu que cw no només canvia la paraula, també us posa en mode d'inserció. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 3.4: MÉS CANVIS AMB c + Lliçó 1.3.4: MÉS CANVIS AMB c ** L'ordre canviar s'usa amb els mateixos objectes que l'ordre esborrar. ** @@ -367,7 +367,7 @@ Noteu que cw no només canvia la paraula, també us posa en mode d'inserció. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 3 SUMARI + LLIÇÓ 1.3 SUMARI 1. Per a tornar a posar el text que heu esborrat, premeu p . Això posa @@ -390,7 +390,7 @@ Ara aneu a la següent lliçó. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.1: SITUACIÓ I ESTAT DEL FITXER + Lliçó 1.4.1: SITUACIÓ I ESTAT DEL FITXER ** Premeu CTRL-g per a veure la situació dins del fitxer i el seu estat. @@ -413,7 +413,7 @@ Ara aneu a la següent lliçó. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.2: L'ORDRE CERCAR + Lliçó 1.4.2: L'ORDRE CERCAR ** Premeu / seguit de la frase que vulgueu cercar. ** @@ -436,7 +436,7 @@ Nota: Quan la cerca arribi al final del fitxer continuarà a l'inici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.3: CERCA DE PARÈNTESIS + Lliçó 1.4.3: CERCA DE PARÈNTESIS ** Premeu % per cercar el ), ], o } corresponent. ** @@ -459,7 +459,7 @@ Nota: Això és molt útil per a trobar errors en programes informàtics! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 4.4: UNA MANERA DE CORREGIR ERRORS + Lliçó 1.4.4: UNA MANERA DE CORREGIR ERRORS ** Escriviu :s/vell/nou/g per a substituir 'vell' per 'nou'. ** @@ -482,7 +482,7 @@ Nota: Això és molt útil per a trobar errors en programes informàtics! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 4 SUMARI + LLIÇÓ 1.4 SUMARI 1. Ctrl-g mostra la posició dins del fitxer i l'estat del mateix. @@ -505,7 +505,7 @@ Nota: Això és molt útil per a trobar errors en programes informàtics! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.1: COM EXECUTAR UNA ORDRE EXTERNA + Lliçó 1.5.1: COM EXECUTAR UNA ORDRE EXTERNA ** Teclegeu :! seguit d'una ordre externa per a executar-la. ** @@ -528,7 +528,7 @@ Nota: Totes les ordres : s'han d'acabar amb la tecla ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.2: MÉS SOBRE L'ESCRIPTURA DE FITXERS + Lliçó 1.5.2: MÉS SOBRE L'ESCRIPTURA DE FITXERS ** Per a desar els canvis fets, escriviu :w FITXER. ** @@ -551,7 +551,7 @@ Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.3: UNA ORDRE SELECTIVA PER A DESAR + Lliçó 1.5.3: UNA ORDRE SELECTIVA PER A DESAR ** Per a desar una part del fitxer, escriviu :#,# w FITXER ** @@ -574,7 +574,7 @@ Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 5.4: OBTENIR I AJUNTAR FITXERS + Lliçó 1.5.4: OBTENIR I AJUNTAR FITXERS ** Per a inserir el contingut d'un fitxer, feu :r FITXER ** @@ -583,7 +583,7 @@ Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el 2. Situeu el cursor a dalt de tot d'aquesta pàgina. -NOTA: Després d'executar el Pas 3 veureu la lliçó 5.3. Tireu cap avall +NOTA: Després d'executar el Pas 3 veureu la lliçó 1.5.3. Tireu cap avall fins a aquesta lliçó un altre cop. 3. Ara obtingueu el fitxer PROVA amb l'ordre :r PROVA on PROVA és el @@ -592,12 +592,12 @@ NOTA: Després d'executar el Pas 3 veureu la lliçó 5.3. Tireu cap avall NOTA: El fitxer que obtingueu s'insereix en el lloc on hi hagi el cursor. 4. Per a comprovar que s'ha obtingut el fitxer tireu enrere i mireu com - ara hi ha dues còpies de la lliçó 5.3, l'original i la del fitxer. + ara hi ha dues còpies de la lliçó 1.5.3, l'original i la del fitxer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 5 SUMARI + LLIÇÓ 1.5 SUMARI 1. :!ordre executa una ordre externa. @@ -620,7 +620,7 @@ NOTA: El fitxer que obtingueu s'insereix en el lloc on hi hagi el cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.1: L'ORDRE OBRIR + Lliçó 1.6.1: L'ORDRE OBRIR ** Premeu o per a obrir una línia i entrar en mode inserció. ** @@ -643,7 +643,7 @@ Obriu una línia sobre aquesta prement Shift-o amb el cursor en aquesta línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.2: L'ORDRE AFEGIR + Lliçó 1.6.2: L'ORDRE AFEGIR ** Premeu a per a afegir text DESPRÉS del cursor. ** @@ -666,7 +666,7 @@ Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, ---> Aquesta línia us permetrà practicar afegir text a final de línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.3: UNA ALTRA MANERA DE SUBSTITUIR + Lliçó 1.6.3: UNA ALTRA MANERA DE SUBSTITUIR ** Teclegeu una R majúscula per a substituir més d'un caràcter. ** @@ -689,7 +689,7 @@ Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lliçó 6.4: ESTABLIR OPCIONS + Lliçó 1.6.4: ESTABLIR OPCIONS ** Feu que les ordres cercar o substituir ignorin les diferències entre majúscules i minúscules ** @@ -712,7 +712,7 @@ Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, 6. Per a treure el ressaltat dels resultats, feu: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 6 SUMARI + LLIÇÓ 1.6 SUMARI 1. L'ordre o obre una línia a SOTA la del cursor i mou el cursor a la nova @@ -735,7 +735,7 @@ Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 7: ORDRES D'AJUDA + LLIÇÓ 1.7: ORDRES D'AJUDA ** Utilitzeu el sistema intern d'ajuda ** @@ -758,7 +758,7 @@ Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LLIÇÓ 8: CREAR UN SCRIPT D'INICI + LLIÇÓ 1.8: CREAR UN SCRIPT D'INICI ** Activeu funcions automàticament ** @@ -767,8 +767,8 @@ Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, fitxer "vimrc". 1. Comenceu a editar el fitxer "vimrc", depenent del sistema - :edit ~/.vimrc per Unix - :edit ~/_vimrc per MS-Windows + :edit ~/.vimrc per Unix + :edit ~/_vimrc per MS-Windows 2. Llegiu el fitxer "vimrc" d'exemple: diff --git a/runtime/tutor/tutor.cs b/runtime/tutor/tutor1.cs similarity index 93% rename from runtime/tutor/tutor.cs rename to runtime/tutor/tutor1.cs index 6d62bb5838..981001cdf3 100644 --- a/runtime/tutor/tutor.cs +++ b/runtime/tutor/tutor1.cs @@ -18,10 +18,10 @@ nauèení. Pokud si jen ète¹ text, pøíkazy zapomene¹! Nyní se pøesvìdète, ¾e Caps-Lock NENÍ stlaèený a nìkolikrát stisknìte - klávesu j aby se kurzor posunul natolik, ¾e lekce 1.1 zaplní celou + klávesu j aby se kurzor posunul natolik, ¾e lekce 1.1.1 zaplní celou obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.1: POHYB KURZORU + Lekce 1.1.1: POHYB KURZORU ** Pro pohyb kurzoru pou¾ívej klávesy h,j,k,l jak je znázornìno ní¾e. ** @@ -35,7 +35,7 @@ 2. Dr¾ klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje. ---> Teï ví¹ jak se pøesunout na následující lekci. - 3. Pou¾itím klávesy dolu pøejdi na lekci 1.2. + 3. Pou¾itím klávesy dolu pøejdi na lekci 1.1.2. Poznámka: Pokud si nìkdy nejsi jist nìèím, co jsi napsal, stlaè pro pøechod do Normálního módu. Poté pøepi¹ po¾adovaný pøíkaz. @@ -44,7 +44,7 @@ jakmile si na nìj zvykne¹. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.2: SPU©TÌNÍ A UKONÈENÍ VIM + Lekce 1.1.2: SPU©TÌNÍ A UKONÈENÍ VIM !! POZNÁMKA: Pøed vykonáním tìchto krokù si pøeèti celou lekci!! @@ -64,10 +64,10 @@ ---> 'vim' znamená spu¹tìní editoru, 'tutor' je soubor k editaci. 4. Pokud si tyto kroky spolehlivì pamatuje¹, vykonej kroky 1 a¾ 3, èím¾ - ukonèí¹ a znovu spustí¹ editor. Potom pøesuò kurzor dolu na lekci 1.3. + ukonèí¹ a znovu spustí¹ editor. Potom pøesuò kurzor dolu na lekci 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.3: ÚPRAVA TEXTU - MAZÁNÍ + Lekce 1.1.3: ÚPRAVA TEXTU - MAZÁNÍ ** Stisknutím klávesy x v Normálním módu sma¾e¹ znak na místì kurzoru. ** @@ -82,7 +82,7 @@ ---> Krááva skoèèilla pøess mìssíc. - 5. Pokud je vìta správnì, pøejdi na lekci 1.4. + 5. Pokud je vìta správnì, pøejdi na lekci 1.1.4. POZNÁMKA: Nesna¾ se pouze zapamatovat pøedvádìné pøíkazy, uè se je pou¾íváním. @@ -90,7 +90,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ + Lekce 1.1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ ** Stlaèení klávesy i v Normálním módu umo¾òuje vkládání textu. ** @@ -113,7 +113,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 1 + SHRNUTÍ LEKCE 1.1 1. Kurzorem se pohybuje pomocí ¹ipek nebo klávesami hjkl. @@ -136,7 +136,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.1: PØÍKAZY MAZÁNÍ + Lekce 1.2.1: PØÍKAZY MAZÁNÍ ** Pøíkaz dw sma¾e znaky do konce slova. ** @@ -154,12 +154,12 @@ ---> Jsou tu nìjaká slova zábava, která nepatøí list do této vìty. - 5. Opakuj kroky 3 a¾ 4 dokud není vìta správnì a pøejdi na lekci 2.2. + 5. Opakuj kroky 3 a¾ 4 dokud není vìta správnì a pøejdi na lekci 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.2: VÍCE PØÍKAZÙ MAZÁNÍ + Lekce 1.2.2: VÍCE PØÍKAZÙ MAZÁNÍ ** Napsání pøíkazu d$ sma¾e v¹e a¾ do konce øádky. ** @@ -175,14 +175,14 @@ ---> Nìkdo napsal konec této vìty dvakrát. konec této vìty dvakrát. - 5. Pøejdi na lekci 2.3 pro pochopení toho, co se stalo. + 5. Pøejdi na lekci 1.2.3 pro pochopení toho, co se stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.3: ROZ©IØOVACÍ PØÍKAZY A OBJEKTY + Lekce 1.2.3: ROZ©IØOVACÍ PØÍKAZY A OBJEKTY Formát mazacího pøíkazu d je následující: @@ -205,7 +205,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.4: VÝJIMKA Z 'PØÍKAZ-OBJEKT' + Lekce 1.2.4: VÝJIMKA Z 'PØÍKAZ-OBJEKT' ** Napsáním dd sma¾e¹ celý øádek. ** @@ -228,7 +228,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.5: PØÍKAZ UNDO + Lekce 1.2.5: PØÍKAZ UNDO ** Stlaè u pro vrácení posledního pøíkazu, U pro celou øádku. ** @@ -244,14 +244,14 @@ ---> Opprav chybby nna toomto øádku a nahraï je pommocí undo. - 8. Toto jsou velmi u¾iteèné pøíkazy. Nyní pøejdi na souhrn Lekce 2. + 8. Toto jsou velmi u¾iteèné pøíkazy. Nyní pøejdi na souhrn Lekce 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 2 + SHRNUTÍ LEKCE 1.2 1. Pro smazání znakù od kurzoru do konce slova napi¹: dw @@ -274,7 +274,7 @@ Pro vrácení vrácených úprav (redo) napi¹: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.1: PØÍKAZ VLO®IT + Lekce 1.3.1: PØÍKAZ VLO®IT ** Pøíka p vlo¾í poslední vymazaný text za kurzor. ** @@ -297,7 +297,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.2: PØÍKAZ NAHRAZENÍ + Lekce 1.3.2: PØÍKAZ NAHRAZENÍ ** Napsáním r a znaku se nahradí znak pod kurzorem. ** @@ -313,14 +313,14 @@ ---> Kdi¾ byl pzán tento øádeg, nìkdu stla¾il ¹paqné klávesy! ---> Kdy¾ byl psán tento øádek, nìkdo stlaèíl ¹patné klávesy! - 5. Nyní pøejdi na Lekci 3.2. + 5. Nyní pøejdi na Lekci 1.3.2. POZNÁMKA: Zapamatuj si, ¾e by ses mìl uèit pou¾íváním, ne zapamatováním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.3: PØÍKAZ ÚPRAVY + Lekce 1.3.3: PØÍKAZ ÚPRAVY ** Pokud chce¹ zmìnit èást nebo celé slovo, napi¹ cw . ** @@ -343,7 +343,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.4: VÍCE ZMÌN POU®ITÍM c + Lekce 1.3.4: VÍCE ZMÌN POU®ITÍM c ** Pøíkaz pro úpravu se dru¾í se stejnými objekty jako ten pro mazání. ** @@ -366,7 +366,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 3 + SHRNUTÍ LEKCE 1.3 1. Pro vlo¾ení textu, který byl smazán, napi¹ p . To vlo¾í smazaný text @@ -389,7 +389,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.1: POZICE A STATUS SOUBORU + Lekce 1.4.1: POZICE A STATUS SOUBORU ** Stlaè CTRL-g pro zobrazení své pozice v souboru a statusu souboru. @@ -412,7 +412,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.2: PØÍKAZ VYHLEDÁVÁNÍ + Lekce 1.4.2: PØÍKAZ VYHLEDÁVÁNÍ ** Napi¹ / následované øetìzcem pro vyhledání onoho øetìzce. ** @@ -435,7 +435,7 @@ zaèátku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY + Lekce 1.4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY ** Napi¹ % pro nalezení párové ),], nebo } . ** @@ -458,7 +458,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.4: ZPÙSOB JAK ZMÌNIT CHYBY + Lekce 1.4.4: ZPÙSOB JAK ZMÌNIT CHYBY ** Napi¹ :s/staré/nové/g pro nahrazení slova 'nové' za 'staré'. ** @@ -481,7 +481,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 4 + SHRNUTÍ LEKCE 1.4 1. Ctrl-g vypí¹e tvou pozici v souboru a status souboru. @@ -504,7 +504,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.1: JAK VYKONAT VNÌJ©Í PØÍKAZ + Lekce 1.5.1: JAK VYKONAT VNÌJ©Í PØÍKAZ ** Napi¹ :! následované vnìj¹ím pøíkazem pro spu¹tìní pøíkazu. ** @@ -527,7 +527,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.2: VÍCE O UKLÁDÁNÍ SOUBORÙ + Lekce 1.5.2: VÍCE O UKLÁDÁNÍ SOUBORÙ ** Pro ulo¾ení zmìn v souboru napi¹ :w SOUBOR. ** @@ -550,7 +550,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.3: VÝBÌROVÝ PØÍKAZ ULO®ENÍ + Lekce 1.5.3: VÝBÌROVÝ PØÍKAZ ULO®ENÍ ** Pro ulo¾ení èásti souboru napi¹ :#,# w SOUBOR ** @@ -573,7 +573,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.4: SLUÈOVÁNÍ SOUBORÙ + Lekce 1.5.4: SLUÈOVÁNÍ SOUBORÙ ** K vlo¾ení obsahu souboru napi¹ :r NÁZEV_SOUBORU ** @@ -582,7 +582,7 @@ 2. Pøesuò kurzor na vrch této stránky. -POZNÁMKA: Po vykonání kroku 3 uvidí¹ lekci 5.3. Potom se opìt pøesuò dolù +POZNÁMKA: Po vykonání kroku 3 uvidí¹ lekci 1.5.3. Potom se opìt pøesuò dolù na tuto lekci. 3. Nyní vlo¾ soubor TEST pou¾itím pøíkazu :r TEST kde TEST je název @@ -591,12 +591,12 @@ na tuto lekci. POZNÁMKA: Soubor, který vkládá¹ se vlo¾í od místa, kde se nachází kurzor. 4. Pro potvrzení vlo¾ení souboru, pøesuò kurzor zpìt a v¹imni si, ¾e teï - má¹ dvì kopie lekce 5.3, originál a souborovou verzi. + má¹ dvì kopie lekce 1.5.3, originál a souborovou verzi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 5 + SHRNUTÍ LEKCE 1.5 1. :!pøíkaz vykoná vnìj¹í pøíkaz. @@ -619,7 +619,7 @@ za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.1: PØÍKAZ OTEVØÍT + Lekce 1.6.1: PØÍKAZ OTEVØÍT ** Napi¹ o pro vlo¾ení øádku pod kurzor a pøepnutí do Vkládacího módu. ** @@ -642,7 +642,7 @@ za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.2: PØÍKAZ PØIDAT + Lekce 1.6.2: PØÍKAZ PØIDAT ** Stiskni a pro vlo¾ení textu ZA kurzor. ** @@ -665,7 +665,7 @@ za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.3: JINÝ ZPÙSOB NAHRAZOVÁNÍ + Lekce 1.6.3: JINÝ ZPÙSOB NAHRAZOVÁNÍ ** Napi¹ velké R pro nahrazení víc ne¾ jednoho znaku. ** @@ -688,7 +688,7 @@ za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.4: NASTAVENÍ MO®NOSTÍ + Lekce 1.6.4: NASTAVENÍ MO®NOSTÍ ** Nastav mo¾nost, ¾e vyhledávání anebo nahrazování nedbá velikosti písmen ** @@ -711,7 +711,7 @@ za pozici kurzoru. 6. Pro vypnutí zvýrazòování výsledkù napi¹: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRHNUTÍ LEKCE 6 + SHRHNUTÍ LEKCE 1.6 1. Stisknutí o otevøe nový øádek POD kurzorem a umístí kurzor na vlo¾ený @@ -734,7 +734,7 @@ za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCE 7: PØÍKAZY ON-LINE NÁPOVÌDY + LEKCE 1.7: PØÍKAZY ON-LINE NÁPOVÌDY ** Pou¾ívej on-line systém nápovìdy ** @@ -757,7 +757,7 @@ za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCE 8: VYTVOØENÍ INICIALIZAÈNÍHO SKRIPTU + LEKCE 1.8: VYTVOØENÍ INICIALIZAÈNÍHO SKRIPTU ** Zapni funkce editoru Vim ** diff --git a/runtime/tutor/tutor.cs.cp1250 b/runtime/tutor/tutor1.cs.cp1250 similarity index 93% rename from runtime/tutor/tutor.cs.cp1250 rename to runtime/tutor/tutor1.cs.cp1250 index 26567db91c..a8d701f59e 100644 --- a/runtime/tutor/tutor.cs.cp1250 +++ b/runtime/tutor/tutor1.cs.cp1250 @@ -18,10 +18,10 @@ nauèení. Pokud si jen èteš text, pøíkazy zapomeneš! Nyní se pøesvìdète, že Caps-Lock NENÍ stlaèený a nìkolikrát stisknìte - klávesu j aby se kurzor posunul natolik, že lekce 1.1 zaplní celou + klávesu j aby se kurzor posunul natolik, že lekce 1.1.1 zaplní celou obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.1: POHYB KURZORU + Lekce 1.1.1: POHYB KURZORU ** Pro pohyb kurzoru používej klávesy h,j,k,l jak je znázornìno níže. ** @@ -35,7 +35,7 @@ 2. Drž klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje. ---> Teï víš jak se pøesunout na následující lekci. - 3. Použitím klávesy dolu pøejdi na lekci 1.2. + 3. Použitím klávesy dolu pøejdi na lekci 1.1.2. Poznámka: Pokud si nìkdy nejsi jist nìèím, co jsi napsal, stlaè pro pøechod do Normálního módu. Poté pøepiš požadovaný pøíkaz. @@ -44,7 +44,7 @@ Pozn jakmile si na nìj zvykneš. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.2: SPUŠTÌNÍ A UKONÈENÍ VIM + Lekce 1.1.2: SPUŠTÌNÍ A UKONÈENÍ VIM !! POZNÁMKA: Pøed vykonáním tìchto krokù si pøeèti celou lekci!! @@ -64,10 +64,10 @@ Pozn ---> 'vim' znamená spuštìní editoru, 'tutor' je soubor k editaci. 4. Pokud si tyto kroky spolehlivì pamatuješ, vykonej kroky 1 až 3, èímž - ukonèíš a znovu spustíš editor. Potom pøesuò kurzor dolu na lekci 1.3. + ukonèíš a znovu spustíš editor. Potom pøesuò kurzor dolu na lekci 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.3: ÚPRAVA TEXTU - MAZÁNÍ + Lekce 1.1.3: ÚPRAVA TEXTU - MAZÁNÍ ** Stisknutím klávesy x v Normálním módu smažeš znak na místì kurzoru. ** @@ -82,7 +82,7 @@ Pozn ---> Krááva skoèèilla pøess mìssíc. - 5. Pokud je vìta správnì, pøejdi na lekci 1.4. + 5. Pokud je vìta správnì, pøejdi na lekci 1.1.4. POZNÁMKA: Nesnaž se pouze zapamatovat pøedvádìné pøíkazy, uè se je používáním. @@ -90,7 +90,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ + Lekce 1.1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ ** Stlaèení klávesy i v Normálním módu umožòuje vkládání textu. ** @@ -113,7 +113,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 1 + SHRNUTÍ LEKCE 1.1 1. Kurzorem se pohybuje pomocí šipek nebo klávesami hjkl. @@ -136,7 +136,7 @@ Nyn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.1: PØÍKAZY MAZÁNÍ + Lekce 1.2.1: PØÍKAZY MAZÁNÍ ** Pøíkaz dw smaže znaky do konce slova. ** @@ -154,12 +154,12 @@ POZN ---> Jsou tu nìjaká slova zábava, která nepatøí list do této vìty. - 5. Opakuj kroky 3 až 4 dokud není vìta správnì a pøejdi na lekci 2.2. + 5. Opakuj kroky 3 až 4 dokud není vìta správnì a pøejdi na lekci 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.2: VÍCE PØÍKAZÙ MAZÁNÍ + Lekce 1.2.2: VÍCE PØÍKAZÙ MAZÁNÍ ** Napsání pøíkazu d$ smaže vše až do konce øádky. ** @@ -175,14 +175,14 @@ POZN ---> Nìkdo napsal konec této vìty dvakrát. konec této vìty dvakrát. - 5. Pøejdi na lekci 2.3 pro pochopení toho, co se stalo. + 5. Pøejdi na lekci 1.2.3 pro pochopení toho, co se stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.3: ROZŠIØOVACÍ PØÍKAZY A OBJEKTY + Lekce 1.2.3: ROZŠIØOVACÍ PØÍKAZY A OBJEKTY Formát mazacího pøíkazu d je následující: @@ -205,7 +205,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.4: VÝJIMKA Z 'PØÍKAZ-OBJEKT' + Lekce 1.2.4: VÝJIMKA Z 'PØÍKAZ-OBJEKT' ** Napsáním dd smažeš celý øádek. ** @@ -228,7 +228,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.5: PØÍKAZ UNDO + Lekce 1.2.5: PØÍKAZ UNDO ** Stlaè u pro vrácení posledního pøíkazu, U pro celou øádku. ** @@ -244,14 +244,14 @@ POZN ---> Opprav chybby nna toomto øádku a nahraï je pommocí undo. - 8. Toto jsou velmi užiteèné pøíkazy. Nyní pøejdi na souhrn Lekce 2. + 8. Toto jsou velmi užiteèné pøíkazy. Nyní pøejdi na souhrn Lekce 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 2 + SHRNUTÍ LEKCE 1.2 1. Pro smazání znakù od kurzoru do konce slova napiš: dw @@ -274,7 +274,7 @@ POZN Pro vrácení vrácených úprav (redo) napiš: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.1: PØÍKAZ VLOŽIT + Lekce 1.3.1: PØÍKAZ VLOŽIT ** Pøíka p vloží poslední vymazaný text za kurzor. ** @@ -297,7 +297,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.2: PØÍKAZ NAHRAZENÍ + Lekce 1.3.2: PØÍKAZ NAHRAZENÍ ** Napsáním r a znaku se nahradí znak pod kurzorem. ** @@ -313,14 +313,14 @@ POZN ---> Kdiž byl pzán tento øádeg, nìkdu stlažil špaqné klávesy! ---> Když byl psán tento øádek, nìkdo stlaèíl špatné klávesy! - 5. Nyní pøejdi na Lekci 3.2. + 5. Nyní pøejdi na Lekci 1.3.2. POZNÁMKA: Zapamatuj si, že by ses mìl uèit používáním, ne zapamatováním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.3: PØÍKAZ ÚPRAVY + Lekce 1.3.3: PØÍKAZ ÚPRAVY ** Pokud chceš zmìnit èást nebo celé slovo, napiš cw . ** @@ -343,7 +343,7 @@ V ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.4: VÍCE ZMÌN POUŽITÍM c + Lekce 1.3.4: VÍCE ZMÌN POUŽITÍM c ** Pøíkaz pro úpravu se druží se stejnými objekty jako ten pro mazání. ** @@ -366,7 +366,7 @@ V ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 3 + SHRNUTÍ LEKCE 1.3 1. Pro vložení textu, který byl smazán, napiš p . To vloží smazaný text @@ -389,7 +389,7 @@ Nyn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.1: POZICE A STATUS SOUBORU + Lekce 1.4.1: POZICE A STATUS SOUBORU ** Stlaè CTRL-g pro zobrazení své pozice v souboru a statusu souboru. @@ -412,7 +412,7 @@ Nyn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.2: PØÍKAZ VYHLEDÁVÁNÍ + Lekce 1.4.2: PØÍKAZ VYHLEDÁVÁNÍ ** Napiš / následované øetìzcem pro vyhledání onoho øetìzce. ** @@ -435,7 +435,7 @@ Pozn zaèátku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY + Lekce 1.4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY ** Napiš % pro nalezení párové ),], nebo } . ** @@ -458,7 +458,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.4: ZPÙSOB JAK ZMÌNIT CHYBY + Lekce 1.4.4: ZPÙSOB JAK ZMÌNIT CHYBY ** Napiš :s/staré/nové/g pro nahrazení slova 'nové' za 'staré'. ** @@ -481,7 +481,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 4 + SHRNUTÍ LEKCE 1.4 1. Ctrl-g vypíše tvou pozici v souboru a status souboru. @@ -504,7 +504,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.1: JAK VYKONAT VNÌJŠÍ PØÍKAZ + Lekce 1.5.1: JAK VYKONAT VNÌJŠÍ PØÍKAZ ** Napiš :! následované vnìjším pøíkazem pro spuštìní pøíkazu. ** @@ -527,7 +527,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.2: VÍCE O UKLÁDÁNÍ SOUBORÙ + Lekce 1.5.2: VÍCE O UKLÁDÁNÍ SOUBORÙ ** Pro uložení zmìn v souboru napiš :w SOUBOR. ** @@ -550,7 +550,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.3: VÝBÌROVÝ PØÍKAZ ULOŽENÍ + Lekce 1.5.3: VÝBÌROVÝ PØÍKAZ ULOŽENÍ ** Pro uložení èásti souboru napiš :#,# w SOUBOR ** @@ -573,7 +573,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.4: SLUÈOVÁNÍ SOUBORÙ + Lekce 1.5.4: SLUÈOVÁNÍ SOUBORÙ ** K vložení obsahu souboru napiš :r NÁZEV_SOUBORU ** @@ -582,7 +582,7 @@ Pozn 2. Pøesuò kurzor na vrch této stránky. -POZNÁMKA: Po vykonání kroku 3 uvidíš lekci 5.3. Potom se opìt pøesuò dolù +POZNÁMKA: Po vykonání kroku 3 uvidíš lekci 1.5.3. Potom se opìt pøesuò dolù na tuto lekci. 3. Nyní vlož soubor TEST použitím pøíkazu :r TEST kde TEST je název @@ -591,12 +591,12 @@ POZN POZNÁMKA: Soubor, který vkládáš se vloží od místa, kde se nachází kurzor. 4. Pro potvrzení vložení souboru, pøesuò kurzor zpìt a všimni si, že teï - máš dvì kopie lekce 5.3, originál a souborovou verzi. + máš dvì kopie lekce 1.5.3, originál a souborovou verzi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTÍ LEKCE 5 + SHRNUTÍ LEKCE 1.5 1. :!pøíkaz vykoná vnìjší pøíkaz. @@ -619,7 +619,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.1: PØÍKAZ OTEVØÍT + Lekce 1.6.1: PØÍKAZ OTEVØÍT ** Napiš o pro vložení øádku pod kurzor a pøepnutí do Vkládacího módu. ** @@ -642,7 +642,7 @@ Vlo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.2: PØÍKAZ PØIDAT + Lekce 1.6.2: PØÍKAZ PØIDAT ** Stiskni a pro vložení textu ZA kurzor. ** @@ -665,7 +665,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.3: JINÝ ZPÙSOB NAHRAZOVÁNÍ + Lekce 1.6.3: JINÝ ZPÙSOB NAHRAZOVÁNÍ ** Napiš velké R pro nahrazení víc než jednoho znaku. ** @@ -688,7 +688,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.4: NASTAVENÍ MOŽNOSTÍ + Lekce 1.6.4: NASTAVENÍ MOŽNOSTÍ ** Nastav možnost, že vyhledávání anebo nahrazování nedbá velikosti písmen ** @@ -711,7 +711,7 @@ Pozn 6. Pro vypnutí zvýrazòování výsledkù napiš: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRHNUTÍ LEKCE 6 + SHRHNUTÍ LEKCE 1.6 1. Stisknutí o otevøe nový øádek POD kurzorem a umístí kurzor na vložený @@ -734,7 +734,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCE 7: PØÍKAZY ON-LINE NÁPOVÌDY + LEKCE 1.7: PØÍKAZY ON-LINE NÁPOVÌDY ** Používej on-line systém nápovìdy ** @@ -757,7 +757,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCE 8: VYTVOØENÍ INICIALIZAÈNÍHO SKRIPTU + LEKCE 1.8: VYTVOØENÍ INICIALIZAÈNÍHO SKRIPTU ** Zapni funkce editoru Vim ** diff --git a/runtime/tutor/tutor.cs.utf-8 b/runtime/tutor/tutor1.cs.utf-8 similarity index 93% rename from runtime/tutor/tutor.cs.utf-8 rename to runtime/tutor/tutor1.cs.utf-8 index 36bb3a2d0f..882c6e635b 100644 --- a/runtime/tutor/tutor.cs.utf-8 +++ b/runtime/tutor/tutor1.cs.utf-8 @@ -18,10 +18,10 @@ nauÄení. Pokud si jen ÄteÅ¡ text, příkazy zapomeneÅ¡! Nyní se pÅ™esvÄ›dÄte, že Caps-Lock NENà stlaÄený a nÄ›kolikrát stisknÄ›te - klávesu j aby se kurzor posunul natolik, že lekce 1.1 zaplní celou + klávesu j aby se kurzor posunul natolik, že lekce 1.1.1 zaplní celou obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.1: POHYB KURZORU + Lekce 1.1.1: POHYB KURZORU ** Pro pohyb kurzoru používej klávesy h,j,k,l jak je znázornÄ›no níže. ** @@ -35,7 +35,7 @@ 2. Drž klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje. ---> TeÄ víš jak se pÅ™esunout na následující lekci. - 3. Použitím klávesy dolu pÅ™ejdi na lekci 1.2. + 3. Použitím klávesy dolu pÅ™ejdi na lekci 1.1.2. Poznámka: Pokud si nÄ›kdy nejsi jist nÄ›Äím, co jsi napsal, stlaÄ pro pÅ™echod do Normálního módu. Poté pÅ™epiÅ¡ požadovaný příkaz. @@ -44,7 +44,7 @@ Poznámka: Kurzorové klávesy také fungují, avÅ¡ak používání hjkl je rych jakmile si na nÄ›j zvykneÅ¡. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.2: SPUÅ TÄšNà A UKONÄŒENà VIM + Lekce 1.1.2: SPUÅ TÄšNà A UKONÄŒENà VIM !! POZNÃMKA: PÅ™ed vykonáním tÄ›chto kroků si pÅ™eÄti celou lekci!! @@ -64,10 +64,10 @@ Poznámka: Kurzorové klávesy také fungují, avÅ¡ak používání hjkl je rych ---> 'vim' znamená spuÅ¡tÄ›ní editoru, 'tutor' je soubor k editaci. 4. Pokud si tyto kroky spolehlivÄ› pamatujeÅ¡, vykonej kroky 1 až 3, Äímž - ukonÄíš a znovu spustíš editor. Potom pÅ™esuň kurzor dolu na lekci 1.3. + ukonÄíš a znovu spustíš editor. Potom pÅ™esuň kurzor dolu na lekci 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.3: ÚPRAVA TEXTU - MAZÃNà + Lekce 1.1.3: ÚPRAVA TEXTU - MAZÃNà ** Stisknutím klávesy x v Normálním módu smažeÅ¡ znak na místÄ› kurzoru. ** @@ -82,7 +82,7 @@ Poznámka: Kurzorové klávesy také fungují, avÅ¡ak používání hjkl je rych ---> Krááva skoÄÄilla pÅ™ess mÄ›ssíc. - 5. Pokud je vÄ›ta správnÄ›, pÅ™ejdi na lekci 1.4. + 5. Pokud je vÄ›ta správnÄ›, pÅ™ejdi na lekci 1.1.4. POZNÃMKA: Nesnaž se pouze zapamatovat pÅ™edvádÄ›né příkazy, uÄ se je používáním. @@ -90,7 +90,7 @@ POZNÃMKA: Nesnaž se pouze zapamatovat pÅ™edvádÄ›né příkazy, uÄ se je pou ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 1.4: ÚPRAVA TEXTU - VKLÃDÃNà + Lekce 1.1.4: ÚPRAVA TEXTU - VKLÃDÃNà ** StlaÄení klávesy i v Normálním módu umožňuje vkládání textu. ** @@ -113,7 +113,7 @@ POZNÃMKA: Nesnaž se pouze zapamatovat pÅ™edvádÄ›né příkazy, uÄ se je pou ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTà LEKCE 1 + SHRNUTà LEKCE 1.1 1. Kurzorem se pohybuje pomocí Å¡ipek nebo klávesami hjkl. @@ -136,7 +136,7 @@ Nyní pokraÄuj Lekcí 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.1: PŘÃKAZY MAZÃNà + Lekce 1.2.1: PŘÃKAZY MAZÃNà ** Příkaz dw smaže znaky do konce slova. ** @@ -154,12 +154,12 @@ POZNÃMKA: Písmena dw se zobrazí na posledním řádku obrazovky jakmile je ---> Jsou tu nÄ›jaká slova zábava, která nepatří list do této vÄ›ty. - 5. Opakuj kroky 3 až 4 dokud není vÄ›ta správnÄ› a pÅ™ejdi na lekci 2.2. + 5. Opakuj kroky 3 až 4 dokud není vÄ›ta správnÄ› a pÅ™ejdi na lekci 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.2: VÃCE PŘÃKAZÅ® MAZÃNà + Lekce 1.2.2: VÃCE PŘÃKAZÅ® MAZÃNà ** Napsání příkazu d$ smaže vÅ¡e až do konce řádky. ** @@ -175,14 +175,14 @@ POZNÃMKA: Písmena dw se zobrazí na posledním řádku obrazovky jakmile je ---> NÄ›kdo napsal konec této vÄ›ty dvakrát. konec této vÄ›ty dvakrát. - 5. PÅ™ejdi na lekci 2.3 pro pochopení toho, co se stalo. + 5. PÅ™ejdi na lekci 1.2.3 pro pochopení toho, co se stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.3: ROZÅ IŘOVACà PŘÃKAZY A OBJEKTY + Lekce 1.2.3: ROZÅ IŘOVACà PŘÃKAZY A OBJEKTY Formát mazacího příkazu d je následující: @@ -205,7 +205,7 @@ POZNÃMKA: StlaÄením klávesy objektu v Normálním módu se kurzor pÅ™esune ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.4: VÃJIMKA Z 'PŘÃKAZ-OBJEKT' + Lekce 1.2.4: VÃJIMKA Z 'PŘÃKAZ-OBJEKT' ** Napsáním dd smažeÅ¡ celý řádek. ** @@ -228,7 +228,7 @@ POZNÃMKA: StlaÄením klávesy objektu v Normálním módu se kurzor pÅ™esune ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 2.5: PŘÃKAZ UNDO + Lekce 1.2.5: PŘÃKAZ UNDO ** StlaÄ u pro vrácení posledního příkazu, U pro celou řádku. ** @@ -244,14 +244,14 @@ POZNÃMKA: StlaÄením klávesy objektu v Normálním módu se kurzor pÅ™esune ---> Opprav chybby nna toomto řádku a nahraÄ je pommocí undo. - 8. Toto jsou velmi užiteÄné příkazy. Nyní pÅ™ejdi na souhrn Lekce 2. + 8. Toto jsou velmi užiteÄné příkazy. Nyní pÅ™ejdi na souhrn Lekce 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTà LEKCE 2 + SHRNUTà LEKCE 1.2 1. Pro smazání znaků od kurzoru do konce slova napiÅ¡: dw @@ -274,7 +274,7 @@ POZNÃMKA: StlaÄením klávesy objektu v Normálním módu se kurzor pÅ™esune Pro vrácení vrácených úprav (redo) napiÅ¡: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.1: PŘÃKAZ VLOŽIT + Lekce 1.3.1: PŘÃKAZ VLOŽIT ** Příka p vloží poslední vymazaný text za kurzor. ** @@ -297,7 +297,7 @@ POZNÃMKA: StlaÄením klávesy objektu v Normálním módu se kurzor pÅ™esune ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.2: PŘÃKAZ NAHRAZENà + Lekce 1.3.2: PŘÃKAZ NAHRAZENà ** Napsáním r a znaku se nahradí znak pod kurzorem. ** @@ -313,14 +313,14 @@ POZNÃMKA: StlaÄením klávesy objektu v Normálním módu se kurzor pÅ™esune ---> Kdiž byl pzán tento řádeg, nÄ›kdu stlažil Å¡paqné klávesy! ---> Když byl psán tento řádek, nÄ›kdo stlaÄíl Å¡patné klávesy! - 5. Nyní pÅ™ejdi na Lekci 3.2. + 5. Nyní pÅ™ejdi na Lekci 1.3.2. POZNÃMKA: Zapamatuj si, že by ses mÄ›l uÄit používáním, ne zapamatováním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.3: PŘÃKAZ ÚPRAVY + Lekce 1.3.3: PŘÃKAZ ÚPRAVY ** Pokud chceÅ¡ zmÄ›nit Äást nebo celé slovo, napiÅ¡ cw . ** @@ -343,7 +343,7 @@ VÅ¡imni si, že cw nejen nahrazuje slovo, ale také pÅ™emístí do vkládání ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 3.4: VÃCE ZMÄšN POUŽITÃM c + Lekce 1.3.4: VÃCE ZMÄšN POUŽITÃM c ** Příkaz pro úpravu se druží se stejnými objekty jako ten pro mazání. ** @@ -366,7 +366,7 @@ VÅ¡imni si, že cw nejen nahrazuje slovo, ale také pÅ™emístí do vkládání ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTà LEKCE 3 + SHRNUTà LEKCE 1.3 1. Pro vložení textu, který byl smazán, napiÅ¡ p . To vloží smazaný text @@ -389,7 +389,7 @@ Nyní pÅ™ejdi na následující lekci. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.1: POZICE A STATUS SOUBORU + Lekce 1.4.1: POZICE A STATUS SOUBORU ** StlaÄ CTRL-g pro zobrazení své pozice v souboru a statusu souboru. @@ -412,7 +412,7 @@ Nyní pÅ™ejdi na následující lekci. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.2: PŘÃKAZ VYHLEDÃVÃNà + Lekce 1.4.2: PŘÃKAZ VYHLEDÃVÃNà ** NapiÅ¡ / následované Å™etÄ›zcem pro vyhledání onoho Å™etÄ›zce. ** @@ -435,7 +435,7 @@ Poznámka: Když vyhledávání dosáhne konce souboru, bude pokraÄovat na jeho zaÄátku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.3: VYHLEDÃVÃNà PÃROVÉ ZÃVORKY + Lekce 1.4.3: VYHLEDÃVÃNà PÃROVÉ ZÃVORKY ** NapiÅ¡ % pro nalezení párové ),], nebo } . ** @@ -458,7 +458,7 @@ Poznámka: Toto je velmi užiteÄné pří ladÄ›ní programu s chybÄ›jícími ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 4.4: ZPÅ®SOB JAK ZMÄšNIT CHYBY + Lekce 1.4.4: ZPÅ®SOB JAK ZMÄšNIT CHYBY ** NapiÅ¡ :s/staré/nové/g pro nahrazení slova 'nové' za 'staré'. ** @@ -481,7 +481,7 @@ Poznámka: Toto je velmi užiteÄné pří ladÄ›ní programu s chybÄ›jícími ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTà LEKCE 4 + SHRNUTà LEKCE 1.4 1. Ctrl-g vypíše tvou pozici v souboru a status souboru. @@ -504,7 +504,7 @@ Poznámka: Toto je velmi užiteÄné pří ladÄ›ní programu s chybÄ›jícími ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.1: JAK VYKONAT VNÄšJÅ Ã PŘÃKAZ + Lekce 1.5.1: JAK VYKONAT VNÄšJÅ Ã PŘÃKAZ ** NapiÅ¡ :! následované vnÄ›jším příkazem pro spuÅ¡tÄ›ní příkazu. ** @@ -527,7 +527,7 @@ Poznámka: VÅ¡echny příkazy : musí být dokonÄené stisknutím ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.2: VÃCE O UKLÃDÃNà SOUBORÅ® + Lekce 1.5.2: VÃCE O UKLÃDÃNà SOUBORÅ® ** Pro uložení zmÄ›n v souboru napiÅ¡ :w SOUBOR. ** @@ -550,7 +550,7 @@ Poznámka: Jakmile ukonÄíš Vim a znovu ho spustíš s názvem souboru TEST, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.3: VÃBÄšROVà PŘÃKAZ ULOŽENà + Lekce 1.5.3: VÃBÄšROVà PŘÃKAZ ULOŽENà ** Pro uložení Äásti souboru napiÅ¡ :#,# w SOUBOR ** @@ -573,7 +573,7 @@ Poznámka: Jakmile ukonÄíš Vim a znovu ho spustíš s názvem souboru TEST, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 5.4: SLUÄŒOVÃNà SOUBORÅ® + Lekce 1.5.4: SLUÄŒOVÃNà SOUBORÅ® ** K vložení obsahu souboru napiÅ¡ :r NÃZEV_SOUBORU ** @@ -582,7 +582,7 @@ Poznámka: Jakmile ukonÄíš Vim a znovu ho spustíš s názvem souboru TEST, 2. PÅ™esuň kurzor na vrch této stránky. -POZNÃMKA: Po vykonání kroku 3 uvidíš lekci 5.3. Potom se opÄ›t pÅ™esuň dolů +POZNÃMKA: Po vykonání kroku 3 uvidíš lekci 1.5.3. Potom se opÄ›t pÅ™esuň dolů na tuto lekci. 3. Nyní vlož soubor TEST použitím příkazu :r TEST kde TEST je název @@ -591,12 +591,12 @@ POZNÃMKA: Po vykonání kroku 3 uvidíš lekci 5.3. Potom se opÄ›t pÅ™esuň dol POZNÃMKA: Soubor, který vkládáš se vloží od místa, kde se nachází kurzor. 4. Pro potvrzení vložení souboru, pÅ™esuň kurzor zpÄ›t a vÅ¡imni si, že teÄ - máš dvÄ› kopie lekce 5.3, originál a souborovou verzi. + máš dvÄ› kopie lekce 1.5.3, originál a souborovou verzi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRNUTà LEKCE 5 + SHRNUTà LEKCE 1.5 1. :!příkaz vykoná vnÄ›jší příkaz. @@ -619,7 +619,7 @@ POZNÃMKA: Soubor, který vkládáš se vloží od místa, kde se nachází kurz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.1: PŘÃKAZ OTEVŘÃT + Lekce 1.6.1: PŘÃKAZ OTEVŘÃT ** NapiÅ¡ o pro vložení řádku pod kurzor a pÅ™epnutí do Vkládacího módu. ** @@ -642,7 +642,7 @@ Vlož řádek nad tímto napsáním Shift-O po umístÄ›ní kurzoru na tento řá ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.2: PŘÃKAZ PŘIDAT + Lekce 1.6.2: PŘÃKAZ PŘIDAT ** Stiskni a pro vložení textu ZA kurzor. ** @@ -665,7 +665,7 @@ Poznámka: Tímto se vyhneÅ¡ stisknutí i , posledního znaku, textu na vlože ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.3: JINà ZPÅ®SOB NAHRAZOVÃNà + Lekce 1.6.3: JINà ZPÅ®SOB NAHRAZOVÃNà ** NapiÅ¡ velké R pro nahrazení víc než jednoho znaku. ** @@ -688,7 +688,7 @@ Poznámka: Tímto se vyhneÅ¡ stisknutí i , posledního znaku, textu na vlože ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekce 6.4: NASTAVENà MOŽNOSTà + Lekce 1.6.4: NASTAVENà MOŽNOSTà ** Nastav možnost, že vyhledávání anebo nahrazování nedbá velikosti písmen ** @@ -711,7 +711,7 @@ Poznámka: Tímto se vyhneÅ¡ stisknutí i , posledního znaku, textu na vlože 6. Pro vypnutí zvýrazňování výsledků napiÅ¡: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SHRHNUTà LEKCE 6 + SHRHNUTà LEKCE 1.6 1. Stisknutí o otevÅ™e nový řádek POD kurzorem a umístí kurzor na vložený @@ -734,7 +734,7 @@ Poznámka: Tímto se vyhneÅ¡ stisknutí i , posledního znaku, textu na vlože ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCE 7: PŘÃKAZY ON-LINE NÃPOVÄšDY + LEKCE 1.7: PŘÃKAZY ON-LINE NÃPOVÄšDY ** Používej on-line systém nápovÄ›dy ** @@ -757,7 +757,7 @@ Poznámka: Tímto se vyhneÅ¡ stisknutí i , posledního znaku, textu na vlože ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCE 8: VYTVOŘENà INICIALIZAÄŒNÃHO SKRIPTU + LEKCE 1.8: VYTVOŘENà INICIALIZAÄŒNÃHO SKRIPTU ** Zapni funkce editoru Vim ** diff --git a/runtime/tutor/tutor.da b/runtime/tutor/tutor1.da similarity index 95% rename from runtime/tutor/tutor.da rename to runtime/tutor/tutor1.da index ba62fce53c..2d3b28db35 100644 --- a/runtime/tutor/tutor.da +++ b/runtime/tutor/tutor1.da @@ -11,7 +11,7 @@ afhængig af hvor meget tid der bruges på at eksperimentere. VÆR OPMÆRKSOM PÅ AT: - Kommandoerne i lektionerne ændre teksten. Opret en kopi af filen + Kommandoerne i lektionerne ændrer teksten. Opret en kopi af filen til at øve på (hvis du startede "vimtutor", så er det allerede en kopi). Det er vigtigt at huske på at vejledningen er sat op til at lære ved at @@ -22,7 +22,7 @@ på j-tasten nok gange til at flytte markøren så lektion 1.1 fylder hele skærmen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: FLYT MARKØREN + Lektion 1.1.1: FLYT MARKØREN ** Tryk på h-,j-,k-,l-tasterne som vist, for at flytte markøren. ** @@ -45,7 +45,7 @@ BEM meget hurtigere, når du har vænnet dig til det. Seriøst! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: AFSLUT VIM + Lektion 1.1.2: AFSLUT VIM !! BEMÆRK: Læs hele lektionen, inden trinnene nedenfor udføres!! @@ -68,7 +68,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEKSTREDIGERING - SLET + Lektion 1.1.3: TEKSTREDIGERING - SLET ** Tryk på x for at slette tegnet som markøren er ovenpå. ** @@ -91,7 +91,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEKSTREDIGERING - INDSÆT + Lektion 1.1.4: TEKSTREDIGERING - INDSÆT ** Tryk på i for at indsætte tekst. ** @@ -114,7 +114,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.5: TEKSTREDIGERING - VEDHÆFT + Lektion 1.1.5: TEKSTREDIGERING - VEDHÆFT ** Tryk på A for at vedhæfte tekst. ** @@ -137,13 +137,13 @@ BEM 5. Når du er fortrolig med at vedhæfte tekst, så flyt til lektion 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.6: REDIGER EN FIL + Lektion 1.1.6: REDIGER EN FIL ** Brug :wq til at gemme en fil og afslutte. ** !! BEMÆRK: Læs hele lektionen, inden trinnene nedenfor udføres!! - 1. Afslut vejledningen som du gjorde i lektion 1.2: :q! + 1. Afslut vejledningen som du gjorde i lektion 1.1.2: :q! Eller gør følgende i en anden terminal, hvis du har adgang til en. 2. Skriv denne kommando i skalprompten: vim tutor @@ -183,7 +183,7 @@ BEM Fortsæt nu med lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: SLETTEKOMMANDOER + Lektion 1.2.1: SLETTEKOMMANDOER ** Skriv dw for at slette et ord. ** @@ -206,7 +206,7 @@ Forts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: FLERE SLETTEKOMMANDOER + Lektion 1.2.2: FLERE SLETTEKOMMANDOER ** Skriv d$ for at slette til slutningen af linjen. ** @@ -229,7 +229,7 @@ Forts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.3: OM OPERATORER OG BEVÆGELSER + Lektion 1.2.3: OM OPERATORER OG BEVÆGELSER Mange kommandoer som ændre tekst skabes fra en operator og en bevægelse. @@ -252,7 +252,7 @@ BEM så flyttes markøren som angivet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: BRUG TÆLLER TIL EN BEVÆGELSE + Lektion 1.2.4: BRUG TÆLLER TIL EN BEVÆGELSE ** Når der skrives et nummer inden en bevægelse, så gentages den det antal gange. ** @@ -275,7 +275,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: BRUG TÆLLER TIL AT SLETTE FLERE + Lektion 1.2.5: BRUG TÆLLER TIL AT SLETTE FLERE ** Når der skrives et nummer med en operator, så gentages den det antal gange. ** @@ -298,7 +298,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.6: ARBEJD PÅ LINJER + Lektion 1.2.6: ARBEJD PÅ LINJER ** Skriv dd for at slette en hel linje. ** @@ -321,7 +321,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.7: FORTRYD-KOMMANDOEN + Lektion 1.2.7: FORTRYD-KOMMANDOEN ** Tryk på u for at fortryde de sidste kommandoer, U for at rette en hel linje. ** @@ -367,7 +367,7 @@ BEM Fortryd fortrydelserne, ved at skrive: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: PUT-INDSÆTTE-KOMMANDOEN + Lektion 1.3.1: PUT-INDSÆTTE-KOMMANDOEN ** Skriv p for at put-indsætte tidligere slettede tekst efter markøren. ** @@ -390,7 +390,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.2: ERSTAT-KOMMANDOEN + Lektion 1.3.2: ERSTAT-KOMMANDOEN ** Skriv rx for at erstatte tegnet ved markøren med x . ** @@ -413,7 +413,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÆNDRINGSOPERATOREN + Lektion 1.3.3: ÆNDRINGSOPERATOREN ** Ændr indtil slutningen af et ord, ved at skrive ce . ** @@ -436,7 +436,7 @@ Bem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: FLERE ÆNDRINGER MED c + Lektion 1.3.4: FLERE ÆNDRINGER MED c ** ÆNDRINGSOPERATOREN bruges med de samme bevægelser som slet. ** @@ -482,7 +482,7 @@ G ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: MARKØRPLACERING OG FILSTATUS + Lektion 1.4.1: MARKØRPLACERING OG FILSTATUS ** Skriv CTRL-G for at vise din placering i filen og filstatussen. Skriv G for at flytte til en linje i filen. ** @@ -505,7 +505,7 @@ BEM 4. Hvis du føler dig klar til at gøre det, så udføre trin 1 til 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: SØG-KOMMANDOEN + Lektion 1.4.2: SØG-KOMMANDOEN ** Skriv / efterfulgt af en frase for at søge efter frasen. ** @@ -528,7 +528,7 @@ BEM begyndelsen, men mindre 'wrapscan'-valgmuligheden er blevet slået fra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: SØG EFTER MODSVARENDE PARENTESER + Lektion 1.4.3: SØG EFTER MODSVARENDE PARENTESER ** Skriv % for at finde en modsvarende ),], eller } . ** @@ -551,7 +551,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: UDSKIFT-KOMMANDOEN + Lektion 1.4.4: UDSKIFT-KOMMANDOEN ** Skriv :s/gammel/ny/g for at udskifte 'gammel' med 'ny'. ** @@ -597,7 +597,7 @@ BEM Spørg om bekræftelse hver gang, ved at tilføje 'c' :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: UDFØR EN EKSTERN KOMMANDO + Lektion 1.5.1: UDFØR EN EKSTERN KOMMANDO ** Skriv :! efterfulgt af en ekstern kommando, for at udføre kommandoen. ** @@ -620,7 +620,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MERE OM AT SKRIVE FILER + Lektion 1.5.2: MERE OM AT SKRIVE FILER ** Gem ændringerne som er foretaget til teksten, ved at skrive :w FILNAVN. ** @@ -643,7 +643,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: MARKÉR TEKST SOM SKAL SKRIVES + Lektion 1.5.3: MARKÉR TEKST SOM SKAL SKRIVES ** Gem en del af en fil, ved at skrive v bevægelse :w FILNAVN ** @@ -666,7 +666,7 @@ BEM operator til at gøre noget med teksten. F.eks. vil d slette teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: INDHENT OG SAMMENLÆG FILER + Lektion 1.5.4: INDHENT OG SAMMENLÆG FILER ** Indsæt indholdet af en fil, ved at skrive :r FILNAVN ** @@ -712,7 +712,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ÅBN-KOMMANDOEN + Lektion 1.6.1: ÅBN-KOMMANDOEN ** Skriv o for at åbne en linje under markøren og stille dig i indsæt-tilstand. ** @@ -735,7 +735,7 @@ BEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: VEDHÆFT-KOMMANDOEN + Lektion 1.6.2: VEDHÆFT-KOMMANDOEN ** Skriv a for at indsætte tekst EFTER markøren. ** @@ -758,7 +758,7 @@ BEM den eneste forskel er hvor tegnene indsættes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: AN ANDEN MÅDE AT ERSTATTE + Lektion 1.6.3: AN ANDEN MÅDE AT ERSTATTE ** Skriv et stort R for at erstatte flere end ét tegn. ** @@ -781,7 +781,7 @@ BEM tegn sletter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: KOPÍER OG INDSÆT TEKST + Lektion 1.6.4: KOPÍER OG INDSÆT TEKST ** Brug y-operatoren til at kopiere tekst og p til at indsætte den ** @@ -804,7 +804,7 @@ BEM BEMÆRK: du kan også bruge y som en operator; yw yank-udtrækker et ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: SÆT VALGMULIGHED + Lektion 1.6.5: SÆT VALGMULIGHED ** Sæt en valgmulighed så en søgning eller udskiftning ignorerer forskelle på store/små bogstaver ** @@ -850,7 +850,7 @@ BEM 7. Vedhæft "no" i begyndelsen, for at slå en valgmulighed fra: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.1: FÅ HJÆLP + Lektion 1.7.1: FÅ HJÆLP ** Brug online-hjælpesystemet ** @@ -873,7 +873,7 @@ BEM :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.2: OPRET ET OPSTARTS-SCRIPT + Lektion 1.7.2: OPRET ET OPSTARTS-SCRIPT ** Aktivér Vim-funktionaliteter ** @@ -896,7 +896,7 @@ BEM Få mere information, ved at skrive :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.3: FULDFØRELSE + Lektion 1.7.3: FULDFØRELSE ** Kommandolinjefuldførelse med CTRL-D og ** diff --git a/runtime/tutor/tutor.da.utf-8 b/runtime/tutor/tutor1.da.utf-8 similarity index 95% rename from runtime/tutor/tutor.da.utf-8 rename to runtime/tutor/tutor1.da.utf-8 index dad3ea8a7e..c7b1ef7c12 100644 --- a/runtime/tutor/tutor.da.utf-8 +++ b/runtime/tutor/tutor1.da.utf-8 @@ -22,7 +22,7 @@ pÃ¥ j-tasten nok gange til at flytte markøren sÃ¥ lektion 1.1 fylder hele skærmen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: FLYT MARKØREN + Lektion 1.1.1: FLYT MARKØREN ** Tryk pÃ¥ h-,j-,k-,l-tasterne som vist, for at flytte markøren. ** @@ -45,7 +45,7 @@ BEMÆRK: Piletasterne bør ogsÃ¥ virke. Men med hjkl kan du flytte rundt meget hurtigere, nÃ¥r du har vænnet dig til det. Seriøst! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: AFSLUT VIM + Lektion 1.1.2: AFSLUT VIM !! BEMÆRK: Læs hele lektionen, inden trinnene nedenfor udføres!! @@ -68,7 +68,7 @@ BEMÆRK: :q! forkaster ændringer som du har foretaget. Om fÃ¥ lektione ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEKSTREDIGERING - SLET + Lektion 1.1.3: TEKSTREDIGERING - SLET ** Tryk pÃ¥ x for at slette tegnet som markøren er ovenpÃ¥. ** @@ -91,7 +91,7 @@ BEMÆRK: EfterhÃ¥nden som du gennemgÃ¥r vejledningen, sÃ¥ lær det ikke udenad, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEKSTREDIGERING - INDSÆT + Lektion 1.1.4: TEKSTREDIGERING - INDSÆT ** Tryk pÃ¥ i for at indsætte tekst. ** @@ -114,7 +114,7 @@ BEMÆRK: EfterhÃ¥nden som du gennemgÃ¥r vejledningen, sÃ¥ lær det ikke udenad, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.5: TEKSTREDIGERING - VEDHÆFT + Lektion 1.1.5: TEKSTREDIGERING - VEDHÆFT ** Tryk pÃ¥ A for at vedhæfte tekst. ** @@ -137,13 +137,13 @@ BEMÆRK: EfterhÃ¥nden som du gennemgÃ¥r vejledningen, sÃ¥ lær det ikke udenad, 5. NÃ¥r du er fortrolig med at vedhæfte tekst, sÃ¥ flyt til lektion 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.6: REDIGER EN FIL + Lektion 1.1.6: REDIGER EN FIL ** Brug :wq til at gemme en fil og afslutte. ** !! BEMÆRK: Læs hele lektionen, inden trinnene nedenfor udføres!! - 1. Afslut vejledningen som du gjorde i lektion 1.2: :q! + 1. Afslut vejledningen som du gjorde i lektion 1.1.2: :q! Eller gør følgende i en anden terminal, hvis du har adgang til en. 2. Skriv denne kommando i skalprompten: vim tutor @@ -183,7 +183,7 @@ BEMÆRK: NÃ¥r der trykkes pÃ¥ , sÃ¥ stilles du i normal tilstand eller ogs Fortsæt nu med lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: SLETTEKOMMANDOER + Lektion 1.2.1: SLETTEKOMMANDOER ** Skriv dw for at slette et ord. ** @@ -206,7 +206,7 @@ Fortsæt nu med lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: FLERE SLETTEKOMMANDOER + Lektion 1.2.2: FLERE SLETTEKOMMANDOER ** Skriv d$ for at slette til slutningen af linjen. ** @@ -229,7 +229,7 @@ Fortsæt nu med lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.3: OM OPERATORER OG BEVÆGELSER + Lektion 1.2.3: OM OPERATORER OG BEVÆGELSER Mange kommandoer som ændre tekst skabes fra en operator og en bevægelse. @@ -252,7 +252,7 @@ BEMÆRK: NÃ¥r kun bevægelsen trykkes i normal tilstand, uden en operator, sÃ¥ flyttes markøren som angivet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: BRUG TÆLLER TIL EN BEVÆGELSE + Lektion 1.2.4: BRUG TÆLLER TIL EN BEVÆGELSE ** NÃ¥r der skrives et nummer inden en bevægelse, sÃ¥ gentages den det antal gange. ** @@ -275,7 +275,7 @@ BEMÆRK: NÃ¥r kun bevægelsen trykkes i normal tilstand, uden en operator, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: BRUG TÆLLER TIL AT SLETTE FLERE + Lektion 1.2.5: BRUG TÆLLER TIL AT SLETTE FLERE ** NÃ¥r der skrives et nummer med en operator, sÃ¥ gentages den det antal gange. ** @@ -298,7 +298,7 @@ BEMÆRK: NÃ¥r kun bevægelsen trykkes i normal tilstand, uden en operator, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.6: ARBEJD PÃ… LINJER + Lektion 1.2.6: ARBEJD PÃ… LINJER ** Skriv dd for at slette en hel linje. ** @@ -321,7 +321,7 @@ BEMÆRK: NÃ¥r kun bevægelsen trykkes i normal tilstand, uden en operator, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.7: FORTRYD-KOMMANDOEN + Lektion 1.2.7: FORTRYD-KOMMANDOEN ** Tryk pÃ¥ u for at fortryde de sidste kommandoer, U for at rette en hel linje. ** @@ -367,7 +367,7 @@ BEMÆRK: NÃ¥r kun bevægelsen trykkes i normal tilstand, uden en operator, Fortryd fortrydelserne, ved at skrive: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: PUT-INDSÆTTE-KOMMANDOEN + Lektion 1.3.1: PUT-INDSÆTTE-KOMMANDOEN ** Skriv p for at put-indsætte tidligere slettede tekst efter markøren. ** @@ -390,7 +390,7 @@ BEMÆRK: NÃ¥r kun bevægelsen trykkes i normal tilstand, uden en operator, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.2: ERSTAT-KOMMANDOEN + Lektion 1.3.2: ERSTAT-KOMMANDOEN ** Skriv rx for at erstatte tegnet ved markøren med x . ** @@ -413,7 +413,7 @@ BEMÆRK: Husk pÃ¥ at du skal lære ved at gøre det, ikke ved at lære det udena ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÆNDRINGSOPERATOREN + Lektion 1.3.3: ÆNDRINGSOPERATOREN ** Ændr indtil slutningen af et ord, ved at skrive ce . ** @@ -436,7 +436,7 @@ Bemærk at ce sletter ordet og stiller dig i indsæt-tilstand. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: FLERE ÆNDRINGER MED c + Lektion 1.3.4: FLERE ÆNDRINGER MED c ** ÆNDRINGSOPERATOREN bruges med de samme bevægelser som slet. ** @@ -482,7 +482,7 @@ GÃ¥ nu videre til den næste lektion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: MARKØRPLACERING OG FILSTATUS + Lektion 1.4.1: MARKØRPLACERING OG FILSTATUS ** Skriv CTRL-G for at vise din placering i filen og filstatussen. Skriv G for at flytte til en linje i filen. ** @@ -505,7 +505,7 @@ BEMÆRK: Du ser muligvis markørplaceringen nederst i højre hjørne af skærmen 4. Hvis du føler dig klar til at gøre det, sÃ¥ udføre trin 1 til 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: SØG-KOMMANDOEN + Lektion 1.4.2: SØG-KOMMANDOEN ** Skriv / efterfulgt af en frase for at søge efter frasen. ** @@ -528,7 +528,7 @@ BEMÆRK: NÃ¥r søgningen nÃ¥r slutningen af filen, sÃ¥ fortsætter den ved begyndelsen, men mindre 'wrapscan'-valgmuligheden er blevet slÃ¥et fra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: SØG EFTER MODSVARENDE PARENTESER + Lektion 1.4.3: SØG EFTER MODSVARENDE PARENTESER ** Skriv % for at finde en modsvarende ),], eller } . ** @@ -551,7 +551,7 @@ BEMÆRK: Det er meget nyttigt ved fejlretning af et program som mangler ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: UDSKIFT-KOMMANDOEN + Lektion 1.4.4: UDSKIFT-KOMMANDOEN ** Skriv :s/gammel/ny/g for at udskifte 'gammel' med 'ny'. ** @@ -597,7 +597,7 @@ BEMÆRK: Det er meget nyttigt ved fejlretning af et program som mangler Spørg om bekræftelse hver gang, ved at tilføje 'c' :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: UDFØR EN EKSTERN KOMMANDO + Lektion 1.5.1: UDFØR EN EKSTERN KOMMANDO ** Skriv :! efterfulgt af en ekstern kommando, for at udføre kommandoen. ** @@ -620,7 +620,7 @@ BEMÆRK: Alle :-kommandoer skal afsluttes ved at trykke pÃ¥ . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MERE OM AT SKRIVE FILER + Lektion 1.5.2: MERE OM AT SKRIVE FILER ** Gem ændringerne som er foretaget til teksten, ved at skrive :w FILNAVN. ** @@ -643,7 +643,7 @@ BEMÆRK: Hvis du afslutter Vim og starter den igen med vim TEST , sÃ¥ vil ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: MARKÉR TEKST SOM SKAL SKRIVES + Lektion 1.5.3: MARKÉR TEKST SOM SKAL SKRIVES ** Gem en del af en fil, ved at skrive v bevægelse :w FILNAVN ** @@ -666,7 +666,7 @@ BEMÆRK: NÃ¥r der trykkes pÃ¥ v startes visuel markering. Du kan flytte markø operator til at gøre noget med teksten. F.eks. vil d slette teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: INDHENT OG SAMMENLÆG FILER + Lektion 1.5.4: INDHENT OG SAMMENLÆG FILER ** Indsæt indholdet af en fil, ved at skrive :r FILNAVN ** @@ -712,7 +712,7 @@ BEMÆRK: Du kan ogsÃ¥ læse outputtet fra en ekstern kommando. F.eks. læser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: Ã…BN-KOMMANDOEN + Lektion 1.6.1: Ã…BN-KOMMANDOEN ** Skriv o for at Ã¥bne en linje under markøren og stille dig i indsæt-tilstand. ** @@ -735,7 +735,7 @@ BEMÆRK: Du kan ogsÃ¥ læse outputtet fra en ekstern kommando. F.eks. læser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: VEDHÆFT-KOMMANDOEN + Lektion 1.6.2: VEDHÆFT-KOMMANDOEN ** Skriv a for at indsætte tekst EFTER markøren. ** @@ -758,7 +758,7 @@ BEMÆRK: a, i og A gÃ¥r alle til den samme indsæt-tilstand, den eneste forskel er hvor tegnene indsættes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: AN ANDEN MÃ…DE AT ERSTATTE + Lektion 1.6.3: AN ANDEN MÃ…DE AT ERSTATTE ** Skriv et stort R for at erstatte flere end ét tegn. ** @@ -781,7 +781,7 @@ BEMÆRK: Erstat-tilstand er ligesom indsæt-tilstand, men hvert indtastede tegn sletter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: KOPÃER OG INDSÆT TEKST + Lektion 1.6.4: KOPÃER OG INDSÆT TEKST ** Brug y-operatoren til at kopiere tekst og p til at indsætte den ** @@ -804,7 +804,7 @@ BEMÆRK: Erstat-tilstand er ligesom indsæt-tilstand, men hvert indtastede BEMÆRK: du kan ogsÃ¥ bruge y som en operator; yw yank-udtrækker et ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: SÆT VALGMULIGHED + Lektion 1.6.5: SÆT VALGMULIGHED ** Sæt en valgmulighed sÃ¥ en søgning eller udskiftning ignorerer forskelle pÃ¥ store/smÃ¥ bogstaver ** @@ -850,7 +850,7 @@ BEMÆRK: Hvis du vil ignorere case for en enkelt søg-kommando, sÃ¥ brug \c 7. Vedhæft "no" i begyndelsen, for at slÃ¥ en valgmulighed fra: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.1: FÃ… HJÆLP + Lektion 1.7.1: FÃ… HJÆLP ** Brug online-hjælpesystemet ** @@ -873,7 +873,7 @@ BEMÆRK: Hvis du vil ignorere case for en enkelt søg-kommando, sÃ¥ brug \c :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.2: OPRET ET OPSTARTS-SCRIPT + Lektion 1.7.2: OPRET ET OPSTARTS-SCRIPT ** Aktivér Vim-funktionaliteter ** @@ -896,7 +896,7 @@ BEMÆRK: Hvis du vil ignorere case for en enkelt søg-kommando, sÃ¥ brug \c FÃ¥ mere information, ved at skrive :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.3: FULDFØRELSE + Lektion 1.7.3: FULDFØRELSE ** Kommandolinjefuldførelse med CTRL-D og ** diff --git a/runtime/tutor/tutor.de b/runtime/tutor/tutor1.de similarity index 93% rename from runtime/tutor/tutor.de rename to runtime/tutor/tutor1.de index 599fdc7b64..f7cee3e8f7 100644 --- a/runtime/tutor/tutor.de +++ b/runtime/tutor/tutor1.de @@ -20,9 +20,9 @@ Jetzt stelle sicher, dass deine Umstelltaste NICHT gedrückt ist und betätige die j Taste genügend Mal, um den Cursor nach unten zu bewegen, so dass - Lektion 1.1 den Bildschirm vollkommen ausfüllt. + Lektion 1.1.1 den Bildschirm vollkommen ausfüllt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: BEWEGEN DES CURSORS + Lektion 1.1.1: BEWEGEN DES CURSORS ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** ^ Hilfestellung: @@ -35,7 +35,7 @@ 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. - 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. + 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.1.2 zu bewegen. Anmerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, drücke , um Dich in den Normalmodus zu begeben. @@ -45,7 +45,7 @@ Anmerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: VIM BEENDEN + Lektion 1.1.2: VIM BEENDEN !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies @@ -66,9 +66,9 @@ Anmerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du Anmerkung: :q! verwirft alle Änderungen, die Du gemacht hast. Einige Lektionen später lernst Du, die Änderungen in einer Datei zu speichern. - 5. Bewege den Cursor abwärts zu Lektion 1.3. + 5. Bewege den Cursor abwärts zu Lektion 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEXT EDITIEREN - LÖSCHEN + Lektion 1.1.3: TEXT EDITIEREN - LÖSCHEN ** Drücke x , um das Zeichen unter dem Cursor zu löschen. ** @@ -84,14 +84,14 @@ Anmerkung: :q! verwirft alle ---> Die Kkuh sprangg übberr deen Moond. - 5. Nun, da die Zeile korrekt ist, gehe weiter zur Lektion 1.4. + 5. Nun, da die Zeile korrekt ist, gehe weiter zur Lektion 1.1.4. Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu lernen, lerne vielmehr durch Anwenden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEXT EDITIEREN - EINFÜGEN + Lektion 1.1.4: TEXT EDITIEREN - EINFÜGEN ** Drücke i , um Text einzufügen. ** @@ -110,11 +110,11 @@ Anmerkung: W ---> In dieser ft etwas . ---> In dieser Zeile fehlt etwas Text. - 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. + 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.5: TEXT EDITIEREN - ANFÜGEN + Lektion 1.1.5: TEXT EDITIEREN - ANFÜGEN ** Drücke A , um Text anzufügen. ** @@ -135,16 +135,16 @@ Anmerkung: W ---> Auch hier steh Auch hier steht etwas Unvollständiges. - 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. + 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.6: EINE DATEI EDITIEREN + Lektion 1.1.6: EINE DATEI EDITIEREN ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies diese gesamte Lektion!! - 1. Verlasse den Editor so wie in Lektion 1.2: :q! + 1. Verlasse den Editor so wie in Lektion 1.1.2: :q! Oder, falls du Zugriff zu einem anderen Terminal hast, führe das Folgende dort aus. @@ -162,7 +162,7 @@ Anmerkung: W 6. Nachdem Du obige Schritte gelesen und verstanden hast: führe sie durch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 1 + ZUSAMMENFASSUNG VON LEKTION 1.1 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. @@ -182,9 +182,9 @@ Anmerkung: W Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein ungewolltes, erst teilweise eingegebenes Kommando ab. - Nun fahre mit Lektion 2 fort. + Nun fahre mit Lektion 1.2 fort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: LÖSCHKOMMANDOS + Lektion 1.2.1: LÖSCHKOMMANDOS ** Tippe dw , um ein Wort zu löschen. ** @@ -205,9 +205,9 @@ Anmerkung: Dr ---> Einige Wörter lustig gehören nicht Papier in diesen Satz. 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe - zur Lektion 2.2. + zur Lektion 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: WEITERE LÖSCHKOMMANDOS + Lektion 1.2.2: WEITERE LÖSCHKOMMANDOS ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** @@ -223,14 +223,14 @@ Anmerkung: Dr ---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. - 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei vorgeht. + 5. Gehe weiter zur Lektion 1.2.3 , um zu verstehen, was hierbei vorgeht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE + Lektion 1.2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer @@ -253,7 +253,7 @@ Anmerkung: Dr Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den Cursor entsprechend. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT + Lektion 1.2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** @@ -270,13 +270,13 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> Dies ist nur eine Zeile aus Wörtern, um sich darin herumzubewegen. - 6. Gehe weiter zu Lektion 2.5. + 6. Gehe weiter zu Lektion 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE + Lektion 1.2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** @@ -298,7 +298,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.6: ARBEITEN AUF ZEILEN + Lektion 1.2.6: ARBEITEN AUF ZEILEN ** Tippe dd , um eine ganze Zeile zu löschen. ** @@ -321,7 +321,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> 7) So wie Du auch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) + Lektion 1.2.7: RÜCKGÄNGIG MACHEN (UNDO) ** Tippe u , um die letzten Kommandos rückgängig zu machen ** @@ -342,9 +342,9 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. 8. Dies sind sehr nützliche Kommandos. Nun gehe weiter zur Zusammenfassung - von Lektion 2. + von Lektion 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 2 + ZUSAMMENFASSUNG VON LEKTION 1.2 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw @@ -367,7 +367,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: ANFÜGEN (PUT) + Lektion 1.3.1: ANFÜGEN (PUT) ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** @@ -390,7 +390,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> c) Intelligenz ist lernbar, ---> a) Rosen sind rot, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.2: ERSETZEN (REPLACE) + Lektion 1.3.2: ERSETZEN (REPLACE) ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** @@ -406,14 +406,14 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> Alf diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! ---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! - 5. Nun fahre fort mit Lektion 3.2. + 5. Nun fahre fort mit Lektion 1.3.2. Anmerkung: Erinnere Dich daran, dass Du durch Anwenden lernen solltest, nicht durch Auswendiglernen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÄNDERN (CHANGE) + Lektion 1.3.3: ÄNDERN (CHANGE) ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** @@ -436,7 +436,7 @@ Beachte, dass ce das Wort l ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c + Lektion 1.3.4: MEHR ÄNDERUNGEN MITTELS c ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** @@ -459,7 +459,7 @@ Beachte, dass ce das Wort l Anmerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 3 + ZUSAMMENFASSUNG VON LEKTION 1.3 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den @@ -482,7 +482,7 @@ Anmerkung: Du kannst die R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: CURSORPOSITION UND DATEISTATUS + Lektion 1.4.1: CURSORPOSITION UND DATEISTATUS ** Tippe CTRL-G , um deine Dateiposition sowie den Dateistatus anzuzeigen. ** ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** @@ -506,7 +506,7 @@ Anmerkung: M 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: DAS SUCHEN - KOMMANDO + Lektion 1.4.2: DAS SUCHEN - KOMMANDO ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** @@ -529,7 +529,7 @@ Anmerkung: M Anmerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: PASSENDE KLAMMERN FINDEN + Lektion 1.4.3: PASSENDE KLAMMERN FINDEN ** Tippe % , um eine gegenüberliegenden Klammer ),], oder } zu finden. ** @@ -552,7 +552,7 @@ Anmerkung: Diese Funktionalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) + Lektion 1.4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** @@ -575,7 +575,7 @@ Anmerkung: Diese Funktionalit Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden mit einem Fragedialog, ob ersetzt werden soll oder nicht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 4 + ZUSAMMENFASSUNG VON LEKTION 1.4 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. G bringt Dich zum Ende der Datei. @@ -598,7 +598,7 @@ Anmerkung: Diese Funktionalit Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g Für eine jedesmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS + Lektion 1.5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** @@ -621,7 +621,7 @@ Anmerkung: Alle : Kommandos m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN + Lektion 1.5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN ** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** @@ -644,7 +644,7 @@ Anmerkung: W 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST oder (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN + Lektion 1.5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN ** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** @@ -668,22 +668,22 @@ Hinweis: Dr löscht d den Text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN + Lektion 1.5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** 1. Platziere den Cursor direkt über dieser Zeile. -BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 - sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 wiederzusehen. +BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 1.5.3 + sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 1.5.4 wiederzusehen. 2. Nun lies deine Datei TEST ein indem Du das Kommando :r TEST ausführst, wobei TEST der von Dir verwendete Dateiname ist. Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und - beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und + beachte, dass es jetzt zwei Kopien von Lektion 1.5.3 gibt, das Original und die eingefügte Dateiversion. Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum @@ -691,7 +691,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum sie unterhalb des Cursors. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 5 + ZUSAMMENFASSUNG VON LEKTION 1.5 1. :!Kommando führt ein externes Kommando aus. @@ -714,7 +714,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ZEILEN ÖFFNEN (OPEN) + Lektion 1.6.1: ZEILEN ÖFFNEN (OPEN) ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** @@ -737,7 +737,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: TEXT ANFÜGEN (APPEND) + Lektion 1.6.2: TEXT ANFÜGEN (APPEND) ** Tippe a , um Text NACH dem Cursor einzufügen. ** @@ -760,7 +760,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum Anmerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der einzige Unterschied ist, wo die Zeichen eingefügt werden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) + Lektion 1.6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** @@ -783,7 +783,7 @@ Anmerkung: Der Ersetzungsmodus ist wie der Einf Zeichen löscht ein vorhandenes Zeichen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN + Lektion 1.6.4: TEXT KOPIEREN UND EINFÜGEN ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** @@ -806,7 +806,7 @@ Anmerkung: Der Ersetzungsmodus ist wie der Einf Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: OPTIONEN SETZEN + Lektion 1.6.5: OPTIONEN SETZEN ** Setze eine Option so, dass eine Suche oder Ersetzung Groß- ** ** und Kleinschreibung ignoriert ** @@ -829,7 +829,7 @@ Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c im Suchausdruck: /ignoriere\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 6 + ZUSAMMENFASSUNG VON LEKTION 1.6 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus zu starten @@ -852,7 +852,7 @@ Anmerkung: Um die Schreibweise f 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.1 : AUFRUFEN VON HILFE + Lektion 1.7.1: AUFRUFEN VON HILFE ** Nutze das eingebaute Hilfesystem ** @@ -875,7 +875,7 @@ Anmerkung: Um die Schreibweise f :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.2: ERSTELLE EIN START-SKRIPT + Lektion 1.7.2: ERSTELLE EIN START-SKRIPT ** Aktiviere die Features von Vim ** @@ -898,7 +898,7 @@ Anmerkung: Um die Schreibweise f Du kannst all deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. Für mehr Informationen tippe :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.3: VERVOLLSTÄNDIGEN + Lektion 1.7.3: VERVOLLSTÄNDIGEN ** Kommandozeilenvervollständigung mit CTRL-D und ** @@ -921,7 +921,7 @@ Anmerkung: Um die Schreibweise f Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere einfach CTRL-D und . Dies ist insbesondere nützlich für :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 7 + ZUSAMMENFASSUNG VON LEKTION 1.7 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. diff --git a/runtime/tutor/tutor.de.utf-8 b/runtime/tutor/tutor1.de.utf-8 similarity index 93% rename from runtime/tutor/tutor.de.utf-8 rename to runtime/tutor/tutor1.de.utf-8 index 9a5b592d9f..f2157d9cd6 100644 --- a/runtime/tutor/tutor.de.utf-8 +++ b/runtime/tutor/tutor1.de.utf-8 @@ -20,9 +20,9 @@ Jetzt stelle sicher, dass deine Umstelltaste NICHT gedrückt ist und betätige die j Taste genügend Mal, um den Cursor nach unten zu bewegen, so dass - Lektion 1.1 den Bildschirm vollkommen ausfüllt. + Lektion 1.1.1 den Bildschirm vollkommen ausfüllt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: BEWEGEN DES CURSORS + Lektion 1.1.1: BEWEGEN DES CURSORS ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** ^ Hilfestellung: @@ -35,7 +35,7 @@ 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. - 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. + 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.1.2 zu bewegen. Anmerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, drücke , um Dich in den Normalmodus zu begeben. @@ -45,7 +45,7 @@ Anmerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: VIM BEENDEN + Lektion 1.1.2: VIM BEENDEN !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies @@ -66,9 +66,9 @@ Anmerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du Anmerkung: :q! verwirft alle Änderungen, die Du gemacht hast. Einige Lektionen später lernst Du, die Änderungen in einer Datei zu speichern. - 5. Bewege den Cursor abwärts zu Lektion 1.3. + 5. Bewege den Cursor abwärts zu Lektion 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEXT EDITIEREN - LÖSCHEN + Lektion 1.1.3: TEXT EDITIEREN - LÖSCHEN ** Drücke x , um das Zeichen unter dem Cursor zu löschen. ** @@ -84,14 +84,14 @@ Anmerkung: :q! verwirft alle Änderungen, die Du gemacht hast. Einige ---> Die Kkuh sprangg übberr deen Moond. - 5. Nun, da die Zeile korrekt ist, gehe weiter zur Lektion 1.4. + 5. Nun, da die Zeile korrekt ist, gehe weiter zur Lektion 1.1.4. Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu lernen, lerne vielmehr durch Anwenden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEXT EDITIEREN - EINFÃœGEN + Lektion 1.1.4: TEXT EDITIEREN - EINFÃœGEN ** Drücke i , um Text einzufügen. ** @@ -110,11 +110,11 @@ Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu ---> In dieser ft etwas . ---> In dieser Zeile fehlt etwas Text. - 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. + 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.5: TEXT EDITIEREN - ANFÃœGEN + Lektion 1.1.5: TEXT EDITIEREN - ANFÃœGEN ** Drücke A , um Text anzufügen. ** @@ -135,16 +135,16 @@ Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu ---> Auch hier steh Auch hier steht etwas Unvollständiges. - 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. + 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.6: EINE DATEI EDITIEREN + Lektion 1.1.6: EINE DATEI EDITIEREN ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies diese gesamte Lektion!! - 1. Verlasse den Editor so wie in Lektion 1.2: :q! + 1. Verlasse den Editor so wie in Lektion 1.1.2: :q! Oder, falls du Zugriff zu einem anderen Terminal hast, führe das Folgende dort aus. @@ -162,7 +162,7 @@ Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu 6. Nachdem Du obige Schritte gelesen und verstanden hast: führe sie durch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 1 + ZUSAMMENFASSUNG VON LEKTION 1.1 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. @@ -182,9 +182,9 @@ Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein ungewolltes, erst teilweise eingegebenes Kommando ab. - Nun fahre mit Lektion 2 fort. + Nun fahre mit Lektion 1.2 fort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: LÖSCHKOMMANDOS + Lektion 1.2.1: LÖSCHKOMMANDOS ** Tippe dw , um ein Wort zu löschen. ** @@ -205,9 +205,9 @@ Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein ---> Einige Wörter lustig gehören nicht Papier in diesen Satz. 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe - zur Lektion 2.2. + zur Lektion 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: WEITERE LÖSCHKOMMANDOS + Lektion 1.2.2: WEITERE LÖSCHKOMMANDOS ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** @@ -223,14 +223,14 @@ Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein ---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. - 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei vorgeht. + 5. Gehe weiter zur Lektion 1.2.3 , um zu verstehen, was hierbei vorgeht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.3: ÃœBER OPERATOREN UND BEWEGUNGSZÃœGE + Lektion 1.2.3: ÃœBER OPERATOREN UND BEWEGUNGSZÃœGE Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer @@ -253,7 +253,7 @@ Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den Cursor entsprechend. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÃœR EINEN BEWEGUNGSSCHRITT + Lektion 1.2.4: ANWENDUNG EINES ZÄHLERS FÃœR EINEN BEWEGUNGSSCHRITT ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** @@ -270,13 +270,13 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> Dies ist nur eine Zeile aus Wörtern, um sich darin herumzubewegen. - 6. Gehe weiter zu Lektion 2.5. + 6. Gehe weiter zu Lektion 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÃœR MEHRERE LÖSCHVORGÄNGE + Lektion 1.2.5: ANWENDUNG EINES ZÄHLERS FÃœR MEHRERE LÖSCHVORGÄNGE ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** @@ -298,7 +298,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.6: ARBEITEN AUF ZEILEN + Lektion 1.2.6: ARBEITEN AUF ZEILEN ** Tippe dd , um eine ganze Zeile zu löschen. ** @@ -321,7 +321,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> 7) So wie Du auch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.7: RÃœCKGÄNGIG MACHEN (UNDO) + Lektion 1.2.7: RÃœCKGÄNGIG MACHEN (UNDO) ** Tippe u , um die letzten Kommandos rückgängig zu machen ** @@ -342,9 +342,9 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. 8. Dies sind sehr nützliche Kommandos. Nun gehe weiter zur Zusammenfassung - von Lektion 2. + von Lektion 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 2 + ZUSAMMENFASSUNG VON LEKTION 1.2 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw @@ -367,7 +367,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: ANFÃœGEN (PUT) + Lektion 1.3.1: ANFÃœGEN (PUT) ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** @@ -390,7 +390,7 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> c) Intelligenz ist lernbar, ---> a) Rosen sind rot, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.2: ERSETZEN (REPLACE) + Lektion 1.3.2: ERSETZEN (REPLACE) ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** @@ -406,14 +406,14 @@ Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den ---> Alf diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! ---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! - 5. Nun fahre fort mit Lektion 3.2. + 5. Nun fahre fort mit Lektion 1.3.2. Anmerkung: Erinnere Dich daran, dass Du durch Anwenden lernen solltest, nicht durch Auswendiglernen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÄNDERN (CHANGE) + Lektion 1.3.3: ÄNDERN (CHANGE) ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** @@ -436,7 +436,7 @@ Beachte, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c + Lektion 1.3.4: MEHR ÄNDERUNGEN MITTELS c ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** @@ -459,7 +459,7 @@ Beachte, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. Anmerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 3 + ZUSAMMENFASSUNG VON LEKTION 1.3 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den @@ -482,7 +482,7 @@ Anmerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: CURSORPOSITION UND DATEISTATUS + Lektion 1.4.1: CURSORPOSITION UND DATEISTATUS ** Tippe CTRL-G , um deine Dateiposition sowie den Dateistatus anzuzeigen. ** ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** @@ -506,7 +506,7 @@ Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: DAS SUCHEN - KOMMANDO + Lektion 1.4.2: DAS SUCHEN - KOMMANDO ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** @@ -529,7 +529,7 @@ Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten Anmerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: PASSENDE KLAMMERN FINDEN + Lektion 1.4.3: PASSENDE KLAMMERN FINDEN ** Tippe % , um eine gegenüberliegenden Klammer ),], oder } zu finden. ** @@ -552,7 +552,7 @@ Anmerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) + Lektion 1.4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** @@ -575,7 +575,7 @@ Anmerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden mit einem Fragedialog, ob ersetzt werden soll oder nicht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 4 + ZUSAMMENFASSUNG VON LEKTION 1.4 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. G bringt Dich zum Ende der Datei. @@ -598,7 +598,7 @@ Anmerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g Für eine jedesmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: AUSFÃœHREN EINES EXTERNEN KOMMANDOS + Lektion 1.5.1: AUSFÃœHREN EINES EXTERNEN KOMMANDOS ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** @@ -621,7 +621,7 @@ Anmerkung: Alle : Kommandos müssen durch Eingabe von ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MEHR ÃœBER DAS SCHREIBEN VON DATEIEN + Lektion 1.5.2: MEHR ÃœBER DAS SCHREIBEN VON DATEIEN ** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** @@ -644,7 +644,7 @@ Anmerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST oder (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN + Lektion 1.5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN ** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** @@ -668,22 +668,22 @@ Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor löscht d den Text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: EINLESEN UND ZUSAMMENFÃœHREN VON DATEIEN + Lektion 1.5.4: EINLESEN UND ZUSAMMENFÃœHREN VON DATEIEN ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** 1. Platziere den Cursor direkt über dieser Zeile. -BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 - sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 wiederzusehen. +BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 1.5.3 + sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 1.5.4 wiederzusehen. 2. Nun lies deine Datei TEST ein indem Du das Kommando :r TEST ausführst, wobei TEST der von Dir verwendete Dateiname ist. Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und - beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und + beachte, dass es jetzt zwei Kopien von Lektion 1.5.3 gibt, das Original und die eingefügte Dateiversion. Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum @@ -691,7 +691,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum sie unterhalb des Cursors. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 5 + ZUSAMMENFASSUNG VON LEKTION 1.5 1. :!Kommando führt ein externes Kommando aus. @@ -714,7 +714,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ZEILEN ÖFFNEN (OPEN) + Lektion 1.6.1: ZEILEN ÖFFNEN (OPEN) ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** @@ -737,7 +737,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: TEXT ANFÃœGEN (APPEND) + Lektion 1.6.2: TEXT ANFÃœGEN (APPEND) ** Tippe a , um Text NACH dem Cursor einzufügen. ** @@ -760,7 +760,7 @@ Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum Anmerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der einzige Unterschied ist, wo die Zeichen eingefügt werden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) + Lektion 1.6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** @@ -783,7 +783,7 @@ Anmerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte Zeichen löscht ein vorhandenes Zeichen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: TEXT KOPIEREN UND EINFÃœGEN + Lektion 1.6.4: TEXT KOPIEREN UND EINFÃœGEN ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** @@ -806,7 +806,7 @@ Anmerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: OPTIONEN SETZEN + Lektion 1.6.5: OPTIONEN SETZEN ** Setze eine Option so, dass eine Suche oder Ersetzung Groß- ** ** und Kleinschreibung ignoriert ** @@ -829,7 +829,7 @@ Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c im Suchausdruck: /ignoriere\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 6 + ZUSAMMENFASSUNG VON LEKTION 1.6 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus zu starten @@ -852,7 +852,7 @@ Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.1 : AUFRUFEN VON HILFE + Lektion 1.7.1: AUFRUFEN VON HILFE ** Nutze das eingebaute Hilfesystem ** @@ -875,7 +875,7 @@ Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.2: ERSTELLE EIN START-SKRIPT + Lektion 1.7.2: ERSTELLE EIN START-SKRIPT ** Aktiviere die Features von Vim ** @@ -898,7 +898,7 @@ Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c Du kannst all deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. Für mehr Informationen tippe :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.3: VERVOLLSTÄNDIGEN + Lektion 1.7.3: VERVOLLSTÄNDIGEN ** Kommandozeilenvervollständigung mit CTRL-D und ** @@ -921,7 +921,7 @@ Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere einfach CTRL-D und . Dies ist insbesondere nützlich für :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 7 + ZUSAMMENFASSUNG VON LEKTION 1.7 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. diff --git a/runtime/tutor/tutor.el b/runtime/tutor/tutor1.el similarity index 93% rename from runtime/tutor/tutor.el rename to runtime/tutor/tutor1.el index 9a2fd98c62..ede8f00ea1 100644 --- a/runtime/tutor/tutor.el +++ b/runtime/tutor/tutor1.el @@ -22,10 +22,10 @@ Ôþñá, âåâáéùèåßôå üôé ôï ðëÞêôñï Caps-Lock ÄÅÍ åßíáé ðáôçìÝíï êáé ðáôÞóôå ôï ðëÞêôñï j áñêåôÝò öïñÝò ãéá íá ìåôáêéíÞóåôå ôïí äñïìÝá Ýôóé - þóôå ôï ÌÜèçìá 1.1 íá ãåìßóåé ðëÞñùò ôçí ïèüíç. + þóôå ôï ÌÜèçìá 1.1.1 íá ãåìßóåé ðëÞñùò ôçí ïèüíç. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 1.1: ÌÅÔÁÊÉÍÏÍÔÁÓ ÔÏÍ ÄÑÏÌÅÁ + ÌÜèçìá 1.1.1: ÌÅÔÁÊÉÍÏÍÔÁÓ ÔÏÍ ÄÑÏÌÅÁ ** Ãéá íá êéíÞóåôå ôïí äñïìÝá, ðáôÞóôå ôá ðëÞêôñá h,j,k,l üðùò äåß÷íåôáé. ** ^ @@ -39,7 +39,7 @@ 2. ÊñáôÞóôå ðáôçìÝíï ôï êÜôù ðëÞêôñï (j) ìÝ÷ñé íá åðáíáëçöèåß. ---> Ôþñá îÝñåôå ðþò íá ìåôáêéíçèåßôå óôï åðüìåíï ìÜèçìá. - 3. ×ñçóéìïðïéþíôáò ôï êÜôù ðëÞêôñï, ìåôáêéíçèåßôå óôï ÌÜèçìá 1.2. + 3. ×ñçóéìïðïéþíôáò ôï êÜôù ðëÞêôñï, ìåôáêéíçèåßôå óôï ÌÜèçìá 1.1.2. Óçìåßùóç: Áí áìöéâÜëëåôå ãéá êÜôé ðïõ ðáôÞóáôå, ðáôÞóôå ãéá íá âñåèåßôå óôçí ÊáíïíéêÞ ÊáôÜóôáóç. ÌåôÜ ðáôÞóôå îáíÜ ôçí åíôïëÞ ðïõ èÝëáôå. @@ -48,7 +48,7 @@ èá ìðïñåßôå íá êéíçèåßôå ðïëý ãñçãïñüôåñá, ìüëéò ôá óõíçèßóåôå. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 1.2: ÌÐÁÉÍÏÍÔÁÓ ÊÁÉ ÂÃÁÉÍÏÍÔÁÓ ÓÔÏÍ VIM + ÌÜèçìá 1.1.2: ÌÐÁÉÍÏÍÔÁÓ ÊÁÉ ÂÃÁÉÍÏÍÔÁÓ ÓÔÏÍ VIM !! ÓÇÌÅÉÙÓÇ: Ðñéí åêôåëÝóåôå êÜðïéï áðü ôá âÞìáôá, äéáâÜóôå üëï ôï ìÜèçìá!! @@ -69,9 +69,9 @@ 4. Áí Ý÷åôå áðïìíçìïíåýóåé áõôÜ ôá âÞìáôá êáé Ý÷åôå áõôïðåðïßèçóç, åêôåëÝóôå ôá âÞìáôá 1 Ýùò 3 ãéá íá âãåßôå êáé íá ìðåßôå îáíÜ óôïí óõíôÜêôç. ÌåôÜ - ìåôáêéíÞóôå ôïí äñïìÝá êÜôù óôï ÌÜèçìá 1.3. + ìåôáêéíÞóôå ôïí äñïìÝá êÜôù óôï ÌÜèçìá 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 1.3: ÄÉÏÑÈÙÓÇ ÊÅÉÌÅÍÏÕ - ÄÉÁÃÑÁÖÇ + ÌÜèçìá 1.1.3: ÄÉÏÑÈÙÓÇ ÊÅÉÌÅÍÏÕ - ÄÉÁÃÑÁÖÇ ** ¼óï åßóôå óôçí ÊáíïíéêÞ ÊáôÜóôáóç ðáôÞóôå x ãéá íá äéáãñÜøåôå ôïí ÷áñáêôÞñá êÜôù áðü ôïí äñïìÝá. ** @@ -87,13 +87,13 @@ ---> The ccow jumpedd ovverr thhe mooon. - 5. Ôþñá ðïõ ç ãñáììÞ åßíáé óùóôÞ, ðçãáßíôå óôï ÌÜèçìá 1.4. + 5. Ôþñá ðïõ ç ãñáììÞ åßíáé óùóôÞ, ðçãáßíôå óôï ÌÜèçìá 1.1.4. ÓÇÌÅÉÙÓÇ: Êáèþò äéáôñÝ÷åôå áõôÞí ôçí ðåñéÞãçóç, ðñïóðáèÞóôå íá ìçí áðïìíçìïíåýåôå, ìáèáßíåôå ìå ôç ÷ñÞóç. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 1.4: ÄÉÏÑÈÙÓÇ ÊÅÉÌÅÍÏÕ - ÐÁÑÅÌÂÏËÇ + ÌÜèçìá 1.1.4: ÄÉÏÑÈÙÓÇ ÊÅÉÌÅÍÏÕ - ÐÁÑÅÌÂÏËÇ ** ¼óï åßóôå óå ÊáíïíéêÞ ÊáôÜóôáóç ðáôÞóôå i ãéá íá ðáñåìâÜëëåôå êåßìåíï. ** @@ -115,7 +115,7 @@ ðáñáêÜôù ðåñßëçøç. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 1 ÐÅÑÉËÇØÇ + ÌÁÈÇÌÁ 1.1 ÐÅÑÉËÇØÇ 1. Ï äñïìÝáò êéíåßôáé ÷ñçóéìïðïéþíôáò åßôå ôá ðëÞêôñá äñïìÝá Þ ôá hjkl. @@ -135,10 +135,10 @@ ÓÇÌÅÉÙÓÇ: Ðáôþíôáò èá ôïðïèåôçèåßôå óôçí ÊáíïíéêÞ ÊáôÜóôáóç Þ èá áêõñþóåôå ìßá áíåðéèýìçôç êáé ìåñéêþò ïëïêëçñùìÝíç åíôïëÞ. -Ôþñá óõíå÷ßóôå ìå ôï ÌÜèçìá 2. +Ôþñá óõíå÷ßóôå ìå ôï ÌÜèçìá 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 2.1: ÅÍÔÏËÅÓ ÄÉÁÃÑÁÖÇÓ + ÌÜèçìá 1.2.1: ÅÍÔÏËÅÓ ÄÉÁÃÑÁÖÇÓ ** ÃñÜøôå dw ãéá íá äéáãñÜøåôå ìÝ÷ñé ôï ôÝëïò ìßáò ëÝîçò. ** @@ -157,10 +157,10 @@ ---> There are a some words fun that don't belong paper in this sentence. 5. ÅðáíáëÜâåôå ôá âÞìáôá 3 êáé 4 ìÝ÷ñé ç ðñüôáóç íá åßíáé óùóôÞ êáé - ðçãáßíåôå óôï ÌÜèçìá 2.2. + ðçãáßíåôå óôï ÌÜèçìá 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 2.2: ÐÅÑÉÓÓÏÔÅÑÅÓ ÅÍÔÏËÅÓ ÄÉÁÃÑÁÖÇÓ + ÌÜèçìá 1.2.2: ÐÅÑÉÓÓÏÔÅÑÅÓ ÅÍÔÏËÅÓ ÄÉÁÃÑÁÖÇÓ ** ÐëçêôñïëïãÞóôå d$ ãéá íá äéáãñÜøåôå ìÝ÷ñé ôï ôÝëïò ôçò ãñáììÞò. ** @@ -174,7 +174,7 @@ ---> Somebody typed the end of this line twice. end of this line twice. - 5. Ðçãáßíåôå óôï ÌÜèçìá 2.3 ãéá íá êáôáëÜâåôå ôé óõìâáßíåé. + 5. Ðçãáßíåôå óôï ÌÜèçìá 1.2.3 ãéá íá êáôáëÜâåôå ôé óõìâáßíåé. @@ -183,7 +183,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 2.3: ÐÅÑÉ ÅÍÔÏËÙÍ ÊÁÉ ÁÍÔÉÊÅÉÌÅÍÙÍ + ÌÜèçìá 1.2.3: ÐÅÑÉ ÅÍÔÏËÙÍ ÊÁÉ ÁÍÔÉÊÅÉÌÅÍÙÍ Ç ìïñöÞ ôçò åíôïëÞò äéáãñáöÞò d åßíáé ùò åîÞò: @@ -206,7 +206,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 2.4: ÌÉÁ ÅÎÁÉÑÅÓÇ ÓÔÇÍ 'ÅÍÔÏËÇ-ÁÍÔÉÊÅÉÌÅÍÏ' + ÌÜèçìá 1.2.4: ÌÉÁ ÅÎÁÉÑÅÓÇ ÓÔÇÍ 'ÅÍÔÏËÇ-ÁÍÔÉÊÅÉÌÅÍÏ' ** ÐëçêôñïëïãÞóôå dd ãéá íá äéáãñÜøåôå üëç ôç ãñáììÞ. ** @@ -229,7 +229,7 @@ 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 2.5: Ç ÅÍÔÏËÇ ÁÍÁÉÑÅÓÇÓ + ÌÜèçìá 1.2.5: Ç ÅÍÔÏËÇ ÁÍÁÉÑÅÓÇÓ ** ÐáôÞóôå u ãéá íá áíáéñÝóåôå ôéò ôåëåõôáßåò åíôïëÝò, U ãéá íá äéïñèþóåôå üëç ôç ãñáììÞ. ** @@ -249,10 +249,10 @@ ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. ÁõôÝò åßíáé ðïëý ÷ñÞóéìåò åíôïëÝò. Ôþñá ðçãáßíåôå óôçí - Ðåñßëçøç ôïõ ÌáèÞìáôïò 2. + Ðåñßëçøç ôïõ ÌáèÞìáôïò 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 2 ÐÅÑÉËÇØÇ + ÌÁÈÇÌÁ 1.2 ÐÅÑÉËÇØÇ 1. Ãéá íá äéáãñÜøåôå áðü ôïí äñïìÝá ìÝ÷ñé ôï ôÝëïò ëÝîçò ãñÜøôå: dw @@ -275,7 +275,7 @@ Ãéá íá áíáéñÝóåôå ôéò áíáéñÝóåéò, ðáôÞóôå: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 3.1: Ç ÅÍÔÏËÇ ÔÏÐÏÈÅÔÇÓÇÓ + ÌÜèçìá 1.3.1: Ç ÅÍÔÏËÇ ÔÏÐÏÈÅÔÇÓÇÓ ** ÐáôÞóôå p ãéá íá ôïðïèåôÞóåôå ôçí ôåëåõôáßá äéáãñáöÞ ìåôÜ ôïí äñïìÝá. ** @@ -299,7 +299,7 @@ a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 3.2: Ç ÅÍÔÏËÇ ÁÍÔÉÊÁÔÁÓÔÁÓÇÓ + ÌÜèçìá 1.3.2: Ç ÅÍÔÏËÇ ÁÍÔÉÊÁÔÁÓÔÁÓÇÓ ** ÐáôÞóôå r êáé ÷áñáêôÞñá ãéá íá áëëÜîåôå áõôüí ðïõ åßíáé @@ -316,13 +316,13 @@ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Ôþñá ðçãáßíåôå óôï ÌÜèçìá 3.2. + 5. Ôþñá ðçãáßíåôå óôï ÌÜèçìá 1.3.2. ÓÇÌÅÉÙÓÇ: Íá èõìÜóôå üôé ðñÝðåé íá ìáèáßíåôå ìå ôç ÷ñÞóç, êáé ü÷é ìå ôçí áðïìíçìüíåõóç. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 3.3: Ç ÅÍÔÏËÇ ÁËËÁÃÇÓ + ÌÜèçìá 1.3.3: Ç ÅÍÔÏËÇ ÁËËÁÃÇÓ ** Ãéá íá áëëÜîåôå ôìÞìá Þ üëç ôç ëÝîç, ðáôÞóôå cw . ** @@ -345,7 +345,7 @@ åðßóçò óå ðáñåìâïëÞ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 3.4: ÐÅÑÉÓÓÏÔÅÑÅÓ ÁËËÁÃÅÓ ÌÅ c + ÌÜèçìá 1.3.4: ÐÅÑÉÓÓÏÔÅÑÅÓ ÁËËÁÃÅÓ ÌÅ c ** Ç åíôïëÞ áëëáãÞò ÷ñçóéìïðïéåßôáé ìå ôá ßäéá áíôéêåßìåíá ôçò äéáãñáöÞò. ** @@ -369,7 +369,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 3 ÐÅÑÉËÇØÇ + ÌÁÈÇÌÁ 1.3 ÐÅÑÉËÇØÇ 1. Ãéá íá ôïðïèåôÞóåôå êåßìåíï ðïõ ìüëéò Ý÷åé äéáãñáöåß, ðáôÞóôå p . @@ -392,7 +392,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 4.1: ÈÅÓÇ ÊÁÉ ÊÁÔÁÓÔÁÓÇ ÁÑ×ÅÉÏÕ + ÌÜèçìá 1.4.1: ÈÅÓÇ ÊÁÉ ÊÁÔÁÓÔÁÓÇ ÁÑ×ÅÉÏÕ ** ÐáôÞóôå CTRL-g ãéá íá åìöáíéóôåß ç èÝóç óáò óôï áñ÷åßï êáé ç êáôÜóôáóÞ ôïõ. @@ -415,7 +415,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 4.2: Ç ÅÍÔÏËÇ ÁÍÁÆÇÔÇÓÇÓ + ÌÜèçìá 1.4.2: Ç ÅÍÔÏËÇ ÁÍÁÆÇÔÇÓÇÓ ** ÐáôÞóôå / áêïëïõèïýìåíï áðü ôç öñÜóç ðïõ øÜ÷íåôå. ** @@ -437,7 +437,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 4.3: ÅÕÑÅÓÇ ÔÁÉÑÉÁÓÔÙÍ ÐÁÑÅÍÈÅÓÅÙÍ + ÌÜèçìá 1.4.3: ÅÕÑÅÓÇ ÔÁÉÑÉÁÓÔÙÍ ÐÁÑÅÍÈÅÓÅÙÍ ** ÐáôÞóôå % ãéá íá âñåßôå ôçí áíôßóôïé÷ç ), ], Þ } . ** @@ -460,7 +460,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 4.4: ÅÍÁÓ ÔÑÏÐÏÓ ÃÉÁ ÁËËÁÃÇ ËÁÈÙÍ + ÌÜèçìá 1.4.4: ÅÍÁÓ ÔÑÏÐÏÓ ÃÉÁ ÁËËÁÃÇ ËÁÈÙÍ ** ÃñÜøôå :s/old/new/g ãéá íá áëëÜîåôå ôï 'new' ìå ôï 'old'. ** @@ -483,7 +483,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 4 ÐÅÑÉËÇØÇ + ÌÁÈÇÌÁ 1.4 ÐÅÑÉËÇØÇ 1. Ôï Ctrl-g åìöáíßæåé ôç èÝóç óáò óôï áñ÷åßï êáé ôçí êáôÜóôáóÞ ôïõ. @@ -506,7 +506,7 @@ Ãéá åñþôçóç åðéâåâáßùóçò êÜèå öïñÜ ðñïóèÝóôå Ýíá 'c' "%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 5.1: ÐÙÓ ÅÊÔÅËÙ ÌÉÁ ÅÎÙÔÅÑÉÊÇ ÅÍÔÏËÇ + ÌÜèçìá 1.5.1: ÐÙÓ ÅÊÔÅËÙ ÌÉÁ ÅÎÙÔÅÑÉÊÇ ÅÍÔÏËÇ ** ÃñÜøôå :! áêïëïõèïýìåíï áðü ìßá åîùôåñéêÞ åíôïëÞ ãéá íá ôçí åêôåëÝóåôå. ** @@ -529,7 +529,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 5.2: ÐÅÑÉÓÓÏÔÅÑÁ ÐÅÑÉ ÅÃÃÑÁÖÇÓ ÁÑ×ÅÉÙÍ + ÌÜèçìá 1.5.2: ÐÅÑÉÓÓÏÔÅÑÁ ÐÅÑÉ ÅÃÃÑÁÖÇÓ ÁÑ×ÅÉÙÍ ** Ãéá íá óþóåôå ôéò áëëÜãåò ðïõ êÜíáôå óôï áñ÷åßï, ãñÜøôå :w ÁÑ×ÅÉÏ. ** @@ -552,7 +552,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 5.3: ÅÐÉËÅÊÔÉÊÇ ÅÍÔÏËÇ ÅÃÃÑÁÖÇÓ + ÌÜèçìá 1.5.3: ÅÐÉËÅÊÔÉÊÇ ÅÍÔÏËÇ ÅÃÃÑÁÖÇÓ ** Ãéá íá óþóåôå ôìÞìá ôïõ áñ÷åßïõ, ãñÜøôå :#,# w ÁÑ×ÅÉÏ ** @@ -575,7 +575,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 5.4: ÁÍÁÊÔÙÍÔÁÓ ÊÁÉ ÅÍÙÍÏÍÔÁÓ ÁÑ×ÅÉÁ + ÌÜèçìá 1.5.4: ÁÍÁÊÔÙÍÔÁÓ ÊÁÉ ÅÍÙÍÏÍÔÁÓ ÁÑ×ÅÉÁ ** Ãéá íá åéóÜãåôå ôá ðåñéå÷üìåíá åíüò áñ÷åßïõ, ãñÜøôå :r ÁÑ×ÅÉÏ ** @@ -584,7 +584,7 @@ 2. ÔïðïèåôÞóôå ôïí äñïìÝá óôï ðÜíù ìÝñïò ôçò óåëßäáò. -ÓÇÌÅÉÙÓÇ: Áöüôïõ åêôåëÝóåôå ôï ÂÞìá 3 èá äåßôå ôï ÌÜèçìá 5.3. +ÓÇÌÅÉÙÓÇ: Áöüôïõ åêôåëÝóåôå ôï ÂÞìá 3 èá äåßôå ôï ÌÜèçìá 1.5.3. ÌåôÜ êéíçèåßôå ÊÁÔÙ îáíÜ ðñïò ôï ìÜèçìá áõôü. 3. Ôþñá áíáêôÞóôå ôï áñ÷åßï óáò TEST ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ :r TEST @@ -594,11 +594,11 @@ ï äñïìÝáò. 4. Ãéá íá åðáëçèåýóåôå üôé ôï áñ÷åßï áíáêôÞèçêå, ðßóù ôïí äñïìÝá êáé - ðáñáôçñÞóôå üôé õðÜñ÷ïõí ôþñá äýï áíôßãñáöá ôïõ ÌáèÞìáôïò 5.3, ôï + ðáñáôçñÞóôå üôé õðÜñ÷ïõí ôþñá äýï áíôßãñáöá ôïõ ÌáèÞìáôïò 1.5.3, ôï áñ÷éêü êáé ç Ýêäïóç ôïõ áñ÷åßïõ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 5 ÐÅÑÉËÇØÇ + ÌÁÈÇÌÁ 1.5 ÐÅÑÉËÇØÇ 1. :!åíôïëÞ åêôåëåß ìßá åîùôåñéêÞ åíôïëÞ. @@ -621,7 +621,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 6.1: Ç ÅÍÔÏËÇ ÁÍÏÉÃÌÁÔÏÓ + ÌÜèçìá 1.6.1: Ç ÅÍÔÏËÇ ÁÍÏÉÃÌÁÔÏÓ ** ÐáôÞóôå o ãéá íá áíïßîåôå ìßá ãñáììÞ êÜôù áðü ôïí äñïìÝá êáé íá @@ -644,7 +644,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 6.2: Ç ÅÍÔÏËÇ ÐÑÏÓÈÇÊÇÓ + ÌÜèçìá 1.6.2: Ç ÅÍÔÏËÇ ÐÑÏÓÈÇÊÇÓ ** ÐáôÞóôå a ãéá íá åéóÜãåôå êåßìåíï ÌÅÔÁ ôïí äñïìÝá. ** @@ -667,7 +667,7 @@ ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 6.3: ÁËËÇ ÅÊÄÏÓÇ ÔÇÓ ÁÍÔÉÊÁÔÁÓÔÁÓÇÓ + ÌÜèçìá 1.6.3: ÁËËÇ ÅÊÄÏÓÇ ÔÇÓ ÁÍÔÉÊÁÔÁÓÔÁÓÇÓ ** ÐáôÞóôå êåöáëáßï R ãéá íá áëëÜîåôå ðåñéóóüôåñïõò áðü Ýíáí ÷áñáêôÞñåò. ** @@ -690,7 +690,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÜèçìá 6.4: ÑÕÈÌÉÓÇ ÅÐÉËÏÃÇÓ + ÌÜèçìá 1.6.4: ÑÕÈÌÉÓÇ ÅÐÉËÏÃÇÓ ** Ñõèìßóôå ìßá åðéëïãÞ Ýôóé þóôå ç áíáæÞôçóç Þ ç áíôéêáôÜóôáóç íá áãíïåß @@ -713,7 +713,7 @@ /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 6 ÐÅÑÉËÇØÇ + ÌÁÈÇÌÁ 1.6 ÐÅÑÉËÇØÇ 1. Ðáôþíôáò o áíïßãåé ìßá ãñáììÞ ÊÁÔÙ áðü ôïí äñïìÝá êáé ôïðïèåôåß ôïí @@ -736,7 +736,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 7: ON-LINE ÅÍÔÏËÅÓ ÂÏÇÈÅÉÁÓ + ÌÁÈÇÌÁ 1.7: ON-LINE ÅÍÔÏËÅÓ ÂÏÇÈÅÉÁÓ ** ×ñçóéìïðïéÞóôå ôï on-line óýóôçìá âïÞèåéáò ** @@ -759,7 +759,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÌÁÈÇÌÁ 8: ÄÇÌÉÏÕÑÃÇÓÔÅ ÅÍÁ SCRIPT ÅÊÊÉÍÇÓÇÓ + ÌÁÈÇÌÁ 1.8: ÄÇÌÉÏÕÑÃÇÓÔÅ ÅÍÁ SCRIPT ÅÊÊÉÍÇÓÇÓ ** ÅíåñãïðïéÞóôå ÷áñáêôçñéóôéêÜ ôïõ Vim ** diff --git a/runtime/tutor/tutor.el.cp737 b/runtime/tutor/tutor1.el.cp737 similarity index 93% rename from runtime/tutor/tutor.el.cp737 rename to runtime/tutor/tutor1.el.cp737 index 64833444b1..36c3ebbf77 100644 --- a/runtime/tutor/tutor.el.cp737 +++ b/runtime/tutor/tutor1.el.cp737 @@ -22,10 +22,10 @@ ’騘, ™œ™˜ àŸœå«œ æ«  «¦ §¢ã¡«¨¦ Caps-Lock ƒ„Œ œå¤˜  §˜«ž£â¤¦ ¡˜  §˜«ã©«œ «¦ §¢ã¡«¨¦ j ˜¨¡œ«âª ­¦¨âª š ˜ ¤˜ £œ«˜¡ ¤ã©œ«œ «¦¤ ›¨¦£â˜ â«©  - é©«œ «¦ ‹áŸž£˜ 1.1 ¤˜ šœ£å©œ  §¢ã¨àª «ž¤ ¦Ÿæ¤ž. + é©«œ «¦ ‹áŸž£˜ 1.1.1 ¤˜ šœ£å©œ  §¢ã¨àª «ž¤ ¦Ÿæ¤ž. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 1.1: ‹„’€‰ˆŒŽŒ’€‘ ’ŽŒ ƒŽ‹„€ + ‹áŸž£˜ 1.1.1: ‹„’€‰ˆŒŽŒ’€‘ ’ŽŒ ƒŽ‹„€ ** ‚ ˜ ¤˜ ¡ ¤ã©œ«œ «¦¤ ›¨¦£â˜, §˜«ã©«œ «˜ §¢ã¡«¨˜ h,j,k,l æ§àª ›œå®¤œ«˜ . ** ^ @@ -39,7 +39,7 @@ 2. ‰¨˜«ã©«œ §˜«ž£â¤¦ «¦ ¡á«à §¢ã¡«¨¦ (j) £â®¨  ¤˜ œ§˜¤˜¢ž­Ÿœå. ---> ’騘 ¥â¨œ«œ §éª ¤˜ £œ«˜¡ ¤žŸœå«œ ©«¦ œ§æ£œ¤¦ £áŸž£˜. - 3. •¨ž© £¦§¦ é¤«˜ª «¦ ¡á«à §¢ã¡«¨¦, £œ«˜¡ ¤žŸœå«œ ©«¦ ‹áŸž£˜ 1.2. + 3. •¨ž© £¦§¦ é¤«˜ª «¦ ¡á«à §¢ã¡«¨¦, £œ«˜¡ ¤žŸœå«œ ©«¦ ‹áŸž£˜ 1.1.2. ‘ž£œåà©ž: €¤ ˜£­ ™á¢¢œ«œ š ˜ ¡á«  §¦¬ §˜«ã©˜«œ, §˜«ã©«œ š ˜ ¤˜ ™¨œŸœå«œ ©«ž¤ ‰˜¤¦¤ ¡ã ‰˜«á©«˜©ž. ‹œ«á §˜«ã©«œ ¥˜¤á «ž¤ œ¤«¦¢ã §¦¬ Ÿâ¢˜«œ. @@ -48,7 +48,7 @@ Ÿ˜ £§¦¨œå«œ ¤˜ ¡ ¤žŸœå«œ §¦¢ç š¨žš¦¨æ«œ¨˜, £æ¢ ª «˜ ©¬¤žŸå©œ«œ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 1.2: ‹€ˆŒŽŒ’€‘ ‰€ˆ ‚€ˆŒŽŒ’€‘ ‘’ŽŒ VIM + ‹áŸž£˜ 1.1.2: ‹€ˆŒŽŒ’€‘ ‰€ˆ ‚€ˆŒŽŒ’€‘ ‘’ŽŒ VIM !! ‘†‹„ˆ—‘†: ¨ ¤ œ¡«œ¢â©œ«œ ¡á§¦ ¦ ˜§æ «˜ ™ã£˜«˜, › ˜™á©«œ 梦 «¦ £áŸž£˜!! @@ -69,9 +69,9 @@ 4. €¤ ⮜«œ ˜§¦£¤ž£¦¤œç©œ  ˜¬«á «˜ ™ã£˜«˜ ¡˜  ⮜«œ ˜¬«¦§œ§¦åŸž©ž, œ¡«œ¢â©«œ «˜ ™ã£˜«˜ 1 âઠ3 š ˜ ¤˜ ™šœå«œ ¡˜  ¤˜ £§œå«œ ¥˜¤á ©«¦¤ ©¬¤«á¡«ž. ‹œ«á - £œ«˜¡ ¤ã©«œ «¦¤ ›¨¦£â˜ ¡á«à ©«¦ ‹áŸž£˜ 1.3. + £œ«˜¡ ¤ã©«œ «¦¤ ›¨¦£â˜ ¡á«à ©«¦ ‹áŸž£˜ 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 1.3: ƒˆŽ‡—‘† ‰„ˆ‹„ŒŽ“ - ƒˆ€‚€”† + ‹áŸž£˜ 1.1.3: ƒˆŽ‡—‘† ‰„ˆ‹„ŒŽ“ - ƒˆ€‚€”† **  œå©«œ ©«ž¤ ‰˜¤¦¤ ¡ã ‰˜«á©«˜©ž §˜«ã©«œ x š ˜ ¤˜ › ˜š¨á¯œ«œ «¦¤ ®˜¨˜¡«ã¨˜ ¡á«à ˜§æ «¦¤ ›¨¦£â˜. ** @@ -87,13 +87,13 @@ ---> The ccow jumpedd ovverr thhe mooon. - 5. ’騘 §¦¬ ž š¨˜££ã œå¤˜  ©à©«ã, §žš˜å¤«œ ©«¦ ‹áŸž£˜ 1.4. + 5. ’騘 §¦¬ ž š¨˜££ã œå¤˜  ©à©«ã, §žš˜å¤«œ ©«¦ ‹áŸž£˜ 1.1.4. ‘†‹„ˆ—‘†: ‰˜Ÿéª › ˜«¨â®œ«œ ˜¬«ã¤ «ž¤ §œ¨ ãšž©ž, §¨¦©§˜Ÿã©«œ ¤˜ £ž¤ ˜§¦£¤ž£¦¤œçœ«œ, £˜Ÿ˜å¤œ«œ £œ «ž ®¨ã©ž. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 1.4: ƒˆŽ‡—‘† ‰„ˆ‹„ŒŽ“ - €„‹ŽŠ† + ‹áŸž£˜ 1.1.4: ƒˆŽ‡—‘† ‰„ˆ‹„ŒŽ“ - €„‹ŽŠ† **  œå©«œ ©œ ‰˜¤¦¤ ¡ã ‰˜«á©«˜©ž §˜«ã©«œ i š ˜ ¤˜ §˜¨œ£™á¢¢œ«œ ¡œå£œ¤¦. ** @@ -115,7 +115,7 @@ §˜¨˜¡á«à §œ¨å¢ž¯ž. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 1 „ˆŠ†–† + ‹€‡†‹€ 1.1 „ˆŠ†–† 1. Ž ›¨¦£â˜ª ¡ ¤œå«˜  ®¨ž© £¦§¦ é¤«˜ª œå«œ «˜ §¢ã¡«¨˜ ›¨¦£â˜ ã «˜ hjkl. @@ -135,10 +135,10 @@ ‘†‹„ˆ—‘†: ˜«é¤«˜ª Ÿ˜ «¦§¦Ÿœ«žŸœå«œ ©«ž¤ ‰˜¤¦¤ ¡ã ‰˜«á©«˜©ž ã Ÿ˜ ˜¡¬¨é©œ«œ £å˜ ˜¤œ§ Ÿç£ž«ž ¡˜  £œ¨ ¡éª ¦¢¦¡¢ž¨à£â¤ž œ¤«¦¢ã. -’騘 ©¬¤œ®å©«œ £œ «¦ ‹áŸž£˜ 2. +’騘 ©¬¤œ®å©«œ £œ «¦ ‹áŸž£˜ 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 2.1: „Œ’ŽŠ„‘ ƒˆ€‚€”†‘ + ‹áŸž£˜ 1.2.1: „Œ’ŽŠ„‘ ƒˆ€‚€”†‘ ** ‚¨á¯«œ dw š ˜ ¤˜ › ˜š¨á¯œ«œ £â®¨  «¦ «â¢¦ª £å˜ª ¢â¥žª. ** @@ -157,10 +157,10 @@ ---> There are a some words fun that don't belong paper in this sentence. 5. „§˜¤˜¢á™œ«œ «˜ ™ã£˜«˜ 3 ¡˜  4 £â®¨  ž §¨æ«˜©ž ¤˜ œå¤˜  ©à©«ã ¡˜  - §žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 2.2. + §žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 2.2: „ˆ‘‘Ž’„„‘ „Œ’ŽŠ„‘ ƒˆ€‚€”†‘ + ‹áŸž£˜ 1.2.2: „ˆ‘‘Ž’„„‘ „Œ’ŽŠ„‘ ƒˆ€‚€”†‘ ** ¢ž¡«¨¦¢¦šã©«œ d$ š ˜ ¤˜ › ˜š¨á¯œ«œ £â®¨  «¦ «â¢¦ª «žª š¨˜££ãª. ** @@ -174,7 +174,7 @@ ---> Somebody typed the end of this line twice. end of this line twice. - 5. žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 2.3 š ˜ ¤˜ ¡˜«˜¢á™œ«œ «  ©¬£™˜å¤œ . + 5. žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 1.2.3 š ˜ ¤˜ ¡˜«˜¢á™œ«œ «  ©¬£™˜å¤œ . @@ -183,7 +183,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 2.3: „ˆ „Œ’ŽŠ—Œ ‰€ˆ €Œ’ˆ‰„ˆ‹„Œ—Œ + ‹áŸž£˜ 1.2.3: „ˆ „Œ’ŽŠ—Œ ‰€ˆ €Œ’ˆ‰„ˆ‹„Œ—Œ † £¦¨­ã «žª œ¤«¦¢ãª › ˜š¨˜­ãª d œå¤˜  ઠœ¥ãª: @@ -206,7 +206,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 2.4: ‹ˆ€ „€ˆ„‘† ‘’†Œ '„Œ’ŽŠ†-€Œ’ˆ‰„ˆ‹„ŒŽ' + ‹áŸž£˜ 1.2.4: ‹ˆ€ „€ˆ„‘† ‘’†Œ '„Œ’ŽŠ†-€Œ’ˆ‰„ˆ‹„ŒŽ' ** ¢ž¡«¨¦¢¦šã©«œ dd š ˜ ¤˜ › ˜š¨á¯œ«œ 梞 «ž š¨˜££ã. ** @@ -229,7 +229,7 @@ 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 2.5: † „Œ’ŽŠ† €Œ€ˆ„‘†‘ + ‹áŸž£˜ 1.2.5: † „Œ’ŽŠ† €Œ€ˆ„‘†‘ ** ˜«ã©«œ u š ˜ ¤˜ ˜¤˜ ¨â©œ«œ « ª «œ¢œ¬«˜åœª œ¤«¦¢âª, U š ˜ ¤˜ › ¦¨Ÿé©œ«œ 梞 «ž š¨˜££ã. ** @@ -249,10 +249,10 @@ ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. €¬«âª œå¤˜  §¦¢ç ®¨ã© £œª œ¤«¦¢âª. ’騘 §žš˜å¤œ«œ ©«ž¤ - œ¨å¢ž¯ž «¦¬ ‹˜Ÿã£˜«¦ª 2. + œ¨å¢ž¯ž «¦¬ ‹˜Ÿã£˜«¦ª 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 2 „ˆŠ†–† + ‹€‡†‹€ 1.2 „ˆŠ†–† 1. ‚ ˜ ¤˜ › ˜š¨á¯œ«œ ˜§æ «¦¤ ›¨¦£â˜ £â®¨  «¦ «â¢¦ª ¢â¥žª š¨á¯«œ: dw @@ -275,7 +275,7 @@ ‚ ˜ ¤˜ ˜¤˜ ¨â©œ«œ « ª ˜¤˜ ¨â©œ ª, §˜«ã©«œ: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 3.1: † „Œ’ŽŠ† ’ŽŽ‡„’†‘†‘ + ‹áŸž£˜ 1.3.1: † „Œ’ŽŠ† ’ŽŽ‡„’†‘†‘ ** ˜«ã©«œ p š ˜ ¤˜ «¦§¦Ÿœ«ã©œ«œ «ž¤ «œ¢œ¬«˜å˜ › ˜š¨˜­ã £œ«á «¦¤ ›¨¦£â˜. ** @@ -299,7 +299,7 @@ a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 3.2: † „Œ’ŽŠ† €Œ’ˆ‰€’€‘’€‘†‘ + ‹áŸž£˜ 1.3.2: † „Œ’ŽŠ† €Œ’ˆ‰€’€‘’€‘†‘ ** ˜«ã©«œ r ¡˜  ®˜¨˜¡«ã¨˜ š ˜ ¤˜ ˜¢¢á¥œ«œ ˜¬«æ¤ §¦¬ œå¤˜  @@ -316,13 +316,13 @@ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. ’騘 §žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 3.2. + 5. ’騘 §žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 1.3.2. ‘†‹„ˆ—‘†: Œ˜ Ÿ¬£á©«œ æ«  §¨â§œ  ¤˜ £˜Ÿ˜å¤œ«œ £œ «ž ®¨ã©ž, ¡˜  æ®  £œ «ž¤ ˜§¦£¤ž£æ¤œ¬©ž. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 3.3: † „Œ’ŽŠ† €ŠŠ€‚†‘ + ‹áŸž£˜ 1.3.3: † „Œ’ŽŠ† €ŠŠ€‚†‘ ** ‚ ˜ ¤˜ ˜¢¢á¥œ«œ «£ã£˜ ã 梞 «ž ¢â¥ž, §˜«ã©«œ cw . ** @@ -345,7 +345,7 @@ œ§å©žª ©œ §˜¨œ£™¦¢ã. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 3.4: „ˆ‘‘Ž’„„‘ €ŠŠ€‚„‘ ‹„ c + ‹áŸž£˜ 1.3.4: „ˆ‘‘Ž’„„‘ €ŠŠ€‚„‘ ‹„ c ** † œ¤«¦¢ã ˜¢¢˜šãª ®¨ž© £¦§¦ œå«˜  £œ «˜ å› ˜ ˜¤« ¡œå£œ¤˜ «žª › ˜š¨˜­ãª. ** @@ -369,7 +369,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 3 „ˆŠ†–† + ‹€‡†‹€ 1.3 „ˆŠ†–† 1. ‚ ˜ ¤˜ «¦§¦Ÿœ«ã©œ«œ ¡œå£œ¤¦ §¦¬ £æ¢ ª ⮜  › ˜š¨˜­œå, §˜«ã©«œ p . @@ -392,7 +392,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 4.1: ‡„‘† ‰€ˆ ‰€’€‘’€‘† €•„ˆŽ“ + ‹áŸž£˜ 1.4.1: ‡„‘† ‰€ˆ ‰€’€‘’€‘† €•„ˆŽ“ ** ˜«ã©«œ CTRL-g š ˜ ¤˜ œ£­˜¤ ©«œå ž Ÿâ©ž ©˜ª ©«¦ ˜¨®œå¦ ¡˜  ž ¡˜«á©«˜©ã «¦¬. @@ -415,7 +415,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 4.2: † „Œ’ŽŠ† €Œ€…†’†‘†‘ + ‹áŸž£˜ 1.4.2: † „Œ’ŽŠ† €Œ€…†’†‘†‘ ** ˜«ã©«œ / ˜¡¦¢¦¬Ÿ¦ç£œ¤¦ ˜§æ «ž ­¨á©ž §¦¬ ¯á®¤œ«œ. ** @@ -437,7 +437,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 4.3: „“„‘† ’€ˆˆ€‘’—Œ €„Œ‡„‘„—Œ + ‹áŸž£˜ 1.4.3: „“„‘† ’€ˆˆ€‘’—Œ €„Œ‡„‘„—Œ ** ˜«ã©«œ % š ˜ ¤˜ ™¨œå«œ «ž¤ ˜¤«å©«¦ ®ž ), ], ã } . ** @@ -460,7 +460,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 4.4: „Œ€‘ ’ŽŽ‘ ‚ˆ€ €ŠŠ€‚† Š€‡—Œ + ‹áŸž£˜ 1.4.4: „Œ€‘ ’ŽŽ‘ ‚ˆ€ €ŠŠ€‚† Š€‡—Œ ** ‚¨á¯«œ :s/old/new/g š ˜ ¤˜ ˜¢¢á¥œ«œ «¦ 'new' £œ «¦ 'old'. ** @@ -483,7 +483,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 4 „ˆŠ†–† + ‹€‡†‹€ 1.4 „ˆŠ†–† 1. ’¦ Ctrl-g œ£­˜¤åœ  «ž Ÿâ©ž ©˜ª ©«¦ ˜¨®œå¦ ¡˜  «ž¤ ¡˜«á©«˜©ã «¦¬. @@ -506,7 +506,7 @@ ‚ ˜ œ¨é«ž©ž œ§ ™œ™˜åà©žª ¡áŸœ ­¦¨á §¨¦©Ÿâ©«œ ⤘ 'c' "%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 5.1: —‘ „‰’„Š— ‹ˆ€ „—’„ˆ‰† „Œ’ŽŠ† + ‹áŸž£˜ 1.5.1: —‘ „‰’„Š— ‹ˆ€ „—’„ˆ‰† „Œ’ŽŠ† ** ‚¨á¯«œ :! ˜¡¦¢¦¬Ÿ¦ç£œ¤¦ ˜§æ £å˜ œ¥à«œ¨ ¡ã œ¤«¦¢ã š ˜ ¤˜ «ž¤ œ¡«œ¢â©œ«œ. ** @@ -529,7 +529,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 5.2: „ˆ‘‘Ž’„€ „ˆ „‚‚€”†‘ €•„ˆ—Œ + ‹áŸž£˜ 1.5.2: „ˆ‘‘Ž’„€ „ˆ „‚‚€”†‘ €•„ˆ—Œ ** ‚ ˜ ¤˜ ©é©œ«œ « ª ˜¢¢ášœª §¦¬ ¡á¤˜«œ ©«¦ ˜¨®œå¦, š¨á¯«œ :w €•„ˆŽ. ** @@ -552,7 +552,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 5.3: „ˆŠ„‰’ˆ‰† „Œ’ŽŠ† „‚‚€”†‘ + ‹áŸž£˜ 1.5.3: „ˆŠ„‰’ˆ‰† „Œ’ŽŠ† „‚‚€”†‘ ** ‚ ˜ ¤˜ ©é©œ«œ «£ã£˜ «¦¬ ˜¨®œå¦¬, š¨á¯«œ :#,# w €•„ˆŽ ** @@ -575,7 +575,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 5.4: €Œ€‰’—Œ’€‘ ‰€ˆ „Œ—ŒŽŒ’€‘ €•„ˆ€ + ‹áŸž£˜ 1.5.4: €Œ€‰’—Œ’€‘ ‰€ˆ „Œ—ŒŽŒ’€‘ €•„ˆ€ ** ‚ ˜ ¤˜ œ ©ášœ«œ «˜ §œ¨ œ®æ£œ¤˜ œ¤æª ˜¨®œå¦¬, š¨á¯«œ :r €•„ˆŽ ** @@ -584,7 +584,7 @@ 2. ’¦§¦Ÿœ«ã©«œ «¦¤ ›¨¦£â˜ ©«¦ §á¤à £â¨¦ª «žª ©œ¢å›˜ª. -‘†‹„ˆ—‘†: €­æ«¦¬ œ¡«œ¢â©œ«œ «¦ 㣘 3 Ÿ˜ ›œå«œ «¦ ‹áŸž£˜ 5.3. +‘†‹„ˆ—‘†: €­æ«¦¬ œ¡«œ¢â©œ«œ «¦ 㣘 3 Ÿ˜ ›œå«œ «¦ ‹áŸž£˜ 1.5.3. ‹œ«á ¡ ¤žŸœå«œ ‰€’— ¥˜¤á §¨¦ª «¦ £áŸž£˜ ˜¬«æ. 3. ’騘 ˜¤˜¡«ã©«œ «¦ ˜¨®œå¦ ©˜ª TEST ®¨ž© £¦§¦ é¤«˜ª «ž¤ œ¤«¦¢ã :r TEST @@ -594,11 +594,11 @@ ¦ ›¨¦£â˜ª. 4. ‚ ˜ ¤˜ œ§˜¢žŸœç©œ«œ æ«  «¦ ˜¨®œå¦ ˜¤˜¡«ãŸž¡œ, §å©à «¦¤ ›¨¦£â˜ ¡˜  - §˜¨˜«ž¨ã©«œ æ«  ¬§á¨®¦¬¤ «é¨˜ ›ç¦ ˜¤«åš¨˜­˜ «¦¬ ‹˜Ÿã£˜«¦ª 5.3, «¦ + §˜¨˜«ž¨ã©«œ æ«  ¬§á¨®¦¬¤ «é¨˜ ›ç¦ ˜¤«åš¨˜­˜ «¦¬ ‹˜Ÿã£˜«¦ª 1.5.3, «¦ ˜¨® ¡æ ¡˜  ž â¡›¦©ž «¦¬ ˜¨®œå¦¬. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 5 „ˆŠ†–† + ‹€‡†‹€ 1.5 „ˆŠ†–† 1. :!œ¤«¦¢ã œ¡«œ¢œå £å˜ œ¥à«œ¨ ¡ã œ¤«¦¢ã. @@ -621,7 +621,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 6.1: † „Œ’ŽŠ† €ŒŽˆ‚‹€’Ž‘ + ‹áŸž£˜ 1.6.1: † „Œ’ŽŠ† €ŒŽˆ‚‹€’Ž‘ ** ˜«ã©«œ o š ˜ ¤˜ ˜¤¦å¥œ«œ £å˜ š¨˜££ã ¡á«à ˜§æ «¦¤ ›¨¦£â˜ ¡˜  ¤˜ @@ -644,7 +644,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 6.2: † „Œ’ŽŠ† Ž‘‡†‰†‘ + ‹áŸž£˜ 1.6.2: † „Œ’ŽŠ† Ž‘‡†‰†‘ ** ˜«ã©«œ a š ˜ ¤˜ œ ©ášœ«œ ¡œå£œ¤¦ ‹„’€ «¦¤ ›¨¦£â˜. ** @@ -667,7 +667,7 @@ ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 6.3: €ŠŠ† „‰ƒŽ‘† ’†‘ €Œ’ˆ‰€’€‘’€‘†‘ + ‹áŸž£˜ 1.6.3: €ŠŠ† „‰ƒŽ‘† ’†‘ €Œ’ˆ‰€’€‘’€‘†‘ ** ˜«ã©«œ ¡œ­˜¢˜å¦ R š ˜ ¤˜ ˜¢¢á¥œ«œ §œ¨ ©©æ«œ¨¦¬ª ˜§æ ⤘¤ ®˜¨˜¡«ã¨œª. ** @@ -690,7 +690,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹áŸž£˜ 6.4: “‡‹ˆ‘† „ˆŠŽ‚†‘ + ‹áŸž£˜ 1.6.4: “‡‹ˆ‘† „ˆŠŽ‚†‘ ** ¬Ÿ£å©«œ £å˜ œ§ ¢¦šã â«©  é©«œ ž ˜¤˜ã«ž©ž ã ž ˜¤« ¡˜«á©«˜©ž ¤˜ ˜š¤¦œå @@ -713,7 +713,7 @@ /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 6 „ˆŠ†–† + ‹€‡†‹€ 1.6 „ˆŠ†–† 1. ˜«é¤«˜ª o ˜¤¦åšœ  £å˜ š¨˜££ã ‰€’— ˜§æ «¦¤ ›¨¦£â˜ ¡˜  «¦§¦Ÿœ«œå «¦¤ @@ -736,7 +736,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 7: ON-LINE „Œ’ŽŠ„‘ Ž†‡„ˆ€‘ + ‹€‡†‹€ 1.7: ON-LINE „Œ’ŽŠ„‘ Ž†‡„ˆ€‘ ** •¨ž© £¦§¦ ã©«œ «¦ on-line ©ç©«ž£˜ ™¦ãŸœ ˜ª ** @@ -759,7 +759,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ‹€‡†‹€ 8: ƒ†‹ˆŽ“‚†‘’„ „Œ€ SCRIPT „‰‰ˆŒ†‘†‘ + ‹€‡†‹€ 1.8: ƒ†‹ˆŽ“‚†‘’„ „Œ€ SCRIPT „‰‰ˆŒ†‘†‘ ** „¤œ¨š¦§¦ ã©«œ ®˜¨˜¡«ž¨ ©« ¡á «¦¬ Vim ** diff --git a/runtime/tutor/tutor.el.utf-8 b/runtime/tutor/tutor1.el.utf-8 similarity index 93% rename from runtime/tutor/tutor.el.utf-8 rename to runtime/tutor/tutor1.el.utf-8 index 7cb9741293..a2e1ee896b 100644 --- a/runtime/tutor/tutor.el.utf-8 +++ b/runtime/tutor/tutor1.el.utf-8 @@ -22,10 +22,10 @@ ΤώÏα, βεβαιωθείτε ότι το πλήκτÏο Caps-Lock ΔΕΠείναι πατημένο και πατήστε το πλήκτÏο j αÏκετές φοÏές για να μετακινήσετε τον δÏομέα έτσι - ώστε το Μάθημα 1.1 να γεμίσει πλήÏως την οθόνη. + ώστε το Μάθημα 1.1.1 να γεμίσει πλήÏως την οθόνη. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 1.1: ΜΕΤΑΚΙÎΟÎΤΑΣ ΤΟΠΔΡΟΜΕΑ + Μάθημα 1.1.1: ΜΕΤΑΚΙÎΟÎΤΑΣ ΤΟΠΔΡΟΜΕΑ ** Για να κινήσετε τον δÏομέα, πατήστε τα πλήκτÏα h,j,k,l όπως δείχνεται. ** ^ @@ -39,7 +39,7 @@ 2. ΚÏατήστε πατημένο το κάτω πλήκτÏο (j) μέχÏι να επαναληφθεί. ---> ΤώÏα ξέÏετε πώς να μετακινηθείτε στο επόμενο μάθημα. - 3. ΧÏησιμοποιώντας το κάτω πλήκτÏο, μετακινηθείτε στο Μάθημα 1.2. + 3. ΧÏησιμοποιώντας το κάτω πλήκτÏο, μετακινηθείτε στο Μάθημα 1.1.2. Σημείωση: Αν αμφιβάλλετε για κάτι που πατήσατε, πατήστε για να βÏεθείτε στην Κανονική Κατάσταση. Μετά πατήστε ξανά την εντολή που θέλατε. @@ -48,7 +48,7 @@ θα μποÏείτε να κινηθείτε Ï€Î¿Î»Ï Î³ÏηγοÏότεÏα, μόλις τα συνηθίσετε. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 1.2: ΜΠΑΙÎΟÎΤΑΣ ΚΑΙ ΒΓΑΙÎΟÎΤΑΣ ΣΤΟΠVIM + Μάθημα 1.1.2: ΜΠΑΙÎΟÎΤΑΣ ΚΑΙ ΒΓΑΙÎΟÎΤΑΣ ΣΤΟΠVIM !! ΣΗΜΕΙΩΣΗ: ΠÏιν εκτελέσετε κάποιο από τα βήματα, διαβάστε όλο το μάθημα!! @@ -69,9 +69,9 @@ 4. Αν έχετε απομνημονεÏσει αυτά τα βήματα και έχετε αυτοπεποίθηση, εκτελέστε τα βήματα 1 έως 3 για να βγείτε και να μπείτε ξανά στον συντάκτη. Μετά - μετακινήστε τον δÏομέα κάτω στο Μάθημα 1.3. + μετακινήστε τον δÏομέα κάτω στο Μάθημα 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 1.3: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕÎΟΥ - ΔΙΑΓΡΑΦΗ + Μάθημα 1.1.3: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕÎΟΥ - ΔΙΑΓΡΑΦΗ ** Όσο είστε στην Κανονική Κατάσταση πατήστε x για να διαγÏάψετε τον χαÏακτήÏα κάτω από τον δÏομέα. ** @@ -87,13 +87,13 @@ ---> The ccow jumpedd ovverr thhe mooon. - 5. ΤώÏα που η γÏαμμή είναι σωστή, πηγαίντε στο Μάθημα 1.4. + 5. ΤώÏα που η γÏαμμή είναι σωστή, πηγαίντε στο Μάθημα 1.1.4. ΣΗΜΕΙΩΣΗ: Καθώς διατÏέχετε αυτήν την πεÏιήγηση, Ï€Ïοσπαθήστε να μην απομνημονεÏετε, μαθαίνετε με τη χÏήση. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 1.4: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕÎΟΥ - ΠΑΡΕΜΒΟΛΗ + Μάθημα 1.1.4: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕÎΟΥ - ΠΑΡΕΜΒΟΛΗ ** Όσο είστε σε Κανονική Κατάσταση πατήστε i για να παÏεμβάλλετε κείμενο. ** @@ -115,7 +115,7 @@ παÏακάτω πεÏίληψη. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 1 ΠΕΡΙΛΗΨΗ + ΜΑΘΗΜΑ 1.1 ΠΕΡΙΛΗΨΗ 1. Ο δÏομέας κινείται χÏησιμοποιώντας είτε τα πλήκτÏα δÏομέα ή τα hjkl. @@ -135,10 +135,10 @@ ΣΗΜΕΙΩΣΗ: Πατώντας θα τοποθετηθείτε στην Κανονική Κατάσταση ή θα ακυÏώσετε μία ανεπιθÏμητη και μεÏικώς ολοκληÏωμένη εντολή. -ΤώÏα συνεχίστε με το Μάθημα 2. +ΤώÏα συνεχίστε με το Μάθημα 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 2.1: ΕÎΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ + Μάθημα 1.2.1: ΕÎΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ ** ΓÏάψτε dw για να διαγÏάψετε μέχÏι το τέλος μίας λέξης. ** @@ -157,10 +157,10 @@ ---> There are a some words fun that don't belong paper in this sentence. 5. Επαναλάβετε τα βήματα 3 και 4 μέχÏι η Ï€Ïόταση να είναι σωστή και - πηγαίνετε στο Μάθημα 2.2. + πηγαίνετε στο Μάθημα 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 2.2: ΠΕΡΙΣΣΟΤΕΡΕΣ ΕÎΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ + Μάθημα 1.2.2: ΠΕΡΙΣΣΟΤΕΡΕΣ ΕÎΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ ** ΠληκτÏολογήστε d$ για να διαγÏάψετε μέχÏι το τέλος της γÏαμμής. ** @@ -174,7 +174,7 @@ ---> Somebody typed the end of this line twice. end of this line twice. - 5. Πηγαίνετε στο Μάθημα 2.3 για να καταλάβετε τι συμβαίνει. + 5. Πηγαίνετε στο Μάθημα 1.2.3 για να καταλάβετε τι συμβαίνει. @@ -183,7 +183,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 2.3: ΠΕΡΙ ΕÎΤΟΛΩΠΚΑΙ ΑÎΤΙΚΕΙΜΕÎΩΠ+ Μάθημα 1.2.3: ΠΕΡΙ ΕÎΤΟΛΩΠΚΑΙ ΑÎΤΙΚΕΙΜΕÎΩΠΗ μοÏφή της εντολής διαγÏαφής d είναι ως εξής: @@ -206,7 +206,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 2.4: ΜΙΑ ΕΞΑΙΡΕΣΗ ΣΤΗΠ'ΕÎΤΟΛΗ-ΑÎΤΙΚΕΙΜΕÎΟ' + Μάθημα 1.2.4: ΜΙΑ ΕΞΑΙΡΕΣΗ ΣΤΗΠ'ΕÎΤΟΛΗ-ΑÎΤΙΚΕΙΜΕÎΟ' ** ΠληκτÏολογήστε dd για να διαγÏάψετε όλη τη γÏαμμή. ** @@ -229,7 +229,7 @@ 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 2.5: Η ΕÎΤΟΛΗ ΑÎΑΙΡΕΣΗΣ + Μάθημα 1.2.5: Η ΕÎΤΟΛΗ ΑÎΑΙΡΕΣΗΣ ** Πατήστε u για να αναιÏέσετε τις τελευταίες εντολές, U για να διοÏθώσετε όλη τη γÏαμμή. ** @@ -249,10 +249,10 @@ ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. Αυτές είναι Ï€Î¿Î»Ï Ï‡Ïήσιμες εντολές. ΤώÏα πηγαίνετε στην - ΠεÏίληψη του Μαθήματος 2. + ΠεÏίληψη του Μαθήματος 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 2 ΠΕΡΙΛΗΨΗ + ΜΑΘΗΜΑ 1.2 ΠΕΡΙΛΗΨΗ 1. Για να διαγÏάψετε από τον δÏομέα μέχÏι το τέλος λέξης γÏάψτε: dw @@ -275,7 +275,7 @@ Για να αναιÏέσετε τις αναιÏέσεις, πατήστε: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 3.1: Η ΕÎΤΟΛΗ ΤΟΠΟΘΕΤΗΣΗΣ + Μάθημα 1.3.1: Η ΕÎΤΟΛΗ ΤΟΠΟΘΕΤΗΣΗΣ ** Πατήστε p για να τοποθετήσετε την τελευταία διαγÏαφή μετά τον δÏομέα. ** @@ -299,7 +299,7 @@ a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 3.2: Η ΕÎΤΟΛΗ ΑÎΤΙΚΑΤΑΣΤΑΣΗΣ + Μάθημα 1.3.2: Η ΕÎΤΟΛΗ ΑÎΤΙΚΑΤΑΣΤΑΣΗΣ ** Πατήστε r και χαÏακτήÏα για να αλλάξετε αυτόν που είναι @@ -316,13 +316,13 @@ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. ΤώÏα πηγαίνετε στο Μάθημα 3.2. + 5. ΤώÏα πηγαίνετε στο Μάθημα 1.3.2. ΣΗΜΕΙΩΣΗ: Îα θυμάστε ότι Ï€Ïέπει να μαθαίνετε με τη χÏήση, και όχι με την απομνημόνευση. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 3.3: Η ΕÎΤΟΛΗ ΑΛΛΑΓΗΣ + Μάθημα 1.3.3: Η ΕÎΤΟΛΗ ΑΛΛΑΓΗΣ ** Για να αλλάξετε τμήμα ή όλη τη λέξη, πατήστε cw . ** @@ -345,7 +345,7 @@ επίσης σε παÏεμβολή. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 3.4: ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΛΛΑΓΕΣ ΜΕ c + Μάθημα 1.3.4: ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΛΛΑΓΕΣ ΜΕ c ** Η εντολή αλλαγής χÏησιμοποιείται με τα ίδια αντικείμενα της διαγÏαφής. ** @@ -369,7 +369,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 3 ΠΕΡΙΛΗΨΗ + ΜΑΘΗΜΑ 1.3 ΠΕΡΙΛΗΨΗ 1. Για να τοποθετήσετε κείμενο που μόλις έχει διαγÏαφεί, πατήστε p . @@ -392,7 +392,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 4.1: ΘΕΣΗ ΚΑΙ ΚΑΤΑΣΤΑΣΗ ΑΡΧΕΙΟΥ + Μάθημα 1.4.1: ΘΕΣΗ ΚΑΙ ΚΑΤΑΣΤΑΣΗ ΑΡΧΕΙΟΥ ** Πατήστε CTRL-g για να εμφανιστεί η θέση σας στο αÏχείο και η κατάστασή του. @@ -415,7 +415,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 4.2: Η ΕÎΤΟΛΗ ΑÎΑΖΗΤΗΣΗΣ + Μάθημα 1.4.2: Η ΕÎΤΟΛΗ ΑÎΑΖΗΤΗΣΗΣ ** Πατήστε / ακολουθοÏμενο από τη φÏάση που ψάχνετε. ** @@ -437,7 +437,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 4.3: ΕΥΡΕΣΗ ΤΑΙΡΙΑΣΤΩΠΠΑΡΕÎΘΕΣΕΩΠ+ Μάθημα 1.4.3: ΕΥΡΕΣΗ ΤΑΙΡΙΑΣΤΩΠΠΑΡΕÎΘΕΣΕΩΠ** Πατήστε % για να βÏείτε την αντίστοιχη ), ], ή } . ** @@ -460,7 +460,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 4.4: ΕÎΑΣ ΤΡΟΠΟΣ ΓΙΑ ΑΛΛΑΓΗ ΛΑΘΩΠ+ Μάθημα 1.4.4: ΕÎΑΣ ΤΡΟΠΟΣ ΓΙΑ ΑΛΛΑΓΗ ΛΑΘΩΠ** ΓÏάψτε :s/old/new/g για να αλλάξετε το 'new' με το 'old'. ** @@ -483,7 +483,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 4 ΠΕΡΙΛΗΨΗ + ΜΑΘΗΜΑ 1.4 ΠΕΡΙΛΗΨΗ 1. Το Ctrl-g εμφανίζει τη θέση σας στο αÏχείο και την κατάστασή του. @@ -506,7 +506,7 @@ Για εÏώτηση επιβεβαίωσης κάθε φοÏά Ï€Ïοσθέστε ένα 'c' "%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 5.1: ΠΩΣ ΕΚΤΕΛΩ ΜΙΑ ΕΞΩΤΕΡΙΚΗ ΕÎΤΟΛΗ + Μάθημα 1.5.1: ΠΩΣ ΕΚΤΕΛΩ ΜΙΑ ΕΞΩΤΕΡΙΚΗ ΕÎΤΟΛΗ ** ΓÏάψτε :! ακολουθοÏμενο από μία εξωτεÏική εντολή για να την εκτελέσετε. ** @@ -529,7 +529,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 5.2: ΠΕΡΙΣΣΟΤΕΡΑ ΠΕΡΙ ΕΓΓΡΑΦΗΣ ΑΡΧΕΙΩΠ+ Μάθημα 1.5.2: ΠΕΡΙΣΣΟΤΕΡΑ ΠΕΡΙ ΕΓΓΡΑΦΗΣ ΑΡΧΕΙΩΠ** Για να σώσετε τις αλλάγες που κάνατε στο αÏχείο, γÏάψτε :w ΑΡΧΕΙΟ. ** @@ -552,7 +552,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 5.3: ΕΠΙΛΕΚΤΙΚΗ ΕÎΤΟΛΗ ΕΓΓΡΑΦΗΣ + Μάθημα 1.5.3: ΕΠΙΛΕΚΤΙΚΗ ΕÎΤΟΛΗ ΕΓΓΡΑΦΗΣ ** Για να σώσετε τμήμα του αÏχείου, γÏάψτε :#,# w ΑΡΧΕΙΟ ** @@ -575,7 +575,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 5.4: ΑÎΑΚΤΩÎΤΑΣ ΚΑΙ ΕÎΩÎΟÎΤΑΣ ΑΡΧΕΙΑ + Μάθημα 1.5.4: ΑÎΑΚΤΩÎΤΑΣ ΚΑΙ ΕÎΩÎΟÎΤΑΣ ΑΡΧΕΙΑ ** Για να εισάγετε τα πεÏιεχόμενα ενός αÏχείου, γÏάψτε :r ΑΡΧΕΙΟ ** @@ -584,7 +584,7 @@ 2. Τοποθετήστε τον δÏομέα στο πάνω μέÏος της σελίδας. -ΣΗΜΕΙΩΣΗ: Αφότου εκτελέσετε το Βήμα 3 θα δείτε το Μάθημα 5.3. +ΣΗΜΕΙΩΣΗ: Αφότου εκτελέσετε το Βήμα 3 θα δείτε το Μάθημα 1.5.3. Μετά κινηθείτε ΚΑΤΩ ξανά Ï€Ïος το μάθημα αυτό. 3. ΤώÏα ανακτήστε το αÏχείο σας TEST χÏησιμοποιώντας την εντολή :r TEST @@ -594,11 +594,11 @@ ο δÏομέας. 4. Για να επαληθεÏσετε ότι το αÏχείο ανακτήθηκε, πίσω τον δÏομέα και - παÏατηÏήστε ότι υπάÏχουν Ï„ÏŽÏα δÏο αντίγÏαφα του Μαθήματος 5.3, το + παÏατηÏήστε ότι υπάÏχουν Ï„ÏŽÏα δÏο αντίγÏαφα του Μαθήματος 1.5.3, το αÏχικό και η έκδοση του αÏχείου. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 5 ΠΕΡΙΛΗΨΗ + ΜΑΘΗΜΑ 1.5 ΠΕΡΙΛΗΨΗ 1. :!εντολή εκτελεί μία εξωτεÏική εντολή. @@ -621,7 +621,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 6.1: Η ΕÎΤΟΛΗ ΑÎΟΙΓΜΑΤΟΣ + Μάθημα 1.6.1: Η ΕÎΤΟΛΗ ΑÎΟΙΓΜΑΤΟΣ ** Πατήστε o για να ανοίξετε μία γÏαμμή κάτω από τον δÏομέα και να @@ -644,7 +644,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 6.2: Η ΕÎΤΟΛΗ ΠΡΟΣΘΗΚΗΣ + Μάθημα 1.6.2: Η ΕÎΤΟΛΗ ΠΡΟΣΘΗΚΗΣ ** Πατήστε a για να εισάγετε κείμενο ΜΕΤΑ τον δÏομέα. ** @@ -667,7 +667,7 @@ ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 6.3: ΑΛΛΗ ΕΚΔΟΣΗ ΤΗΣ ΑÎΤΙΚΑΤΑΣΤΑΣΗΣ + Μάθημα 1.6.3: ΑΛΛΗ ΕΚΔΟΣΗ ΤΗΣ ΑÎΤΙΚΑΤΑΣΤΑΣΗΣ ** Πατήστε κεφαλαίο R για να αλλάξετε πεÏισσότεÏους από έναν χαÏακτήÏες. ** @@ -690,7 +690,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Μάθημα 6.4: ΡΥΘΜΙΣΗ ΕΠΙΛΟΓΗΣ + Μάθημα 1.6.4: ΡΥΘΜΙΣΗ ΕΠΙΛΟΓΗΣ ** Ρυθμίστε μία επιλογή έτσι ώστε η αναζήτηση ή η αντικατάσταση να αγνοεί @@ -713,7 +713,7 @@ /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 6 ΠΕΡΙΛΗΨΗ + ΜΑΘΗΜΑ 1.6 ΠΕΡΙΛΗΨΗ 1. Πατώντας o ανοίγει μία γÏαμμή ΚΑΤΩ από τον δÏομέα και τοποθετεί τον @@ -736,7 +736,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 7: ON-LINE ΕÎΤΟΛΕΣ ΒΟΗΘΕΙΑΣ + ΜΑΘΗΜΑ 1.7: ON-LINE ΕÎΤΟΛΕΣ ΒΟΗΘΕΙΑΣ ** ΧÏησιμοποιήστε το on-line σÏστημα βοήθειας ** @@ -759,7 +759,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ΜΑΘΗΜΑ 8: ΔΗΜΙΟΥΡΓΗΣΤΕ ΕÎΑ SCRIPT ΕΚΚΙÎΗΣΗΣ + ΜΑΘΗΜΑ 1.8: ΔΗΜΙΟΥΡΓΗΣΤΕ ΕÎΑ SCRIPT ΕΚΚΙÎΗΣΗΣ ** ΕνεÏγοποιήστε χαÏακτηÏιστικά του Vim ** diff --git a/runtime/tutor/tutor.eo b/runtime/tutor/tutor1.eo similarity index 93% rename from runtime/tutor/tutor.eo rename to runtime/tutor/tutor1.eo index b33699e04b..6af741ed51 100644 --- a/runtime/tutor/tutor.eo +++ b/runtime/tutor/tutor1.eo @@ -23,7 +23,7 @@ ke la leciono 1.1 plenigu la ekranon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.1: MOVI LA KURSORON + Leciono 1.1.1: MOVI LA KURSORON ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** @@ -46,7 +46,7 @@ RIMARKO: La klavoj de la kursoro devus anka vi kapablos moviøi pli rapide post kiam vi kutimiøos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.2: ELIRI EL VIM + Leciono 1.1.2: ELIRI EL VIM !! RIMARKO: Antaý ol plenumi iujn subajn paþojn ajn, legu la tutan lecionon!! @@ -68,7 +68,7 @@ RIMARKO: :q! eliras sen konservi la 5. Movu la kursoron suben øis la leciono 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.3: REDAKTO DE TEKSTO - FORVIÞO + Leciono 1.1.3: REDAKTO DE TEKSTO - FORVIÞO ** Premu x por forviþi la signon sub la kursoro. ** @@ -92,7 +92,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.4: REDAKTO DE TEKSTO - ENMETO + Leciono 1.1.4: REDAKTO DE TEKSTO - ENMETO ** Premu i por enmeti tekston. ** @@ -116,7 +116,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO + Leciono 1.1.5: REDAKTO DE TEKSTO - POSTALDONO ** Premu A por postaldoni tekston. ** @@ -142,13 +142,13 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.6: REDAKTI DOSIERON + Leciono 1.1.6: REDAKTI DOSIERON ** Uzu :wq por konservi dosieron kaj eliri. ** !! RIMARKO: Antaý ol plenumi iun suban paþon ajn, legu la tutan lecionon!! - 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! + 1. Eliru el la instruilo kiel vi faris en la leciono 1.1.2: :q! Aý, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. 2. Æe la þelinvito, tajpu æi tiun komandon: vim tutor @@ -167,7 +167,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1 RESUMO + Leciono 1.1 RESUMO 1. La kursoro moviøas aý per la sagoklavoj, aý per la klavoj hjkl. @@ -193,7 +193,7 @@ Nun da ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.1: KOMANDOJ DE FORVIÞO + Leciono 1.2.1: KOMANDOJ DE FORVIÞO ** Tajpu dw por forviþi vorton. ** @@ -218,7 +218,7 @@ Nun da ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.2: PLIAJ KOMANDOJ DE FORVIÞO + Leciono 1.2.2: PLIAJ KOMANDOJ DE FORVIÞO ** Tajpu d$ por forviþi la finon de la linio. ** @@ -239,7 +239,7 @@ Nun da ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ + Leciono 1.2.3: PRI OPERATOROJ KAJ MOVOJ Multaj komandoj, kiuj þanøas la tekston, estas faritaj de operatoro kaj @@ -264,7 +264,7 @@ RIMARKO: Premo de nur la movo en Normala re ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.4: UZI NOMBRON POR MOVO + Leciono 1.2.4: UZI NOMBRON POR MOVO ** Tajpo de nombro antaý movo ripetas øin laýfoje. ** @@ -285,7 +285,7 @@ RIMARKO: Premo de nur la movo en Normala re ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.5: UZI NOMBRON POR FORVIÞI PLI + Leciono 1.2.5: UZI NOMBRON POR FORVIÞI PLI ** Tajpo de nombro kun operatoro ripetas øin laýfoje. ** @@ -305,7 +305,7 @@ RIMARKO: Premo de nur la movo en Normala re ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.6: OPERACII SUR LINIOJ + Leciono 1.2.6: OPERACII SUR LINIOJ ** Tajpu dd por forviþi tutan linion. ** @@ -328,7 +328,7 @@ RIMARKO: Premo de nur la movo en Normala re ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.7: LA KOMANDO DE MALFARO + Leciono 1.2.7: LA KOMANDO DE MALFARO ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** @@ -345,11 +345,11 @@ RIMARKO: Premo de nur la movo en Normala re ---> Koorektii la erarojn sur tiuu æi liniio kaj remettu illlin per malfaro. - 8. Tiuj estas tre utilaj komandoj. Nun moviøu al la leciono 2 RESUMO. + 8. Tiuj estas tre utilaj komandoj. Nun moviøu al la leciono 1.2 RESUMO. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2 RESUMO + Leciono 1.2 RESUMO 1. Por forviþi ekde la kursoro øis la sekvanta vorto, tajpu: dw @@ -463,7 +463,7 @@ RIMARKO: Vi povas uzi la klavon Retropa ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3 RESUMO + Leciono 1.3 RESUMO 1. Por remeti tekston, kiun vi ¼us forviþis, tajpu p. Tio metas la @@ -485,7 +485,7 @@ Nun da ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO + Leciono 1.4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. @@ -511,7 +511,7 @@ Nun da ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.2 LA KOMANDO DE SERÆO + Leciono 1.4.2: LA KOMANDO DE SERÆO ** Tajpu / kaj poste frazon por seræi la frazon. ** @@ -537,7 +537,7 @@ RIMARKO: Kiam la ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.3 SERÆO DE KONGRUAJ KRAMPOJ + Leciono 1.4.3: SERÆO DE KONGRUAJ KRAMPOJ ** Tajpu % por trovi kongruan ), ] aý } ** @@ -557,7 +557,7 @@ RIMARKO: Kiam la ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.4 LA KOMANDO DE ANSTATAýIGO + Leciono 1.4.4: LA KOMANDO DE ANSTATAýIGO ** Tajpu :s/malnova/nova/g por anstataýigi 'nova' per 'malnova'. ** @@ -585,7 +585,7 @@ RIMARKO: Kiam la ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4 RESUMO + Leciono 1.4 RESUMO 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. G movas la kursoron al la fino de la dosiero. @@ -609,7 +609,7 @@ RIMARKO: Kiam la ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON + Leciono 1.5.1: KIEL PLENUMI EKSTERAN KOMANDON ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** @@ -632,7 +632,7 @@ RIMARKO: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.2 PLI PRI KONSERVO DE DOSIERO + Leciono 1.5.2: PLI PRI KONSERVO DE DOSIERO ** Por konservi la faritajn þanøojn en la teksto, tajpu :w DOSIERNOMO. ** @@ -657,7 +657,7 @@ RIMARKO: Se vi volus eliri el Vim kaj restartigi ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.3 APARTIGI KONSERVENDAN TESTON + Leciono 1.5.3: APARTIGI KONSERVENDAN TESTON ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** @@ -683,7 +683,7 @@ RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN + Leciono 1.5.4: AKIRI KAJ KUNFANDI DOSIEROJN ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** @@ -707,7 +707,7 @@ RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5 RESUMO + Leciono 1.5 RESUMO 1. :!komando plenumas eksteran komandon. @@ -731,7 +731,7 @@ RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.1 LA KOMANDO DE MALFERMO + Leciono 1.6.1: LA KOMANDO DE MALFERMO ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reøimon. ** @@ -753,7 +753,7 @@ RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.2 LA KOMANDO DE POSTALDONO + Leciono 1.6.2: LA KOMANDO DE POSTALDONO ** Tajpu a por enmeti POST la kursoro. ** @@ -778,7 +778,7 @@ RIMARKO: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.3 ALIA MANIERO POR ANSTATAÝIGI + Leciono 1.6.3: ALIA MANIERO POR ANSTATAÝIGI ** Tajpu majusklan R por anstataýigi pli ol unu signo. ** @@ -802,7 +802,7 @@ RIMARKO: Anstata ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.4 KOPII KAJ ALGLUI TEKSTON + Leciono 1.6.4: KOPII KAJ ALGLUI TEKSTON ** Uzu la y operatoron por kopii tekston, kaj p por alglui øin ** @@ -829,7 +829,7 @@ RIMARKO: vi povas anka ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.5 AGORDI OPCION + Leciono 1.6.5: AGORDI OPCION ** Agordu opcion por ke seræo aý anstataýigo ignoru usklecon ** @@ -854,7 +854,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6 RESUMO + Leciono 1.6 RESUMO 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reøimo. 1. Tajpu O por malfermi linion SUPER la kursoro. @@ -879,7 +879,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.1 AKIRI HELPON + Leciono 1.7.1: AKIRI HELPON ** Uzu la helpan sistemon ** @@ -904,7 +904,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.2 KREI STARTAN SKRIPTON + Leciono 1.7.2: KREI STARTAN SKRIPTON ** Ebligu kapablojn de Vim ** @@ -928,7 +928,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu ser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.3 KOMPLETIGO + Leciono 1.7.3: KOMPLETIGO ** Kompletigo de komanda linio per CTRL-D kaj ** @@ -951,7 +951,7 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj . Estas aparte utila por :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7 RESUMO + Leciono 1.7 RESUMO 1. Tajpu :help aý premu por malfermi helpan fenestron. diff --git a/runtime/tutor/tutor.eo.utf-8 b/runtime/tutor/tutor1.eo.utf-8 similarity index 93% rename from runtime/tutor/tutor.eo.utf-8 rename to runtime/tutor/tutor1.eo.utf-8 index 1feeeb93fe..52daa8fc70 100644 --- a/runtime/tutor/tutor.eo.utf-8 +++ b/runtime/tutor/tutor1.eo.utf-8 @@ -23,7 +23,7 @@ ke la leciono 1.1 plenigu la ekranon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.1: MOVI LA KURSORON + Leciono 1.1.1: MOVI LA KURSORON ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** @@ -46,7 +46,7 @@ RIMARKO: La klavoj de la kursoro devus ankaÅ­ funkcii. Sed uzante hjkl, vi kapablos moviÄi pli rapide post kiam vi kutimiÄos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.2: ELIRI EL VIM + Leciono 1.1.2: ELIRI EL VIM !! RIMARKO: AntaÅ­ ol plenumi iujn subajn paÅojn ajn, legu la tutan lecionon!! @@ -68,7 +68,7 @@ RIMARKO: :q! eliras sen konservi la ÅanÄojn, kiujn vi faris. 5. Movu la kursoron suben Äis la leciono 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.3: REDAKTO DE TEKSTO - FORVIÅœO + Leciono 1.1.3: REDAKTO DE TEKSTO - FORVIÅœO ** Premu x por forviÅi la signon sub la kursoro. ** @@ -92,7 +92,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.4: REDAKTO DE TEKSTO - ENMETO + Leciono 1.1.4: REDAKTO DE TEKSTO - ENMETO ** Premu i por enmeti tekston. ** @@ -116,7 +116,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO + Leciono 1.1.5: REDAKTO DE TEKSTO - POSTALDONO ** Premu A por postaldoni tekston. ** @@ -142,13 +142,13 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.6: REDAKTI DOSIERON + Leciono 1.1.6: REDAKTI DOSIERON ** Uzu :wq por konservi dosieron kaj eliri. ** !! RIMARKO: AntaÅ­ ol plenumi iun suban paÅon ajn, legu la tutan lecionon!! - 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! + 1. Eliru el la instruilo kiel vi faris en la leciono 1.1.2: :q! AÅ­, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. 2. Ĉe la Åelinvito, tajpu ĉi tiun komandon: vim tutor @@ -167,7 +167,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1 RESUMO + Leciono 1.1 RESUMO 1. La kursoro moviÄas aÅ­ per la sagoklavoj, aÅ­ per la klavoj hjkl. @@ -193,7 +193,7 @@ Nun daÅ­rigu al la leciono 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.1: KOMANDOJ DE FORVIÅœO + Leciono 1.2.1: KOMANDOJ DE FORVIÅœO ** Tajpu dw por forviÅi vorton. ** @@ -218,7 +218,7 @@ Nun daÅ­rigu al la leciono 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.2: PLIAJ KOMANDOJ DE FORVIÅœO + Leciono 1.2.2: PLIAJ KOMANDOJ DE FORVIÅœO ** Tajpu d$ por forviÅi la finon de la linio. ** @@ -239,7 +239,7 @@ Nun daÅ­rigu al la leciono 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ + Leciono 1.2.3: PRI OPERATOROJ KAJ MOVOJ Multaj komandoj, kiuj ÅanÄas la tekston, estas faritaj de operatoro kaj @@ -264,7 +264,7 @@ RIMARKO: Premo de nur la movo en Normala reÄimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.4: UZI NOMBRON POR MOVO + Leciono 1.2.4: UZI NOMBRON POR MOVO ** Tajpo de nombro antaÅ­ movo ripetas Äin laÅ­foje. ** @@ -285,7 +285,7 @@ RIMARKO: Premo de nur la movo en Normala reÄimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.5: UZI NOMBRON POR FORVIÅœI PLI + Leciono 1.2.5: UZI NOMBRON POR FORVIÅœI PLI ** Tajpo de nombro kun operatoro ripetas Äin laÅ­foje. ** @@ -305,7 +305,7 @@ RIMARKO: Premo de nur la movo en Normala reÄimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.6: OPERACII SUR LINIOJ + Leciono 1.2.6: OPERACII SUR LINIOJ ** Tajpu dd por forviÅi tutan linion. ** @@ -328,7 +328,7 @@ RIMARKO: Premo de nur la movo en Normala reÄimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.7: LA KOMANDO DE MALFARO + Leciono 1.2.7: LA KOMANDO DE MALFARO ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** @@ -345,11 +345,11 @@ RIMARKO: Premo de nur la movo en Normala reÄimo sen operatoro movos ---> Koorektii la erarojn sur tiuu ĉi liniio kaj remettu illlin per malfaro. - 8. Tiuj estas tre utilaj komandoj. Nun moviÄu al la leciono 2 RESUMO. + 8. Tiuj estas tre utilaj komandoj. Nun moviÄu al la leciono 1.2 RESUMO. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2 RESUMO + Leciono 1.2 RESUMO 1. Por forviÅi ekde la kursoro Äis la sekvanta vorto, tajpu: dw @@ -463,7 +463,7 @@ RIMARKO: Vi povas uzi la klavon RetropaÅo por korekti erarojn dum vi tajpas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3 RESUMO + Leciono 1.3 RESUMO 1. Por remeti tekston, kiun vi ĵus forviÅis, tajpu p. Tio metas la @@ -485,7 +485,7 @@ Nun daÅ­rigu al la sekvanta leciono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO + Leciono 1.4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. @@ -511,7 +511,7 @@ Nun daÅ­rigu al la sekvanta leciono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.2 LA KOMANDO DE SERĈO + Leciono 1.4.2: LA KOMANDO DE SERĈO ** Tajpu / kaj poste frazon por serĉi la frazon. ** @@ -537,7 +537,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, Äi daÅ­ras ĉe la ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ + Leciono 1.4.3: SERĈO DE KONGRUAJ KRAMPOJ ** Tajpu % por trovi kongruan ), ] aÅ­ } ** @@ -557,7 +557,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, Äi daÅ­ras ĉe la ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.4 LA KOMANDO DE ANSTATAÅ­IGO + Leciono 1.4.4: LA KOMANDO DE ANSTATAÅ­IGO ** Tajpu :s/malnova/nova/g por anstataÅ­igi 'nova' per 'malnova'. ** @@ -585,7 +585,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, Äi daÅ­ras ĉe la ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4 RESUMO + Leciono 1.4 RESUMO 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. G movas la kursoron al la fino de la dosiero. @@ -609,7 +609,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, Äi daÅ­ras ĉe la ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON + Leciono 1.5.1: KIEL PLENUMI EKSTERAN KOMANDON ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** @@ -632,7 +632,7 @@ RIMARKO: Ĉiuj : komandoj devas finiÄi per tajpo de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.2 PLI PRI KONSERVO DE DOSIERO + Leciono 1.5.2: PLI PRI KONSERVO DE DOSIERO ** Por konservi la faritajn ÅanÄojn en la teksto, tajpu :w DOSIERNOMO. ** @@ -657,7 +657,7 @@ RIMARKO: Se vi volus eliri el Vim kaj restartigi Äin denove per vim TESTO, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.3 APARTIGI KONSERVENDAN TESTON + Leciono 1.5.3: APARTIGI KONSERVENDAN TESTON ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** @@ -683,7 +683,7 @@ RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN + Leciono 1.5.4: AKIRI KAJ KUNFANDI DOSIEROJN ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** @@ -707,7 +707,7 @@ RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5 RESUMO + Leciono 1.5 RESUMO 1. :!komando plenumas eksteran komandon. @@ -731,7 +731,7 @@ RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.1 LA KOMANDO DE MALFERMO + Leciono 1.6.1: LA KOMANDO DE MALFERMO ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reÄimon. ** @@ -753,7 +753,7 @@ RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.2 LA KOMANDO DE POSTALDONO + Leciono 1.6.2: LA KOMANDO DE POSTALDONO ** Tajpu a por enmeti POST la kursoro. ** @@ -778,7 +778,7 @@ RIMARKO: Ĉiu a, i kaj A iras al la sama Enmeta reÄimo, la nura malsamo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.3 ALIA MANIERO POR ANSTATAŬIGI + Leciono 1.6.3: ALIA MANIERO POR ANSTATAŬIGI ** Tajpu majusklan R por anstataÅ­igi pli ol unu signo. ** @@ -802,7 +802,7 @@ RIMARKO: AnstataÅ­iga reÄimo estas same kiel Enmeta reÄimo, sed ĉiu signo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.4 KOPII KAJ ALGLUI TEKSTON + Leciono 1.6.4: KOPII KAJ ALGLUI TEKSTON ** Uzu la y operatoron por kopii tekston, kaj p por alglui Äin ** @@ -829,7 +829,7 @@ RIMARKO: vi povas ankaÅ­ uzi y kiel operatoro; yw kopias unu vorton. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.5 AGORDI OPCION + Leciono 1.6.5: AGORDI OPCION ** Agordu opcion por ke serĉo aÅ­ anstataÅ­igo ignoru usklecon ** @@ -854,7 +854,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6 RESUMO + Leciono 1.6 RESUMO 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reÄimo. 1. Tajpu O por malfermi linion SUPER la kursoro. @@ -879,7 +879,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.1 AKIRI HELPON + Leciono 1.7.1: AKIRI HELPON ** Uzu la helpan sistemon ** @@ -904,7 +904,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.2 KREI STARTAN SKRIPTON + Leciono 1.7.2: KREI STARTAN SKRIPTON ** Ebligu kapablojn de Vim ** @@ -928,7 +928,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.3 KOMPLETIGO + Leciono 1.7.3: KOMPLETIGO ** Kompletigo de komanda linio per CTRL-D kaj ** @@ -951,7 +951,7 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj . Estas aparte utila por :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7 RESUMO + Leciono 1.7 RESUMO 1. Tajpu :help aÅ­ premu aÅ­ por malfermi helpan fenestron. diff --git a/runtime/tutor/tutor.es b/runtime/tutor/tutor1.es similarity index 94% rename from runtime/tutor/tutor.es rename to runtime/tutor/tutor1.es index 7af322cccb..c92f494742 100644 --- a/runtime/tutor/tutor.es +++ b/runtime/tutor/tutor1.es @@ -20,9 +20,9 @@ Ahora, asegúrese de que la tecla de bloqueo de mayúsculas NO está activada y pulse la tecla j lo suficiente para mover el cursor - de forma que la Lección 1.1 ocupe completamente la pantalla. + de forma que la Lección 1.1.1 ocupe completamente la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.1: MOVER EL CURSOR + Lección 1.1.1: MOVER EL CURSOR ** Para mover el cursor, pulse las teclas h,j,k,l de la forma indicada. ** ^ @@ -36,7 +36,7 @@ 2. Mantenga pulsada la tecla (j) hasta que se repita «automágicamente». Ahora ya sabe como llegar a la lección siguiente. - 3. Utilizando la tecla abajo, vaya a la lección 1.2. + 3. Utilizando la tecla abajo, vaya a la lección 1.1.2. NOTA: Si alguna vez no está seguro sobre algo que ha tecleado, pulse para situarse en modo Normal. Luego vuelva a teclear la orden que deseaba. @@ -46,7 +46,7 @@ NOTA: Las teclas de movimiento del cursor tambi ¡De verdad! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.2: SALIR DE VIM + Lección 1.1.2: SALIR DE VIM ¡¡ NOTA: Antes de ejecutar alguno de los siguientes pasos lea primero la lección entera!! @@ -65,11 +65,11 @@ NOTA: Las teclas de movimiento del cursor tambi NOTA: :q! descarta cualquier cambio que haya realizado. En próximas lecciones aprenderá cómo guardar los cambios en un archivo. - 5. Mueva el cursor hasta la Lección 1.3. + 5. Mueva el cursor hasta la Lección 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.3: EDITAR TEXTO - BORRAR + Lección 1.1.3: EDITAR TEXTO - BORRAR ** Pulse x para eliminar el carácter bajo el cursor. ** @@ -84,14 +84,14 @@ NOTA: :q! descarta cualquier cambio que haya realizado. ---> La vvaca saltóó soobree laa luuuuna. - 5. Ahora que la línea esta correcta, continúe con la Lección 1.4. + 5. Ahora que la línea esta correcta, continúe con la Lección 1.1.4. NOTA: A medida que vaya avanzando en este tutor no intente memorizar, aprenda practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.4: EDITAR TEXTO - INSERTAR + Lección 1.1.4: EDITAR TEXTO - INSERTAR ** Pulse i para insertar texto. ** @@ -109,11 +109,11 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, ---> Flta texto en esta . ---> Falta algo de texto en esta línea. - 5. Cuando se sienta cómodo insertando texto pase vaya a la lección 1.5. + 5. Cuando se sienta cómodo insertando texto pase vaya a la lección 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.5: EDITAR TEXTO - AÑADIR + Lección 1.1.5: EDITAR TEXTO - AÑADIR ** Pulse A para añadir texto. ** @@ -133,17 +133,17 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, ---> También falta alg También falta algún texto aquí. - 5. Cuando se sienta cómodo añadiendo texto pase a la lección 1.6. + 5. Cuando se sienta cómodo añadiendo texto pase a la lección 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.6: EDITAR UN ARCHIVO + Lección 1.1.6: EDITAR UN ARCHIVO ** Use :wq para guardar un archivo y salir ** !! NOTA: Antes de ejecutar los siguientes pasos, lea la lección entera!! 1. Si tiene acceso a otra terminal, haga lo siguiente en ella. - Si no es así, salga de este tutor como hizo en la lección 1.2: :q! + Si no es así, salga de este tutor como hizo en la lección 1.1.2: :q! 2. En el símbolo del sistema escriba este comando: vim archivo.txt 'vim' es el comando para arrancar el editor Vim, 'archivo.txt' @@ -160,7 +160,7 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, 6. Después de leer los pasos anteriores y haberlos entendido: hágalos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 1 + RESUMEN DE LA LECCIÓN 1.1 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. @@ -182,10 +182,10 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, NOTA: Pulsando se vuelve al modo Normal o cancela una orden no deseada o incompleta. -Ahora continúe con la Lección 2. +Ahora continúe con la Lección 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.1: COMANDOS PARA BORRAR + Lección 1.2.1: COMANDOS PARA BORRAR ** Escriba dw para borrar una palabra ** @@ -207,11 +207,11 @@ Ahora contin ---> Hay algunas palabras pásalo bien que no pertenecen papel a esta frase. 5. Repita los pasos 3 y 4 hasta que la frase sea correcta y pase a la - lección 2.2. + lección 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.2: MÁS COMANDOS PARA BORRAR + Lección 1.2.2: MÁS COMANDOS PARA BORRAR ** Escriba d$ para borrar hasta el final de la línea. ** @@ -226,12 +226,12 @@ Ahora contin ---> Alguien ha escrito el final de esta línea dos veces. esta línea dos veces. - 5. Pase a la lección 2.3 para entender qué está pasando. + 5. Pase a la lección 1.2.3 para entender qué está pasando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.3: SOBRE OPERADORES Y MOVIMIENTOS + Lección 1.2.3: SOBRE OPERADORES Y MOVIMIENTOS Muchos comandos que cambian texto están compuestos por un operador y un @@ -258,7 +258,7 @@ NOTA: Pulsando operador, moverá el cursor como se especifica en la lista anterior. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.4: UTILIZAR UN CONTADOR PARA UN MOVIMIENTO + Lección 1.2.4: UTILIZAR UN CONTADOR PARA UN MOVIMIENTO ** Al escribir un número antes de un movimiento, lo repite esas veces. ** @@ -276,13 +276,13 @@ NOTA: Pulsando ---> Esto es solo una línea con palabras donde poder moverse. - 6. Pase a la lección 2.5. + 6. Pase a la lección 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.5: UTILIZAR UN CONTADOR PARA BORRAR MAS + Lección 1.2.5: UTILIZAR UN CONTADOR PARA BORRAR MAS ** Al escribir un número con un operador lo repite esas veces. ** @@ -306,7 +306,7 @@ NOTA: Pulsando ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.6: OPERACIÓN EN LÍNEAS + Lección 1.2.6: OPERACIÓN EN LÍNEAS ** Escriba dd para eliminar una línea completa. ** @@ -332,7 +332,7 @@ La duplicaci mencionados anteriormente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.7: EL MANDATO DESHACER + Lección 1.2.7: EL MANDATO DESHACER ** Pulse u para deshacer los últimos comandos, @@ -352,13 +352,13 @@ mencionados anteriormente. ---> Corrrija los errores dee esttta línea y vuuelva a ponerlos coon deshacer. 8. Estos son unos comandos muy útiles. Ahora vayamos al resumen de la - lección 2. + lección 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 2 + RESUMEN DE LA LECCIÓN 1.2 1. Para borrar desde el cursor hasta siguiente palabra pulse: dw 2. Para borrar desde el cursor hasta el final de la palabra pulse: de @@ -381,7 +381,7 @@ mencionados anteriormente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.1: EL COMANDO «PUT» (poner) + Lección 1.3.1: EL COMANDO «PUT» (poner) ** Pulse p para poner (pegar) después del cursor lo último que ha borrado. ** @@ -403,7 +403,7 @@ mencionados anteriormente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.2: EL COMANDO REEMPLAZAR + Lección 1.3.2: EL COMANDO REEMPLAZAR ** Pulse rx para reemplazar el carácter bajo el cursor con x . ** @@ -419,14 +419,14 @@ mencionados anteriormente. ---> ¡Cuendo esta línea fue rscrita alguien pulso algunas teclas equibocadas! ---> ¡Cuando esta línea fue escrita alguien pulsó algunas teclas equivocadas! - 5. Ahora pase a la lección 3.3. + 5. Ahora pase a la lección 1.3.3. NOTA: Recuerde que debería aprender practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.3: EL COMANDO CAMBIAR + Lección 1.3.3: EL COMANDO CAMBIAR ** Para cambiar hasta el final de una palabra, escriba ce . ** @@ -449,7 +449,7 @@ Tenga en cuenta que ce elimina la palabra y entra en el modo Insertar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.4: MÁS CAMBIOS USANDO c + Lección 1.3.4: MÁS CAMBIOS USANDO c ** El operador change se utiliza con los mismos movimientos que delete. ** @@ -473,7 +473,7 @@ Tenga en cuenta que ce elimina la palabra y entra en el modo Insertar. NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 3 + RESUMEN DE LA LECCIÓN 1.3 1. Para volver a poner o pegar el texto que acaba de ser borrado, @@ -496,7 +496,7 @@ NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.1: UBICACIÓN DEL CURSOR Y ESTADO DEL ARCHIVO + Lección 1.4.1: UBICACIÓN DEL CURSOR Y ESTADO DEL ARCHIVO ** Pulse CTRL-G para mostrar su situación en el fichero y su estado. Pulse G para moverse a una determinada línea del fichero. ** @@ -521,7 +521,7 @@ NOTA: Quiz 4. Si se siente seguro en poder hacer esto ejecute los pasos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.2: EL COMANDO «SEARCH» (buscar) + Lección 1.4.2: EL COMANDO «SEARCH» (buscar) ** Escriba / seguido de una frase para buscar la frase. ** @@ -547,7 +547,7 @@ NOTA: Cuando la b comienzo, a menos que la opción 'wrapscan' haya sido desactivada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.3: BÚSQUEDA PARA COMPROBAR PARÉNTESIS + Lección 1.4.3: BÚSQUEDA PARA COMPROBAR PARÉNTESIS ** Pulse % para encontrar el paréntesis correspondiente a ),] o } . ** @@ -571,7 +571,7 @@ NOTA: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.4: EL COMANDO SUSTITUIR + Lección 1.4.4: EL COMANDO SUSTITUIR ** Escriba :s/viejo/nuevo/g para sustituir 'viejo' por 'nuevo'. ** @@ -597,7 +597,7 @@ NOTA: realizar la sustitución o no. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 4 + RESUMEN DE LA LECCIÓN 1.4 1. CTRL-G muestra la posición del cursor en el fichero y su estado. @@ -621,7 +621,7 @@ NOTA: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.1: CÓMO EJECUTAR UN MANDATO EXTERNO + Lección 1.5.1: CÓMO EJECUTAR UN MANDATO EXTERNO ** Escriba :! seguido de un comando externo para ejecutar ese comando. ** @@ -644,7 +644,7 @@ NOTA: Todos los comando : deben finalizarse pulsando . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.2: MÁS SOBRE GUARDAR FICHEROS + Lección 1.5.2: MÁS SOBRE GUARDAR FICHEROS ** Para guardar los cambios hechos en un fichero, @@ -669,7 +669,7 @@ NOTA: Si saliera de Vim y volviera a entrar de nuevo con vim TEST , el ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.3: SELECCIONAR TEXTO PARA GUARDAR + Lección 1.5.3: SELECCIONAR TEXTO PARA GUARDAR ** Para guardar parte del archivo, escriba v movimiento :w ARCHIVO ** @@ -696,14 +696,14 @@ NOTA: Al pulsar v inicia la selecci ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.4: RECUPERANDO Y MEZCLANDO FICHEROS + Lección 1.5.4: RECUPERANDO Y MEZCLANDO FICHEROS ** Para insertar el contenido de un fichero escriba :r NOMBRE_DEL_FICHERO ** 1. Sitúe el cursor justo por encima de esta línea. -NOTA: Después de ejecutar el paso 2 verá texto de la lección 5.3. Después +NOTA: Después de ejecutar el paso 2 verá texto de la lección 1.5.3. Después DESCIENDA hasta ver de nuevo esta lección. 2. Ahora recupere el archivo TEST utilizando el comando :r TEST donde @@ -712,7 +712,7 @@ NOTA: Despu se encuentra el cursor. 3. Para verificar que se ha recuperado el archivo, suba el cursor y - compruebe que ahora hay dos copias de la lección 5.3, la original y + compruebe que ahora hay dos copias de la lección 1.5.3, la original y la versión del archivo. NOTA: También puede leer la salida de un comando externo. Por ejemplo, @@ -721,7 +721,7 @@ NOTA: Tambi ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 5 + RESUMEN DE LA LECCIÓN 1.5 1. :!comando ejecuta un comando externo. @@ -745,7 +745,7 @@ NOTA: Tambi ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.1: EL COMANDO OPEN + Lección 1.6.1: EL COMANDO OPEN ** Pulse o para abrir una línea debajo del cursor @@ -769,7 +769,7 @@ NOTA: Tambi ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.2: EL COMANDO APPEND (añadir) + Lección 1.6.2: EL COMANDO APPEND (añadir) ** Pulse a para insertar texto DESPUÉS del cursor. ** @@ -793,7 +793,7 @@ NOTA: a, i y A todos entran en el modo Insertar, la dónde ubican los caracteres insertados. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.3: OTRA VERSIÓN DE REPLACE (remplazar) + Lección 1.6.3: OTRA VERSIÓN DE REPLACE (remplazar) ** Pulse una R mayúscula para sustituir más de un carácter. ** @@ -816,7 +816,7 @@ NOTA: El modo Reemplazar es como el modo Insertar, pero cada car elimina un carácter ya existente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.4: COPIAR Y PEGAR TEXTO + Lección 1.6.4: COPIAR Y PEGAR TEXTO @@ -845,7 +845,7 @@ NOTA: Tambi esa línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.5: ACTIVAR (SET) UNA OPCIÓN + Lección 1.6.5: ACTIVAR (SET) UNA OPCIÓN ** Active una opción para buscar o sustituir ignorando si está @@ -871,7 +871,7 @@ NOTA: Para eliminar el resaltado de las coincidencias escriba: :nohlsearch NOTA: Si quiere ignorar las mayúsculas y minúsculas, solo para un comando de búsqueda, utilice \c en la frase: /ignorar\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 6 + RESUMEN DE LA LECCIÓN 1.6 1. Escriba o para abrir una línea por DEBAJO de la posición del cursor y @@ -922,7 +922,7 @@ NOTA: Si quiere ignorar las may :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 7.2: CREAR UN SCRIPT DE INICIO + Lección 1.7.2: CREAR UN SCRIPT DE INICIO ** Habilitar funcionalidades en Vim ** @@ -947,7 +947,7 @@ NOTA: Si quiere ignorar las may Para más información escriba :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 7.3: COMPLETADO + Lección 1.7.3: COMPLETADO ** Completado de la línea de comandos con CTRL-D o ** @@ -970,7 +970,7 @@ NOTA: El completado funciona con muchos comandos. Solo pulse CTRL-D o . Es especialmente útil para :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 7 + RESUMEN DE LA LECCIÓN 1.7 1. Escriba :help o pulse o para abrir la ventana de ayuda. diff --git a/runtime/tutor/tutor.es.utf-8 b/runtime/tutor/tutor1.es.utf-8 similarity index 94% rename from runtime/tutor/tutor.es.utf-8 rename to runtime/tutor/tutor1.es.utf-8 index c6f4bab4f9..0d3ac4fa64 100644 --- a/runtime/tutor/tutor.es.utf-8 +++ b/runtime/tutor/tutor1.es.utf-8 @@ -20,9 +20,9 @@ Ahora, asegúrese de que la tecla de bloqueo de mayúsculas NO está activada y pulse la tecla j lo suficiente para mover el cursor - de forma que la Lección 1.1 ocupe completamente la pantalla. + de forma que la Lección 1.1.1 ocupe completamente la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.1: MOVER EL CURSOR + Lección 1.1.1: MOVER EL CURSOR ** Para mover el cursor, pulse las teclas h,j,k,l de la forma indicada. ** ^ @@ -36,7 +36,7 @@ 2. Mantenga pulsada la tecla (j) hasta que se repita «automágicamente». Ahora ya sabe como llegar a la lección siguiente. - 3. Utilizando la tecla abajo, vaya a la lección 1.2. + 3. Utilizando la tecla abajo, vaya a la lección 1.1.2. NOTA: Si alguna vez no está seguro sobre algo que ha tecleado, pulse para situarse en modo Normal. Luego vuelva a teclear la orden que deseaba. @@ -46,7 +46,7 @@ NOTA: Las teclas de movimiento del cursor también funcionan. Pero usando ¡De verdad! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.2: SALIR DE VIM + Lección 1.1.2: SALIR DE VIM ¡¡ NOTA: Antes de ejecutar alguno de los siguientes pasos lea primero la lección entera!! @@ -65,11 +65,11 @@ NOTA: Las teclas de movimiento del cursor también funcionan. Pero usando NOTA: :q! descarta cualquier cambio que haya realizado. En próximas lecciones aprenderá cómo guardar los cambios en un archivo. - 5. Mueva el cursor hasta la Lección 1.3. + 5. Mueva el cursor hasta la Lección 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.3: EDITAR TEXTO - BORRAR + Lección 1.1.3: EDITAR TEXTO - BORRAR ** Pulse x para eliminar el carácter bajo el cursor. ** @@ -84,14 +84,14 @@ NOTA: :q! descarta cualquier cambio que haya realizado. ---> La vvaca saltóó soobree laa luuuuna. - 5. Ahora que la línea esta correcta, continúe con la Lección 1.4. + 5. Ahora que la línea esta correcta, continúe con la Lección 1.1.4. NOTA: A medida que vaya avanzando en este tutor no intente memorizar, aprenda practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.4: EDITAR TEXTO - INSERTAR + Lección 1.1.4: EDITAR TEXTO - INSERTAR ** Pulse i para insertar texto. ** @@ -109,11 +109,11 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, ---> Flta texto en esta . ---> Falta algo de texto en esta línea. - 5. Cuando se sienta cómodo insertando texto pase vaya a la lección 1.5. + 5. Cuando se sienta cómodo insertando texto pase vaya a la lección 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.5: EDITAR TEXTO - AÑADIR + Lección 1.1.5: EDITAR TEXTO - AÑADIR ** Pulse A para añadir texto. ** @@ -133,17 +133,17 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, ---> También falta alg También falta algún texto aquí. - 5. Cuando se sienta cómodo añadiendo texto pase a la lección 1.6. + 5. Cuando se sienta cómodo añadiendo texto pase a la lección 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.6: EDITAR UN ARCHIVO + Lección 1.1.6: EDITAR UN ARCHIVO ** Use :wq para guardar un archivo y salir ** !! NOTA: Antes de ejecutar los siguientes pasos, lea la lección entera!! 1. Si tiene acceso a otra terminal, haga lo siguiente en ella. - Si no es así, salga de este tutor como hizo en la lección 1.2: :q! + Si no es así, salga de este tutor como hizo en la lección 1.1.2: :q! 2. En el símbolo del sistema escriba este comando: vim archivo.txt 'vim' es el comando para arrancar el editor Vim, 'archivo.txt' @@ -160,7 +160,7 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, 6. Después de leer los pasos anteriores y haberlos entendido: hágalos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 1 + RESUMEN DE LA LECCIÓN 1.1 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. @@ -182,10 +182,10 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, NOTA: Pulsando se vuelve al modo Normal o cancela una orden no deseada o incompleta. -Ahora continúe con la Lección 2. +Ahora continúe con la Lección 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.1: COMANDOS PARA BORRAR + Lección 1.2.1: COMANDOS PARA BORRAR ** Escriba dw para borrar una palabra ** @@ -207,11 +207,11 @@ Ahora continúe con la Lección 2. ---> Hay algunas palabras pásalo bien que no pertenecen papel a esta frase. 5. Repita los pasos 3 y 4 hasta que la frase sea correcta y pase a la - lección 2.2. + lección 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.2: MÃS COMANDOS PARA BORRAR + Lección 1.2.2: MÃS COMANDOS PARA BORRAR ** Escriba d$ para borrar hasta el final de la línea. ** @@ -226,12 +226,12 @@ Ahora continúe con la Lección 2. ---> Alguien ha escrito el final de esta línea dos veces. esta línea dos veces. - 5. Pase a la lección 2.3 para entender qué está pasando. + 5. Pase a la lección 1.2.3 para entender qué está pasando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.3: SOBRE OPERADORES Y MOVIMIENTOS + Lección 1.2.3: SOBRE OPERADORES Y MOVIMIENTOS Muchos comandos que cambian texto están compuestos por un operador y un @@ -258,7 +258,7 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un operador, moverá el cursor como se especifica en la lista anterior. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.4: UTILIZAR UN CONTADOR PARA UN MOVIMIENTO + Lección 1.2.4: UTILIZAR UN CONTADOR PARA UN MOVIMIENTO ** Al escribir un número antes de un movimiento, lo repite esas veces. ** @@ -276,13 +276,13 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un ---> Esto es solo una línea con palabras donde poder moverse. - 6. Pase a la lección 2.5. + 6. Pase a la lección 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.5: UTILIZAR UN CONTADOR PARA BORRAR MAS + Lección 1.2.5: UTILIZAR UN CONTADOR PARA BORRAR MAS ** Al escribir un número con un operador lo repite esas veces. ** @@ -306,7 +306,7 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.6: OPERACIÓN EN LÃNEAS + Lección 1.2.6: OPERACIÓN EN LÃNEAS ** Escriba dd para eliminar una línea completa. ** @@ -332,7 +332,7 @@ La duplicación para borrar líneas también funcionan con los operadores mencionados anteriormente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.7: EL MANDATO DESHACER + Lección 1.2.7: EL MANDATO DESHACER ** Pulse u para deshacer los últimos comandos, @@ -352,13 +352,13 @@ mencionados anteriormente. ---> Corrrija los errores dee esttta línea y vuuelva a ponerlos coon deshacer. 8. Estos son unos comandos muy útiles. Ahora vayamos al resumen de la - lección 2. + lección 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 2 + RESUMEN DE LA LECCIÓN 1.2 1. Para borrar desde el cursor hasta siguiente palabra pulse: dw 2. Para borrar desde el cursor hasta el final de la palabra pulse: de @@ -381,7 +381,7 @@ mencionados anteriormente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.1: EL COMANDO «PUT» (poner) + Lección 1.3.1: EL COMANDO «PUT» (poner) ** Pulse p para poner (pegar) después del cursor lo último que ha borrado. ** @@ -403,7 +403,7 @@ mencionados anteriormente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.2: EL COMANDO REEMPLAZAR + Lección 1.3.2: EL COMANDO REEMPLAZAR ** Pulse rx para reemplazar el carácter bajo el cursor con x . ** @@ -419,14 +419,14 @@ mencionados anteriormente. ---> ¡Cuendo esta línea fue rscrita alguien pulso algunas teclas equibocadas! ---> ¡Cuando esta línea fue escrita alguien pulsó algunas teclas equivocadas! - 5. Ahora pase a la lección 3.3. + 5. Ahora pase a la lección 1.3.3. NOTA: Recuerde que debería aprender practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.3: EL COMANDO CAMBIAR + Lección 1.3.3: EL COMANDO CAMBIAR ** Para cambiar hasta el final de una palabra, escriba ce . ** @@ -449,7 +449,7 @@ Tenga en cuenta que ce elimina la palabra y entra en el modo Insertar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.4: MÃS CAMBIOS USANDO c + Lección 1.3.4: MÃS CAMBIOS USANDO c ** El operador change se utiliza con los mismos movimientos que delete. ** @@ -473,7 +473,7 @@ Tenga en cuenta que ce elimina la palabra y entra en el modo Insertar. NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 3 + RESUMEN DE LA LECCIÓN 1.3 1. Para volver a poner o pegar el texto que acaba de ser borrado, @@ -496,7 +496,7 @@ NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.1: UBICACIÓN DEL CURSOR Y ESTADO DEL ARCHIVO + Lección 1.4.1: UBICACIÓN DEL CURSOR Y ESTADO DEL ARCHIVO ** Pulse CTRL-G para mostrar su situación en el fichero y su estado. Pulse G para moverse a una determinada línea del fichero. ** @@ -521,7 +521,7 @@ NOTA: Quizás pueda ver la posición del cursor en la esquina inferior derecha 4. Si se siente seguro en poder hacer esto ejecute los pasos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.2: EL COMANDO «SEARCH» (buscar) + Lección 1.4.2: EL COMANDO «SEARCH» (buscar) ** Escriba / seguido de una frase para buscar la frase. ** @@ -547,7 +547,7 @@ NOTA: Cuando la búsqueda llega al final del archivo, continuará desde el comienzo, a menos que la opción 'wrapscan' haya sido desactivada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.3: BÚSQUEDA PARA COMPROBAR PARÉNTESIS + Lección 1.4.3: BÚSQUEDA PARA COMPROBAR PARÉNTESIS ** Pulse % para encontrar el paréntesis correspondiente a ),] o } . ** @@ -571,7 +571,7 @@ NOTA: ¡Esto es muy útil en la detección de errores en un programa con ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.4: EL COMANDO SUSTITUIR + Lección 1.4.4: EL COMANDO SUSTITUIR ** Escriba :s/viejo/nuevo/g para sustituir 'viejo' por 'nuevo'. ** @@ -597,7 +597,7 @@ NOTA: ¡Esto es muy útil en la detección de errores en un programa con realizar la sustitución o no. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 4 + RESUMEN DE LA LECCIÓN 1.4 1. CTRL-G muestra la posición del cursor en el fichero y su estado. @@ -621,7 +621,7 @@ NOTA: ¡Esto es muy útil en la detección de errores en un programa con ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.1: CÓMO EJECUTAR UN MANDATO EXTERNO + Lección 1.5.1: CÓMO EJECUTAR UN MANDATO EXTERNO ** Escriba :! seguido de un comando externo para ejecutar ese comando. ** @@ -644,7 +644,7 @@ NOTA: Todos los comando : deben finalizarse pulsando . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.2: MÃS SOBRE GUARDAR FICHEROS + Lección 1.5.2: MÃS SOBRE GUARDAR FICHEROS ** Para guardar los cambios hechos en un fichero, @@ -669,7 +669,7 @@ NOTA: Si saliera de Vim y volviera a entrar de nuevo con vim TEST , el ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.3: SELECCIONAR TEXTO PARA GUARDAR + Lección 1.5.3: SELECCIONAR TEXTO PARA GUARDAR ** Para guardar parte del archivo, escriba v movimiento :w ARCHIVO ** @@ -696,14 +696,14 @@ NOTA: Al pulsar v inicia la selección visual. Puede mover el cursor para ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.4: RECUPERANDO Y MEZCLANDO FICHEROS + Lección 1.5.4: RECUPERANDO Y MEZCLANDO FICHEROS ** Para insertar el contenido de un fichero escriba :r NOMBRE_DEL_FICHERO ** 1. Sitúe el cursor justo por encima de esta línea. -NOTA: Después de ejecutar el paso 2 verá texto de la lección 5.3. Después +NOTA: Después de ejecutar el paso 2 verá texto de la lección 1.5.3. Después DESCIENDA hasta ver de nuevo esta lección. 2. Ahora recupere el archivo TEST utilizando el comando :r TEST donde @@ -712,7 +712,7 @@ NOTA: Después de ejecutar el paso 2 verá texto de la lección 5.3. Después se encuentra el cursor. 3. Para verificar que se ha recuperado el archivo, suba el cursor y - compruebe que ahora hay dos copias de la lección 5.3, la original y + compruebe que ahora hay dos copias de la lección 1.5.3, la original y la versión del archivo. NOTA: También puede leer la salida de un comando externo. Por ejemplo, @@ -721,7 +721,7 @@ NOTA: También puede leer la salida de un comando externo. Por ejemplo, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 5 + RESUMEN DE LA LECCIÓN 1.5 1. :!comando ejecuta un comando externo. @@ -745,7 +745,7 @@ NOTA: También puede leer la salida de un comando externo. Por ejemplo, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.1: EL COMANDO OPEN + Lección 1.6.1: EL COMANDO OPEN ** Pulse o para abrir una línea debajo del cursor @@ -769,7 +769,7 @@ NOTA: También puede leer la salida de un comando externo. Por ejemplo, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.2: EL COMANDO APPEND (añadir) + Lección 1.6.2: EL COMANDO APPEND (añadir) ** Pulse a para insertar texto DESPUÉS del cursor. ** @@ -793,7 +793,7 @@ NOTA: a, i y A todos entran en el modo Insertar, la única diferencia es dónde ubican los caracteres insertados. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.3: OTRA VERSIÓN DE REPLACE (remplazar) + Lección 1.6.3: OTRA VERSIÓN DE REPLACE (remplazar) ** Pulse una R mayúscula para sustituir más de un carácter. ** @@ -816,7 +816,7 @@ NOTA: El modo Reemplazar es como el modo Insertar, pero cada carácter escrito elimina un carácter ya existente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.4: COPIAR Y PEGAR TEXTO + Lección 1.6.4: COPIAR Y PEGAR TEXTO @@ -845,7 +845,7 @@ NOTA: También puede utilizar y como un operador: yw copia una palabra, esa línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.5: ACTIVAR (SET) UNA OPCIÓN + Lección 1.6.5: ACTIVAR (SET) UNA OPCIÓN ** Active una opción para buscar o sustituir ignorando si está @@ -871,7 +871,7 @@ NOTA: Para eliminar el resaltado de las coincidencias escriba: :nohlsearch NOTA: Si quiere ignorar las mayúsculas y minúsculas, solo para un comando de búsqueda, utilice \c en la frase: /ignorar\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 6 + RESUMEN DE LA LECCIÓN 1.6 1. Escriba o para abrir una línea por DEBAJO de la posición del cursor y @@ -922,7 +922,7 @@ NOTA: Si quiere ignorar las mayúsculas y minúsculas, solo para un comando :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 7.2: CREAR UN SCRIPT DE INICIO + Lección 1.7.2: CREAR UN SCRIPT DE INICIO ** Habilitar funcionalidades en Vim ** @@ -947,7 +947,7 @@ NOTA: Si quiere ignorar las mayúsculas y minúsculas, solo para un comando Para más información escriba :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 7.3: COMPLETADO + Lección 1.7.3: COMPLETADO ** Completado de la línea de comandos con CTRL-D o ** @@ -970,7 +970,7 @@ NOTA: El completado funciona con muchos comandos. Solo pulse CTRL-D o . Es especialmente útil para :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 7 + RESUMEN DE LA LECCIÓN 1.7 1. Escriba :help o pulse o para abrir la ventana de ayuda. diff --git a/runtime/tutor/tutor.fr b/runtime/tutor/tutor1.fr similarity index 92% rename from runtime/tutor/tutor.fr rename to runtime/tutor/tutor1.fr index 35f7440001..079f2da3b4 100644 --- a/runtime/tutor/tutor.fr +++ b/runtime/tutor/tutor1.fr @@ -21,11 +21,11 @@ Maintenant, vérifiez que votre clavier n'est PAS verrouillé en majuscules, et appuyez la touche j le nombre de fois suffisant pour - que la Leçon 1.1 remplisse complètement l'écran. + que la Leçon 1.1.1 remplisse complètement l'écran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.1 : DÉPLACEMENT DU CURSEUR + Leçon 1.1.1 : DÉPLACEMENT DU CURSEUR ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** @@ -39,7 +39,7 @@ 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. - 3. En utilisant la touche Bas, allez à la Leçon 1.2. + 3. En utilisant la touche Bas, allez à la Leçon 1.1.2. NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> pour revenir en mode Normal. Puis retapez la commande que vous vouliez. @@ -50,7 +50,7 @@ NOTE : Les touches fl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.2 : SORTIR DE VIM + Leçon 1.1.2 : SORTIR DE VIM !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! @@ -70,11 +70,11 @@ NOTE : Les touches fl NOTE : :q! annule tous les changements que vous avez faits. Dans quelques leçons, vous apprendrez à enregistrer les changements. - 5. Déplacez le curseur à la Leçon 1.3. + 5. Déplacez le curseur à la Leçon 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT + Leçon 1.1.3 : ÉDITION DE TEXTE - EFFACEMENT ** Appuyez x pour effacer le caractère sous le curseur. ** @@ -90,14 +90,14 @@ NOTE : :q! La vvache a sautéé au-ddessus dde la luune. - 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. + 5. Maintenant que la ligne est correcte, passez à la Leçon 1.1.4. NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par la pratique. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.4 : ÉDITION DE TEXTE - INSERTION + Leçon 1.1.4 : ÉDITION DE TEXTE - INSERTION ** Appuyez i pour insérer du texte. ** @@ -116,11 +116,11 @@ NOTE : En avan ---> Il manque des caractères dans cette ligne. 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la - Leçon 1.5. + Leçon 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER + Leçon 1.1.5 : ÉDITION DE TEXTE - AJOUTER ** Appuyez A pour ajouter du texte. ** @@ -142,18 +142,18 @@ NOTE : En avan Il manque aussi du texte ici. 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, - allez à la Leçon 1.6. + allez à la Leçon 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.6 : ÉDITER UN FICHIER + Leçon 1.1.6 : ÉDITER UN FICHIER ** Utilisez :wq pour enregistrer un fichier et sortir. ** !! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! - 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! + 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.1.2 : :q! Ou, si vous avez accès à un autre terminal, exécutez-y les actions qui suivent. @@ -173,7 +173,7 @@ NOTE : En avan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 1 + RÉSUMÉ DE LA LEÇON 1.1 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. @@ -199,7 +199,7 @@ Passez maintenant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.1 : COMMANDES D'EFFACEMENT + Leçon 1.2.1 : COMMANDES D'EFFACEMENT ** Tapez dw pour effacer un mot. ** @@ -220,11 +220,11 @@ NOTE : La lettre d appara ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez - à la Leçon 2.2. + à la Leçon 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS + Leçon 1.2.2 : PLUS DE COMMANDES D'EFFACEMENTS ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** @@ -240,11 +240,11 @@ NOTE : La lettre d appara ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. - 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. + 5. Allez à la Leçon 1.2.3 pour comprendre ce qui se passe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS + Leçon 1.2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS Plusieurs commandes qui changent le texte sont constituées d'un opérateur @@ -270,7 +270,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT + Leçon 1.2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT ** Taper un nombre avant un mouvement le répète autant de fois. ** @@ -288,11 +288,11 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. - 6. Déplacez-vous à la Leçon 2.5. + 6. Déplacez-vous à la Leçon 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS + Leçon 1.2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS ** Taper un nombre avec un opérateur le répète autant de fois. ** @@ -314,7 +314,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.6 : OPÉREZ SUR DES LIGNES + Leçon 1.2.6 : OPÉREZ SUR DES LIGNES ** Tapez dd pour effacer une ligne complète. ** @@ -338,7 +338,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.7 : L'ANNULATION + Leçon 1.2.7 : L'ANNULATION ** Tapez u pour annuler les dernières commandes. ** @@ -359,11 +359,11 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la - Leçon 2. + Leçon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 2 + RÉSUMÉ DE LA LEÇON 1.2 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw @@ -392,7 +392,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.1 : LE COLLAGE + Leçon 1.3.1 : LE COLLAGE ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** @@ -415,7 +415,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.2 : LA COMMANDE DE REMPLACEMENT + Leçon 1.3.2 : LA COMMANDE DE REMPLACEMENT ** Tapez rx pour remplacer un caractère sous le curseur par x . ** @@ -432,14 +432,14 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d ---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! - 5. Maintenant, allez à la Leçon 3.3. + 5. Maintenant, allez à la Leçon 1.3.3. NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par mémorisation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT + Leçon 1.3.3 : L'OPÉRATEUR DE CHANGEMENT ** Pour changer jusqu'à la fin d'un mot, tapez ce .** @@ -463,7 +463,7 @@ Notez que ce efface le mot et vous place ensuite en mode Insertion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c + Leçon 1.3.4 : PLUS DE CHANGEMENTS AVEC c ** L'opérateur de changement fonctionne avec les mêmes déplacements @@ -491,7 +491,7 @@ NOTE : Vous pouvez utiliser la touche Retour Arri ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 3 + RÉSUMÉ DE LA LEÇON 1.3 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le @@ -514,7 +514,7 @@ Passez maintenant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER + Leçon 1.4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. @@ -541,7 +541,7 @@ NOTE : Vous pouvez peut- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.2 : LA RECHERCHE + Leçon 1.4.2 : LA RECHERCHE ** Tapez / suivi d'un texte pour rechercher ce texte. ** @@ -564,7 +564,7 @@ NOTE : Quand la recherche atteint la fin du fichier, elle reprend au d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES + Leçon 1.4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES ** Tapez % pour trouver des ), ] ou } correspondants. ** @@ -589,7 +589,7 @@ NOTE : Cette fonctionnalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.4 : LA COMMANDE DE SUBSTITUTION + Leçon 1.4.4 : LA COMMANDE DE SUBSTITUTION ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** @@ -617,7 +617,7 @@ NOTE : Cette fonctionnalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 4 + RÉSUMÉ DE LA LEÇON 1.4 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. @@ -641,7 +641,7 @@ NOTE : Cette fonctionnalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE + Leçon 1.5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** @@ -664,7 +664,7 @@ NOTE : Toutes les commandes : doivent finir par la frappe de ** @@ -990,7 +990,7 @@ NOTE : Le compl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 7 + RÉSUMÉ DE LA LEÇON 1.7 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. diff --git a/runtime/tutor/tutor.fr.utf-8 b/runtime/tutor/tutor1.fr.utf-8 similarity index 92% rename from runtime/tutor/tutor.fr.utf-8 rename to runtime/tutor/tutor1.fr.utf-8 index 35eab89d87..f479cd2815 100644 --- a/runtime/tutor/tutor.fr.utf-8 +++ b/runtime/tutor/tutor1.fr.utf-8 @@ -21,11 +21,11 @@ Maintenant, vérifiez que votre clavier n'est PAS verrouillé en majuscules, et appuyez la touche j le nombre de fois suffisant pour - que la Leçon 1.1 remplisse complètement l'écran. + que la Leçon 1.1.1 remplisse complètement l'écran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.1 : DÉPLACEMENT DU CURSEUR + Leçon 1.1.1 : DÉPLACEMENT DU CURSEUR ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** @@ -39,7 +39,7 @@ 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. - 3. En utilisant la touche Bas, allez à la Leçon 1.2. + 3. En utilisant la touche Bas, allez à la Leçon 1.1.2. NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> pour revenir en mode Normal. Puis retapez la commande que vous vouliez. @@ -50,7 +50,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.2 : SORTIR DE VIM + Leçon 1.1.2 : SORTIR DE VIM !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! @@ -70,11 +70,11 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisan NOTE : :q! annule tous les changements que vous avez faits. Dans quelques leçons, vous apprendrez à enregistrer les changements. - 5. Déplacez le curseur à la Leçon 1.3. + 5. Déplacez le curseur à la Leçon 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT + Leçon 1.1.3 : ÉDITION DE TEXTE - EFFACEMENT ** Appuyez x pour effacer le caractère sous le curseur. ** @@ -90,14 +90,14 @@ NOTE : :q! annule tous les changements que vous avez faits. Dans ---> La vvache a sautéé au-ddessus dde la luune. - 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. + 5. Maintenant que la ligne est correcte, passez à la Leçon 1.1.4. NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par la pratique. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.4 : ÉDITION DE TEXTE - INSERTION + Leçon 1.1.4 : ÉDITION DE TEXTE - INSERTION ** Appuyez i pour insérer du texte. ** @@ -116,11 +116,11 @@ NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par ---> Il manque des caractères dans cette ligne. 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la - Leçon 1.5. + Leçon 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER + Leçon 1.1.5 : ÉDITION DE TEXTE - AJOUTER ** Appuyez A pour ajouter du texte. ** @@ -142,18 +142,18 @@ NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par Il manque aussi du texte ici. 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, - allez à la Leçon 1.6. + allez à la Leçon 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.6 : ÉDITER UN FICHIER + Leçon 1.1.6 : ÉDITER UN FICHIER ** Utilisez :wq pour enregistrer un fichier et sortir. ** !! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! - 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! + 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.1.2 : :q! Ou, si vous avez accès à un autre terminal, exécutez-y les actions qui suivent. @@ -173,7 +173,7 @@ NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 1 + RÉSUMÉ DE LA LEÇON 1.1 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. @@ -199,7 +199,7 @@ Passez maintenant à la leçon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.1 : COMMANDES D'EFFACEMENT + Leçon 1.2.1 : COMMANDES D'EFFACEMENT ** Tapez dw pour effacer un mot. ** @@ -220,11 +220,11 @@ NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez - à la Leçon 2.2. + à la Leçon 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS + Leçon 1.2.2 : PLUS DE COMMANDES D'EFFACEMENTS ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** @@ -240,11 +240,11 @@ NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. - 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. + 5. Allez à la Leçon 1.2.3 pour comprendre ce qui se passe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS + Leçon 1.2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS Plusieurs commandes qui changent le texte sont constituées d'un opérateur @@ -270,7 +270,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT + Leçon 1.2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT ** Taper un nombre avant un mouvement le répète autant de fois. ** @@ -288,11 +288,11 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. - 6. Déplacez-vous à la Leçon 2.5. + 6. Déplacez-vous à la Leçon 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS + Leçon 1.2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS ** Taper un nombre avec un opérateur le répète autant de fois. ** @@ -314,7 +314,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.6 : OPÉREZ SUR DES LIGNES + Leçon 1.2.6 : OPÉREZ SUR DES LIGNES ** Tapez dd pour effacer une ligne complète. ** @@ -338,7 +338,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.7 : L'ANNULATION + Leçon 1.2.7 : L'ANNULATION ** Tapez u pour annuler les dernières commandes. ** @@ -359,11 +359,11 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la - Leçon 2. + Leçon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 2 + RÉSUMÉ DE LA LEÇON 1.2 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw @@ -392,7 +392,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.1 : LE COLLAGE + Leçon 1.3.1 : LE COLLAGE ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** @@ -415,7 +415,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.2 : LA COMMANDE DE REMPLACEMENT + Leçon 1.3.2 : LA COMMANDE DE REMPLACEMENT ** Tapez rx pour remplacer un caractère sous le curseur par x . ** @@ -432,14 +432,14 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le ---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! - 5. Maintenant, allez à la Leçon 3.3. + 5. Maintenant, allez à la Leçon 1.3.3. NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par mémorisation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT + Leçon 1.3.3 : L'OPÉRATEUR DE CHANGEMENT ** Pour changer jusqu'à la fin d'un mot, tapez ce .** @@ -463,7 +463,7 @@ Notez que ce efface le mot et vous place ensuite en mode Insertion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c + Leçon 1.3.4 : PLUS DE CHANGEMENTS AVEC c ** L'opérateur de changement fonctionne avec les mêmes déplacements @@ -491,7 +491,7 @@ NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 3 + RÉSUMÉ DE LA LEÇON 1.3 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le @@ -514,7 +514,7 @@ Passez maintenant à la leçon suivante. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER + Leçon 1.4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. @@ -541,7 +541,7 @@ NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.2 : LA RECHERCHE + Leçon 1.4.2 : LA RECHERCHE ** Tapez / suivi d'un texte pour rechercher ce texte. ** @@ -564,7 +564,7 @@ NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES + Leçon 1.4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES ** Tapez % pour trouver des ), ] ou } correspondants. ** @@ -589,7 +589,7 @@ NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.4 : LA COMMANDE DE SUBSTITUTION + Leçon 1.4.4 : LA COMMANDE DE SUBSTITUTION ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** @@ -617,7 +617,7 @@ NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 4 + RÉSUMÉ DE LA LEÇON 1.4 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. @@ -641,7 +641,7 @@ NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE + Leçon 1.5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** @@ -664,7 +664,7 @@ NOTE : Toutes les commandes : doivent finir par la frappe de . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS + Leçon 1.5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** @@ -690,7 +690,7 @@ NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER + Leçon 1.5.3 : SÉLECTION DU TEXTE À ENREGISTRER ** Pour enregistrer une portion du fichier, @@ -717,14 +717,14 @@ NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS + Leçon 1.5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** 1. Placez le curseur juste au-dessus de cette ligne. -NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. +NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 1.5.3. Puis déplacez-vous vers le bas pour voir cette leçon à nouveau. 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST @@ -732,7 +732,7 @@ NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. 3. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez - qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle + qu'il y a maintenant deux copies de la Leçon 1.5.3, l'originale et celle contenue dans le fichier. NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, @@ -741,7 +741,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 5 + RÉSUMÉ DE LA LEÇON 1.5 1. :!commande exécute une commande externe. @@ -765,7 +765,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.1 : LA COMMANDE D'OUVERTURE + Leçon 1.6.1 : LA COMMANDE D'OUVERTURE ** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** @@ -787,7 +787,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.2 : LA COMMANDE D'AJOUT + Leçon 1.6.2 : LA COMMANDE D'AJOUT ** Tapez a pour insérer du texte APRÈS le curseur. ** @@ -812,7 +812,7 @@ NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER + Leçon 1.6.3 : UNE AUTRE MANIÈRE DE REMPLACER ** Tapez un R majuscule pour remplacer plus d'un caractère. ** @@ -837,7 +837,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.4 : COPIER ET COLLER DU TEXTE + Leçon 1.6.4 : COPIER ET COLLER DU TEXTE ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** @@ -861,7 +861,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les b) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.5 : RÉGLAGE DES OPTIONS + Leçon 1.6.5 : RÉGLAGE DES OPTIONS ** Réglons une option afin que la recherche et la substitution ignorent la @@ -889,7 +889,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 6 + RÉSUMÉ DE LA LEÇON 1.6 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. @@ -912,7 +912,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 7.1 : OBTENIR DE L'AIDE + Leçon 1.7.1 : OBTENIR DE L'AIDE ** Utiliser le système d'aide en ligne. ** @@ -940,7 +940,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 7.2 : CRÉER UN SCRIPT DE DÉMARRAGE + Leçon 1.7.2 : CRÉER UN SCRIPT DE DÉMARRAGE ** Activer les fonctionnalités de Vim. ** @@ -964,7 +964,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 7.3 : COMPLÈTEMENT + Leçon 1.7.3 : COMPLÈTEMENT ** Complètement de ligne de commande avec CTRL-D et ** @@ -990,7 +990,7 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 7 + RÉSUMÉ DE LA LEÇON 1.7 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. diff --git a/runtime/tutor/tutor.hr b/runtime/tutor/tutor1.hr similarity index 93% rename from runtime/tutor/tutor.hr rename to runtime/tutor/tutor1.hr index fced37437e..89bbdc239e 100644 --- a/runtime/tutor/tutor.hr +++ b/runtime/tutor/tutor1.hr @@ -19,10 +19,10 @@ pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe! Ako je CapsLock ukljuèen ISKLJUÈITE ga. Pritiskajte tipku j kako - bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. + bi pomakli kursor sve dok Lekcija 1.1.1 ne ispuni ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMICANJE KURSORA + Lekcija 1.1.1: POMICANJE KURSORA ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** @@ -36,7 +36,7 @@ 2. Dr¾ite tipku (j) pritisnutom. Sada znate kako doæi do sljedeæe lekcije. - 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2. + 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.1.2. NAPOMENA: Ako niste sigurni ¹to ste zapravo pritisnuli uvijek koristite tipku kako bi pre¹li u Normal mod i onda poku¹ajte ponovno. @@ -45,7 +45,7 @@ NAPOMENA: Kursorske tipke rade isto. Kori br¾e, nakon ¹to se jednom naviknete na njihovo kori¹tenje. Stvarno! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZ IZ VIM-a + Lekcija 1.1.2: IZLAZ IZ VIM-a !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka, @@ -65,10 +65,10 @@ NAPOMENA: Kursorske tipke rade isto. Kori NAPOMENA: :q! poni¹tava sve promjene koje ste napravili. U sljedeæim lekcijama nauèit æe te kako promjene saèuvati. - 5. Pomaknite kursor na Lekciju 1.3. + 5. Pomaknite kursor na Lekciju 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: PROMJENA TEKSTA - BRISANJE + Lekcija 1.1.3: PROMJENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** @@ -84,14 +84,14 @@ NAPOMENA: :q! poni ---> KKKravaa jee presskoèila mmjeseccc. - 5. Nakon ¹to ispravite liniju, prijeðite na lekciju 1.4. + 5. Nakon ¹to ispravite liniju, prijeðite na lekciju 1.1.4. NAPOMENA: Koristeæi ovaj priruènik ne poku¹avajte pamtiti veæ uèite primjenom. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE + Lekcija 1.1.4: PROMJENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** @@ -114,7 +114,7 @@ NAPOMENA: Koriste ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE + Lekcija 1.1.5: PROMJENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** @@ -135,16 +135,16 @@ NAPOMENA: Koriste ---> Ima ne¹to teksta koji ne Ima ne¹to teksta koji nedostaje ba¹ ovdje. - 5. Prijeðite na lekciju 1.6. + 5. Prijeðite na lekciju 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: PROMJENA DATOTEKE + Lekcija 1.1.6: PROMJENA DATOTEKE ** Koristite :wq za spremanje teksta i napu¹tanje Vim-a. ** !! UPOZORENJE: Prije izvr¹avanja bilo kojeg koraka, proèitajte lekciju!! - 1. Izaðite iz programa kao sto ste napravili u lekciji 1.2: :q! + 1. Izaðite iz programa kao sto ste napravili u lekciji 1.1.2: :q! 2. Iz ljuske utipkajte sljedeæu naredbu: vim tutor 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju @@ -160,7 +160,7 @@ NAPOMENA: Koriste izvr¹ite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1 SA®ETAK + Lekcija 1.1 SA®ETAK 1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka. @@ -183,7 +183,7 @@ NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i Nastavite èitati Lekciju 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA + Lekcija 1.2.1: NAREDBE BRISANJA ** Tipkajte dw za brisanje rijeèi. ** @@ -203,10 +203,10 @@ NAPOMENA: Vim ---> Neke rijeèi smije¹no ne pripadaju na papir ovoj reèenici. 5. Ponovite korake 3 i 4 dok ne ispravite reèenicu; - prijeðite na Lekciju 2.2. + prijeðite na Lekciju 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JO© BRISANJA + Lekcija 1.2.2: JO© BRISANJA ** Otipkajte d$ za brisanje znakova do kraja linije. ** @@ -224,12 +224,12 @@ NAPOMENA: Vim ---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. - 5. Prijeðite na Lekciju 2.3 za bolje obja¹njenje. + 5. Prijeðite na Lekciju 1.2.3 za bolje obja¹njenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA + Lekcija 1.2.3: UKRATKO O OPERATORIMA I POKRETIMA Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. @@ -252,7 +252,7 @@ NAPOMENA: Pritiskaju pomicati kursor kao ¹to je navedeno. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORI©TENJE BROJANJA ZA POKRETE + Lekcija 1.2.4: KORI©TENJE BROJANJA ZA POKRETE ** Tipkanjem nekog broja prije pokreta, pokret se izvr¹ava toliko puta. ** @@ -269,13 +269,13 @@ NAPOMENA: Pritiskaju ---> Reèenica sa rijeèima po kojoj mo¾ete pomicati kursor. - 6. Prijeðite na Lekciju 2.5. + 6. Prijeðite na Lekciju 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORI©TENJE BROJANJA ZA VEÆE BRISANJE + Lekcija 1.2.5: KORI©TENJE BROJANJA ZA VEÆE BRISANJE ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** @@ -298,7 +298,7 @@ NAPOMENA: Pritiskaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERIRANJE NAD LINIJAMA + Lekcija 1.2.6: OPERIRANJE NAD LINIJAMA ** Otipkajte dd za brisanje cijele linije. ** @@ -321,7 +321,7 @@ NAPOMENA: Pritiskaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: NAREDBA PONI©TENJA + Lekcija 1.2.7: NAREDBA PONI©TENJA ** Pritisnite u za poni¹tenje zadnje naredbe, U za cijelu liniju. ** @@ -341,10 +341,10 @@ NAPOMENA: Pritiskaju ---> Poopravite pogre¹ke nna ovvoj liniji ii pooni¹titeee ih. - 8. Vrlo korisne naredbe. Prijeðite na sa¾etak Lekcije 2. + 8. Vrlo korisne naredbe. Prijeðite na sa¾etak Lekcije 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2 SA®ETAK + Lekcija 1.2 SA®ETAK 1. Brisanje od kursora do sljedeæe rijeèi: dw @@ -367,7 +367,7 @@ NAPOMENA: Pritiskaju Za vraæanja promjena, utipkajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: NAREDBA POSTAVI + Lekcija 1.3.1: NAREDBA POSTAVI ** p za unos prethodno izbrisanog teksta iza kursora. ** @@ -390,7 +390,7 @@ NAPOMENA: Pritiskaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: NAREDBA PROMJENE + Lekcija 1.3.2: NAREDBA PROMJENE ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** @@ -407,13 +407,13 @@ NAPOMENA: Pritiskaju ---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ---> Kada je ova linija tipkana, netko je pritiskao krive tipke! - 5. Prijeðite na Lekciju 3.2. + 5. Prijeðite na Lekciju 1.3.2. NAPOMENA: Prisjetite da trebate uèiti vje¾banjem, ne pamæenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR MIJENJANJA + Lekcija 1.3.3: OPERATOR MIJENJANJA ** Za mijenjanje do kraja rijeèi, istipkajte ce . ** @@ -436,7 +436,7 @@ NAPOMENA: Prisjetite da trebate u Primijetite da ce bri¹e rijeè i postavlja Vim u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: JO© MIJENJANJA KORI©TENJEM c + Lekcija 1.3.4: JO© MIJENJANJA KORI©TENJEM c ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** @@ -459,7 +459,7 @@ Primijetite da ce bri NAPOMENA: Mo¾ete koristiti Backspace za ispravljanje gre¹aka. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3 SA®ETAK + Lekcija 1.3 SA®ETAK 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo @@ -482,7 +482,7 @@ Prije ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE + Lekcija 1.4.1: POZICIJA KURSORA I STATUS DATOTEKE ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** @@ -505,7 +505,7 @@ NAPOMENA: Mo 4. Ako ste spremni, izvr¹ite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: NAREDBE TRA®ENJA + Lekcija 1.4.2: NAREDBE TRA®ENJA ** Otipkajte / i nakon toga izraz kojeg ¾elite tra¾iti. ** @@ -528,7 +528,7 @@ NAPOMENA: Mo NAPOMENA: Ako se tra¾enjem doðe do kraja datoteke nastavit æe se od njenog poèetka osim ako je postavka 'wrapscan' deaktivirana. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRA®ENJE PRIPADAJUÆE ZAGRADE + Lekcija 1.4.3: TRA®ENJE PRIPADAJUÆE ZAGRADE ** Otipkajte % za pronalazak pripadajuæe ), ] ili } . ** @@ -551,7 +551,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: NAREDBE ZAMIJENE + Lekcija 1.4.4: NAREDBE ZAMIJENE ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** @@ -574,7 +574,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju potvrdu zamjene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4 SA®ETAK + Lekcija 1.4 SA®ETAK 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. @@ -597,7 +597,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVR©AVANJE VANJSKIH NAREDBI + Lekcija 1.5.1: IZVR©AVANJE VANJSKIH NAREDBI ** Otipkajte :! sa vanjskom naredbom koju ¾elite izvr¹iti. ** @@ -620,7 +620,7 @@ NAPOMENA: Sve : naredbe se izvr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VI©E O SPREMANJU DATOTEKA + Lekcija 1.5.2: VI©E O SPREMANJU DATOTEKA ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** @@ -643,7 +643,7 @@ NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA + Lekcija 1.5.3: SPREMANJE OZNAÈENOG TEKSTA ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** @@ -666,14 +666,14 @@ NAPOMENA: Tipka v zapo unaokolo kako bi mijenjali velièinu oznaèenog teksta. Mo¾ete koristiti i operatore. Npr, d æe izbrisati oznaèeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÈITAVANJE DATOTEKA + Lekcija 1.5.4: UÈITAVANJE DATOTEKA ** Za ubacivanje sadr¾aja datoteke, otipkajte :r IME_DATOTEKE ** 1. Postavite kursor iznad ove linije. -NAPOMENA: Nakon ¹to izvr¹ite 2. korak vidjeti æe te tekst iz Lekcije 5.3. +NAPOMENA: Nakon ¹to izvr¹ite 2. korak vidjeti æe te tekst iz Lekcije 1.5.3. Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. 2. Uèitajte va¹u TEST datoteku koristeæi naredbu :r TEST @@ -681,7 +681,7 @@ NAPOMENA: Nakon Sadr¾aj uèitane datoteke je ubaèen liniju ispod kursora. 3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i - primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. + primijetite dvije kopije Lekcije 1.5.3, originalnu i onu iz datoteke. NAPOMENA: Mo¾ete takoðer uèitati ispis vanjske naredbe. Npr, :r !ls æe uèitati ispis ls naredbe i postaviti ispis liniju ispod @@ -689,7 +689,7 @@ NAPOMENA: Mo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5 SA®ETAK + Lekcija 1.5 SA®ETAK 1. :!naredba izvr¹ava vanjsku naredbu. @@ -712,7 +712,7 @@ NAPOMENA: Mo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: NAREDBA OTVORI + Lekcija 1.6.1: NAREDBA OTVORI ** Pritisnite o kako bi otvorili liniju ispod kursora @@ -735,7 +735,7 @@ NAPOMENA: Mo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: NAREDBA DODAJ + Lekcija 1.6.2: NAREDBA DODAJ ** Otipkajte a za dodavanje teksta IZA kursora. ** @@ -758,7 +758,7 @@ NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina razlika je u poziciji od koje æe se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÈIN MIJENJANJA + Lekcija 1.6.3: DRUGI NAÈIN MIJENJANJA ** Otipkajte veliko R kako bi zamijelili vi¹e od jednog znaka. ** @@ -781,7 +781,7 @@ NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, svaki otipkani znak bri¹e veæ postojeæi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA + Lekcija 1.6.4: KOPIRANJE I LIJEPLJENJE TEKSTA ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** @@ -804,7 +804,7 @@ NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, NAPOMENA: mo¾ete koristiti y kao operator; yw kopira jednu rijeè. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: MIJENJANJE POSTAVKI + Lekcija 1.6.5: MIJENJANJE POSTAVKI ** Postavka: naredbe tra¾enja i zamijene ne razlikuju VELIKA i mala slova ** @@ -827,7 +827,7 @@ NAPOMENA: Za neozna NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi koristite \c u izrazu: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6 SA®ETAK + Lekcija 1.6 SA®ETAK 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje linije IZNAD kursora. @@ -850,7 +850,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIVANJE POMOÆI + Lekcija 1.7.1: DOBIVANJE POMOÆI ** Koristite on-line sustav pomoæi ** @@ -873,7 +873,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE SKRIPTE + Lekcija 1.7.2: PRAVLJENJE SKRIPTE ** Aktivirajte Vim moguænosti ** @@ -896,7 +896,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi Za vi¹e informacija otipkajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVR©AVANJE + Lekcija 1.7.3: AUTOMATSKO DOVR©AVANJE ** Dovr¹avanje iz naredbene linije pomoæu CTRL-D i ** @@ -919,7 +919,7 @@ NAPOMENA: Mogu Naroèito je korisno za :help naredbe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7 SA®ETAK + Lekcija 1.7 SA®ETAK 1. Otipkajte :help ili pritisnite ili za pomoæ. diff --git a/runtime/tutor/tutor.hr.cp1250 b/runtime/tutor/tutor1.hr.cp1250 similarity index 93% rename from runtime/tutor/tutor.hr.cp1250 rename to runtime/tutor/tutor1.hr.cp1250 index f968053b26..3070ffd71c 100644 --- a/runtime/tutor/tutor.hr.cp1250 +++ b/runtime/tutor/tutor1.hr.cp1250 @@ -19,10 +19,10 @@ pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe! Ako je CapsLock ukljuèen ISKLJUÈITE ga. Pritiskajte tipku j kako - bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. + bi pomakli kursor sve dok Lekcija 1.1.1 ne ispuni ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMICANJE KURSORA + Lekcija 1.1.1: POMICANJE KURSORA ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** @@ -36,7 +36,7 @@ 2. Držite tipku (j) pritisnutom. Sada znate kako doæi do sljedeæe lekcije. - 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2. + 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.1.2. NAPOMENA: Ako niste sigurni što ste zapravo pritisnuli uvijek koristite tipku kako bi prešli u Normal mod i onda pokušajte ponovno. @@ -45,7 +45,7 @@ NAPOMENA: Kursorske tipke rade isto. Kori brže, nakon što se jednom naviknete na njihovo korištenje. Stvarno! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZ IZ VIM-a + Lekcija 1.1.2: IZLAZ IZ VIM-a !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka, @@ -65,10 +65,10 @@ NAPOMENA: Kursorske tipke rade isto. Kori NAPOMENA: :q! poništava sve promjene koje ste napravili. U sljedeæim lekcijama nauèit æe te kako promjene saèuvati. - 5. Pomaknite kursor na Lekciju 1.3. + 5. Pomaknite kursor na Lekciju 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: PROMJENA TEKSTA - BRISANJE + Lekcija 1.1.3: PROMJENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** @@ -84,14 +84,14 @@ NAPOMENA: :q! poni ---> KKKravaa jee presskoèila mmjeseccc. - 5. Nakon što ispravite liniju, prijeðite na lekciju 1.4. + 5. Nakon što ispravite liniju, prijeðite na lekciju 1.1.4. NAPOMENA: Koristeæi ovaj priruènik ne pokušavajte pamtiti veæ uèite primjenom. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE + Lekcija 1.1.4: PROMJENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** @@ -114,7 +114,7 @@ NAPOMENA: Koriste ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE + Lekcija 1.1.5: PROMJENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** @@ -135,16 +135,16 @@ NAPOMENA: Koriste ---> Ima nešto teksta koji ne Ima nešto teksta koji nedostaje baš ovdje. - 5. Prijeðite na lekciju 1.6. + 5. Prijeðite na lekciju 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: PROMJENA DATOTEKE + Lekcija 1.1.6: PROMJENA DATOTEKE ** Koristite :wq za spremanje teksta i napuštanje Vim-a. ** !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, proèitajte lekciju!! - 1. Izaðite iz programa kao sto ste napravili u lekciji 1.2: :q! + 1. Izaðite iz programa kao sto ste napravili u lekciji 1.1.2: :q! 2. Iz ljuske utipkajte sljedeæu naredbu: vim tutor 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju @@ -160,7 +160,7 @@ NAPOMENA: Koriste izvršite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1 SAŽETAK + Lekcija 1.1 SAŽETAK 1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka. @@ -183,7 +183,7 @@ NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i Nastavite èitati Lekciju 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA + Lekcija 1.2.1: NAREDBE BRISANJA ** Tipkajte dw za brisanje rijeèi. ** @@ -203,10 +203,10 @@ NAPOMENA: Vim ---> Neke rijeèi smiješno ne pripadaju na papir ovoj reèenici. 5. Ponovite korake 3 i 4 dok ne ispravite reèenicu; - prijeðite na Lekciju 2.2. + prijeðite na Lekciju 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JOŠ BRISANJA + Lekcija 1.2.2: JOŠ BRISANJA ** Otipkajte d$ za brisanje znakova do kraja linije. ** @@ -224,12 +224,12 @@ NAPOMENA: Vim ---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. - 5. Prijeðite na Lekciju 2.3 za bolje objašnjenje. + 5. Prijeðite na Lekciju 1.2.3 za bolje objašnjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA + Lekcija 1.2.3: UKRATKO O OPERATORIMA I POKRETIMA Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. @@ -252,7 +252,7 @@ NAPOMENA: Pritiskaju pomicati kursor kao što je navedeno. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE + Lekcija 1.2.4: KORIŠTENJE BROJANJA ZA POKRETE ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. ** @@ -269,13 +269,13 @@ NAPOMENA: Pritiskaju ---> Reèenica sa rijeèima po kojoj možete pomicati kursor. - 6. Prijeðite na Lekciju 2.5. + 6. Prijeðite na Lekciju 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEÆE BRISANJE + Lekcija 1.2.5: KORIŠTENJE BROJANJA ZA VEÆE BRISANJE ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** @@ -298,7 +298,7 @@ NAPOMENA: Pritiskaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERIRANJE NAD LINIJAMA + Lekcija 1.2.6: OPERIRANJE NAD LINIJAMA ** Otipkajte dd za brisanje cijele linije. ** @@ -321,7 +321,7 @@ NAPOMENA: Pritiskaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: NAREDBA PONIŠTENJA + Lekcija 1.2.7: NAREDBA PONIŠTENJA ** Pritisnite u za poništenje zadnje naredbe, U za cijelu liniju. ** @@ -341,10 +341,10 @@ NAPOMENA: Pritiskaju ---> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih. - 8. Vrlo korisne naredbe. Prijeðite na sažetak Lekcije 2. + 8. Vrlo korisne naredbe. Prijeðite na sažetak Lekcije 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2 SAŽETAK + Lekcija 1.2 SAŽETAK 1. Brisanje od kursora do sljedeæe rijeèi: dw @@ -367,7 +367,7 @@ NAPOMENA: Pritiskaju Za vraæanja promjena, utipkajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: NAREDBA POSTAVI + Lekcija 1.3.1: NAREDBA POSTAVI ** p za unos prethodno izbrisanog teksta iza kursora. ** @@ -390,7 +390,7 @@ NAPOMENA: Pritiskaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: NAREDBA PROMJENE + Lekcija 1.3.2: NAREDBA PROMJENE ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** @@ -407,13 +407,13 @@ NAPOMENA: Pritiskaju ---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ---> Kada je ova linija tipkana, netko je pritiskao krive tipke! - 5. Prijeðite na Lekciju 3.2. + 5. Prijeðite na Lekciju 1.3.2. NAPOMENA: Prisjetite da trebate uèiti vježbanjem, ne pamæenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR MIJENJANJA + Lekcija 1.3.3: OPERATOR MIJENJANJA ** Za mijenjanje do kraja rijeèi, istipkajte ce . ** @@ -436,7 +436,7 @@ NAPOMENA: Prisjetite da trebate u Primijetite da ce briše rijeè i postavlja Vim u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c + Lekcija 1.3.4: JOŠ MIJENJANJA KORIŠTENJEM c ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** @@ -459,7 +459,7 @@ Primijetite da ce bri NAPOMENA: Možete koristiti Backspace za ispravljanje grešaka. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3 SAŽETAK + Lekcija 1.3 SAŽETAK 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo @@ -482,7 +482,7 @@ Prije ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE + Lekcija 1.4.1: POZICIJA KURSORA I STATUS DATOTEKE ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** @@ -505,7 +505,7 @@ NAPOMENA: Mo 4. Ako ste spremni, izvršite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: NAREDBE TRAŽENJA + Lekcija 1.4.2: NAREDBE TRAŽENJA ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** @@ -528,7 +528,7 @@ NAPOMENA: Mo NAPOMENA: Ako se traženjem doðe do kraja datoteke nastavit æe se od njenog poèetka osim ako je postavka 'wrapscan' deaktivirana. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRAŽENJE PRIPADAJUÆE ZAGRADE + Lekcija 1.4.3: TRAŽENJE PRIPADAJUÆE ZAGRADE ** Otipkajte % za pronalazak pripadajuæe ), ] ili } . ** @@ -551,7 +551,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: NAREDBE ZAMIJENE + Lekcija 1.4.4: NAREDBE ZAMIJENE ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** @@ -574,7 +574,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju potvrdu zamjene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4 SAŽETAK + Lekcija 1.4 SAŽETAK 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. @@ -597,7 +597,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI + Lekcija 1.5.1: IZVRŠAVANJE VANJSKIH NAREDBI ** Otipkajte :! sa vanjskom naredbom koju želite izvršiti. ** @@ -620,7 +620,7 @@ NAPOMENA: Sve : naredbe se izvr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA + Lekcija 1.5.2: VIŠE O SPREMANJU DATOTEKA ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** @@ -643,7 +643,7 @@ NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA + Lekcija 1.5.3: SPREMANJE OZNAÈENOG TEKSTA ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** @@ -666,14 +666,14 @@ NAPOMENA: Tipka v zapo unaokolo kako bi mijenjali velièinu oznaèenog teksta. Možete koristiti i operatore. Npr, d æe izbrisati oznaèeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÈITAVANJE DATOTEKA + Lekcija 1.5.4: UÈITAVANJE DATOTEKA ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** 1. Postavite kursor iznad ove linije. -NAPOMENA: Nakon što izvršite 2. korak vidjeti æe te tekst iz Lekcije 5.3. +NAPOMENA: Nakon što izvršite 2. korak vidjeti æe te tekst iz Lekcije 1.5.3. Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. 2. Uèitajte vašu TEST datoteku koristeæi naredbu :r TEST @@ -681,7 +681,7 @@ NAPOMENA: Nakon Sadržaj uèitane datoteke je ubaèen liniju ispod kursora. 3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i - primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. + primijetite dvije kopije Lekcije 1.5.3, originalnu i onu iz datoteke. NAPOMENA: Možete takoðer uèitati ispis vanjske naredbe. Npr, :r !ls æe uèitati ispis ls naredbe i postaviti ispis liniju ispod @@ -689,7 +689,7 @@ NAPOMENA: Mo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5 SAŽETAK + Lekcija 1.5 SAŽETAK 1. :!naredba izvršava vanjsku naredbu. @@ -712,7 +712,7 @@ NAPOMENA: Mo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: NAREDBA OTVORI + Lekcija 1.6.1: NAREDBA OTVORI ** Pritisnite o kako bi otvorili liniju ispod kursora @@ -735,7 +735,7 @@ NAPOMENA: Mo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: NAREDBA DODAJ + Lekcija 1.6.2: NAREDBA DODAJ ** Otipkajte a za dodavanje teksta IZA kursora. ** @@ -758,7 +758,7 @@ NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina razlika je u poziciji od koje æe se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÈIN MIJENJANJA + Lekcija 1.6.3: DRUGI NAÈIN MIJENJANJA ** Otipkajte veliko R kako bi zamijelili više od jednog znaka. ** @@ -781,7 +781,7 @@ NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, svaki otipkani znak briše veæ postojeæi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA + Lekcija 1.6.4: KOPIRANJE I LIJEPLJENJE TEKSTA ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** @@ -804,7 +804,7 @@ NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, NAPOMENA: možete koristiti y kao operator; yw kopira jednu rijeè. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: MIJENJANJE POSTAVKI + Lekcija 1.6.5: MIJENJANJE POSTAVKI ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** @@ -827,7 +827,7 @@ NAPOMENA: Za neozna NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi koristite \c u izrazu: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6 SAŽETAK + Lekcija 1.6 SAŽETAK 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje linije IZNAD kursora. @@ -850,7 +850,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIVANJE POMOÆI + Lekcija 1.7.1: DOBIVANJE POMOÆI ** Koristite on-line sustav pomoæi ** @@ -873,7 +873,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE SKRIPTE + Lekcija 1.7.2: PRAVLJENJE SKRIPTE ** Aktivirajte Vim moguænosti ** @@ -896,7 +896,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi Za više informacija otipkajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE + Lekcija 1.7.3: AUTOMATSKO DOVRŠAVANJE ** Dovršavanje iz naredbene linije pomoæu CTRL-D i ** @@ -919,7 +919,7 @@ NAPOMENA: Mogu Naroèito je korisno za :help naredbe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7 SAŽETAK + Lekcija 1.7 SAŽETAK 1. Otipkajte :help ili pritisnite ili za pomoæ. diff --git a/runtime/tutor/tutor.hr.utf-8 b/runtime/tutor/tutor1.hr.utf-8 similarity index 93% rename from runtime/tutor/tutor.hr.utf-8 rename to runtime/tutor/tutor1.hr.utf-8 index 291def0208..cf3323a94e 100644 --- a/runtime/tutor/tutor.hr.utf-8 +++ b/runtime/tutor/tutor1.hr.utf-8 @@ -19,10 +19,10 @@ pravilno koristiti. Ako samo Äitate tekst, zaboraviti će te naredbe! Ako je CapsLock ukljuÄen ISKLJUÄŒITE ga. Pritiskajte tipku j kako - bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. + bi pomakli kursor sve dok Lekcija 1.1.1 ne ispuni ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMICANJE KURSORA + Lekcija 1.1.1: POMICANJE KURSORA ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** @@ -36,7 +36,7 @@ 2. Držite tipku (j) pritisnutom. Sada znate kako doći do sljedeće lekcije. - 3. Koristeći tipku j prijeÄ‘ite na sljedeću lekciju 1.2. + 3. Koristeći tipku j prijeÄ‘ite na sljedeću lekciju 1.1.2. NAPOMENA: Ako niste sigurni Å¡to ste zapravo pritisnuli uvijek koristite tipku kako bi preÅ¡li u Normal mod i onda pokuÅ¡ajte ponovno. @@ -45,7 +45,7 @@ NAPOMENA: Kursorske tipke rade isto. KoriÅ¡tenje hjkl tipaka je znatno brže, nakon Å¡to se jednom naviknete na njihovo koriÅ¡tenje. Stvarno! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZ IZ VIM-a + Lekcija 1.1.2: IZLAZ IZ VIM-a !! UPOZORENJE: Prije izvoÄ‘enja bilo kojeg koraka, @@ -65,10 +65,10 @@ NAPOMENA: Kursorske tipke rade isto. KoriÅ¡tenje hjkl tipaka je znatno NAPOMENA: :q! poniÅ¡tava sve promjene koje ste napravili. U sljedećim lekcijama nauÄit će te kako promjene saÄuvati. - 5. Pomaknite kursor na Lekciju 1.3. + 5. Pomaknite kursor na Lekciju 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: PROMJENA TEKSTA - BRISANJE + Lekcija 1.1.3: PROMJENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** @@ -84,14 +84,14 @@ NAPOMENA: :q! poniÅ¡tava sve promjene koje ste napravili. ---> KKKravaa jee presskoÄila mmjeseccc. - 5. Nakon Å¡to ispravite liniju, prijeÄ‘ite na lekciju 1.4. + 5. Nakon Å¡to ispravite liniju, prijeÄ‘ite na lekciju 1.1.4. NAPOMENA: Koristeći ovaj priruÄnik ne pokuÅ¡avajte pamtiti već uÄite primjenom. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE + Lekcija 1.1.4: PROMJENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** @@ -114,7 +114,7 @@ NAPOMENA: Koristeći ovaj priruÄnik ne pokuÅ¡avajte pamtiti ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE + Lekcija 1.1.5: PROMJENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** @@ -135,16 +135,16 @@ NAPOMENA: Koristeći ovaj priruÄnik ne pokuÅ¡avajte pamtiti ---> Ima neÅ¡to teksta koji ne Ima neÅ¡to teksta koji nedostaje baÅ¡ ovdje. - 5. PrijeÄ‘ite na lekciju 1.6. + 5. PrijeÄ‘ite na lekciju 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: PROMJENA DATOTEKE + Lekcija 1.1.6: PROMJENA DATOTEKE ** Koristite :wq za spremanje teksta i napuÅ¡tanje Vim-a. ** !! UPOZORENJE: Prije izvrÅ¡avanja bilo kojeg koraka, proÄitajte lekciju!! - 1. IzaÄ‘ite iz programa kao sto ste napravili u lekciji 1.2: :q! + 1. IzaÄ‘ite iz programa kao sto ste napravili u lekciji 1.1.2: :q! 2. Iz ljuske utipkajte sljedeću naredbu: vim tutor 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju @@ -160,7 +160,7 @@ NAPOMENA: Koristeći ovaj priruÄnik ne pokuÅ¡avajte pamtiti izvrÅ¡ite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1 SAŽETAK + Lekcija 1.1 SAŽETAK 1. Kursor se pomiÄe strelicama ili pomoću hjkl tipaka. @@ -183,7 +183,7 @@ NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i Nastavite Äitati Lekciju 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA + Lekcija 1.2.1: NAREDBE BRISANJA ** Tipkajte dw za brisanje rijeÄi. ** @@ -203,10 +203,10 @@ NAPOMENA: Vim će prikazati slovo d na zadnjoj liniji kad ga otipkate. ---> Neke rijeÄi smijeÅ¡no ne pripadaju na papir ovoj reÄenici. 5. Ponovite korake 3 i 4 dok ne ispravite reÄenicu; - prijeÄ‘ite na Lekciju 2.2. + prijeÄ‘ite na Lekciju 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JOÅ  BRISANJA + Lekcija 1.2.2: JOÅ  BRISANJA ** Otipkajte d$ za brisanje znakova do kraja linije. ** @@ -224,12 +224,12 @@ NAPOMENA: Vim će prikazati slovo d na zadnjoj liniji kad ga otipkate. ---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. - 5. PrijeÄ‘ite na Lekciju 2.3 za bolje objaÅ¡njenje. + 5. PrijeÄ‘ite na Lekciju 1.2.3 za bolje objaÅ¡njenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA + Lekcija 1.2.3: UKRATKO O OPERATORIMA I POKRETIMA Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. @@ -252,7 +252,7 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će pomicati kursor kao Å¡to je navedeno. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORIÅ TENJE BROJANJA ZA POKRETE + Lekcija 1.2.4: KORIÅ TENJE BROJANJA ZA POKRETE ** Tipkanjem nekog broja prije pokreta, pokret se izvrÅ¡ava toliko puta. ** @@ -269,13 +269,13 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će ---> ReÄenica sa rijeÄima po kojoj možete pomicati kursor. - 6. PrijeÄ‘ite na Lekciju 2.5. + 6. PrijeÄ‘ite na Lekciju 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORIÅ TENJE BROJANJA ZA VEĆE BRISANJE + Lekcija 1.2.5: KORIÅ TENJE BROJANJA ZA VEĆE BRISANJE ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** @@ -298,7 +298,7 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERIRANJE NAD LINIJAMA + Lekcija 1.2.6: OPERIRANJE NAD LINIJAMA ** Otipkajte dd za brisanje cijele linije. ** @@ -321,7 +321,7 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: NAREDBA PONIÅ TENJA + Lekcija 1.2.7: NAREDBA PONIÅ TENJA ** Pritisnite u za poniÅ¡tenje zadnje naredbe, U za cijelu liniju. ** @@ -341,10 +341,10 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će ---> Poopravite pogreÅ¡ke nna ovvoj liniji ii pooniÅ¡titeee ih. - 8. Vrlo korisne naredbe. PrijeÄ‘ite na sažetak Lekcije 2. + 8. Vrlo korisne naredbe. PrijeÄ‘ite na sažetak Lekcije 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2 SAŽETAK + Lekcija 1.2 SAŽETAK 1. Brisanje od kursora do sljedeće rijeÄi: dw @@ -367,7 +367,7 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će Za vraćanja promjena, utipkajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: NAREDBA POSTAVI + Lekcija 1.3.1: NAREDBA POSTAVI ** p za unos prethodno izbrisanog teksta iza kursora. ** @@ -390,7 +390,7 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: NAREDBA PROMJENE + Lekcija 1.3.2: NAREDBA PROMJENE ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** @@ -407,13 +407,13 @@ NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će ---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ---> Kada je ova linija tipkana, netko je pritiskao krive tipke! - 5. PrijeÄ‘ite na Lekciju 3.2. + 5. PrijeÄ‘ite na Lekciju 1.3.2. NAPOMENA: Prisjetite da trebate uÄiti vježbanjem, ne pamćenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR MIJENJANJA + Lekcija 1.3.3: OPERATOR MIJENJANJA ** Za mijenjanje do kraja rijeÄi, istipkajte ce . ** @@ -436,7 +436,7 @@ NAPOMENA: Prisjetite da trebate uÄiti vježbanjem, ne pamćenjem. Primijetite da ce briÅ¡e rijeÄ i postavlja Vim u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: JOÅ  MIJENJANJA KORIÅ TENJEM c + Lekcija 1.3.4: JOÅ  MIJENJANJA KORIÅ TENJEM c ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** @@ -459,7 +459,7 @@ Primijetite da ce briÅ¡e rijeÄ i postavlja Vim u Insert mod. NAPOMENA: Možete koristiti Backspace za ispravljanje greÅ¡aka. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3 SAŽETAK + Lekcija 1.3 SAŽETAK 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo @@ -482,7 +482,7 @@ PrijeÄ‘ite na sljedeću lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE + Lekcija 1.4.1: POZICIJA KURSORA I STATUS DATOTEKE ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** @@ -505,7 +505,7 @@ NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako 4. Ako ste spremni, izvrÅ¡ite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: NAREDBE TRAŽENJA + Lekcija 1.4.2: NAREDBE TRAŽENJA ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** @@ -528,7 +528,7 @@ NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako NAPOMENA: Ako se traženjem doÄ‘e do kraja datoteke nastavit će se od njenog poÄetka osim ako je postavka 'wrapscan' deaktivirana. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRAŽENJE PRIPADAJUĆE ZAGRADE + Lekcija 1.4.3: TRAŽENJE PRIPADAJUĆE ZAGRADE ** Otipkajte % za pronalazak pripadajuće ), ] ili } . ** @@ -551,7 +551,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajućim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: NAREDBE ZAMIJENE + Lekcija 1.4.4: NAREDBE ZAMIJENE ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** @@ -574,7 +574,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajućim zagradama! potvrdu zamjene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4 SAŽETAK + Lekcija 1.4 SAŽETAK 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. @@ -597,7 +597,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajućim zagradama! Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVRÅ AVANJE VANJSKIH NAREDBI + Lekcija 1.5.1: IZVRÅ AVANJE VANJSKIH NAREDBI ** Otipkajte :! sa vanjskom naredbom koju želite izvrÅ¡iti. ** @@ -620,7 +620,7 @@ NAPOMENA: Sve : naredbe se izvrÅ¡avaju nakon Å¡to pritisnete ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VIÅ E O SPREMANJU DATOTEKA + Lekcija 1.5.2: VIÅ E O SPREMANJU DATOTEKA ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** @@ -643,7 +643,7 @@ NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SPREMANJE OZNAÄŒENOG TEKSTA + Lekcija 1.5.3: SPREMANJE OZNAÄŒENOG TEKSTA ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** @@ -666,14 +666,14 @@ NAPOMENA: Tipka v zapoÄinje Vizualno oznaÄavanje. Možete pomicati kursor unaokolo kako bi mijenjali veliÄinu oznaÄenog teksta. Možete koristiti i operatore. Npr, d će izbrisati oznaÄeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÄŒITAVANJE DATOTEKA + Lekcija 1.5.4: UÄŒITAVANJE DATOTEKA ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** 1. Postavite kursor iznad ove linije. -NAPOMENA: Nakon Å¡to izvrÅ¡ite 2. korak vidjeti će te tekst iz Lekcije 5.3. +NAPOMENA: Nakon Å¡to izvrÅ¡ite 2. korak vidjeti će te tekst iz Lekcije 1.5.3. Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. 2. UÄitajte vaÅ¡u TEST datoteku koristeći naredbu :r TEST @@ -681,7 +681,7 @@ NAPOMENA: Nakon Å¡to izvrÅ¡ite 2. korak vidjeti će te tekst iz Lekcije 5.3. Sadržaj uÄitane datoteke je ubaÄen liniju ispod kursora. 3. Kako bi provjerili da je datoteka uÄitana, vratite kursor unatrag i - primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. + primijetite dvije kopije Lekcije 1.5.3, originalnu i onu iz datoteke. NAPOMENA: Možete takoÄ‘er uÄitati ispis vanjske naredbe. Npr, :r !ls će uÄitati ispis ls naredbe i postaviti ispis liniju ispod @@ -689,7 +689,7 @@ NAPOMENA: Možete takoÄ‘er uÄitati ispis vanjske naredbe. Npr, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5 SAŽETAK + Lekcija 1.5 SAŽETAK 1. :!naredba izvrÅ¡ava vanjsku naredbu. @@ -712,7 +712,7 @@ NAPOMENA: Možete takoÄ‘er uÄitati ispis vanjske naredbe. Npr, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: NAREDBA OTVORI + Lekcija 1.6.1: NAREDBA OTVORI ** Pritisnite o kako bi otvorili liniju ispod kursora @@ -735,7 +735,7 @@ NAPOMENA: Možete takoÄ‘er uÄitati ispis vanjske naredbe. Npr, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: NAREDBA DODAJ + Lekcija 1.6.2: NAREDBA DODAJ ** Otipkajte a za dodavanje teksta IZA kursora. ** @@ -758,7 +758,7 @@ NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina razlika je u poziciji od koje će se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÄŒIN MIJENJANJA + Lekcija 1.6.3: DRUGI NAÄŒIN MIJENJANJA ** Otipkajte veliko R kako bi zamijelili viÅ¡e od jednog znaka. ** @@ -781,7 +781,7 @@ NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, svaki otipkani znak briÅ¡e već postojeći. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA + Lekcija 1.6.4: KOPIRANJE I LIJEPLJENJE TEKSTA ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** @@ -804,7 +804,7 @@ NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, NAPOMENA: možete koristiti y kao operator; yw kopira jednu rijeÄ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: MIJENJANJE POSTAVKI + Lekcija 1.6.5: MIJENJANJE POSTAVKI ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** @@ -827,7 +827,7 @@ NAPOMENA: Za neoznaÄavanje pronaÄ‘enih izraza otipkajte: :nohlsearch NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi koristite \c u izrazu: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6 SAŽETAK + Lekcija 1.6 SAŽETAK 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje linije IZNAD kursora. @@ -850,7 +850,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIVANJE POMOĆI + Lekcija 1.7.1: DOBIVANJE POMOĆI ** Koristite on-line sustav pomoći ** @@ -873,7 +873,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE SKRIPTE + Lekcija 1.7.2: PRAVLJENJE SKRIPTE ** Aktivirajte Vim mogućnosti ** @@ -896,7 +896,7 @@ NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi Za viÅ¡e informacija otipkajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVRÅ AVANJE + Lekcija 1.7.3: AUTOMATSKO DOVRÅ AVANJE ** DovrÅ¡avanje iz naredbene linije pomoću CTRL-D i ** @@ -919,7 +919,7 @@ NAPOMENA: Moguće je dopuniti mnoge naredbe. Koristite CTRL-D i . NaroÄito je korisno za :help naredbe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7 SAŽETAK + Lekcija 1.7 SAŽETAK 1. Otipkajte :help ili pritisnite ili za pomoć. diff --git a/runtime/tutor/tutor.hu b/runtime/tutor/tutor1.hu similarity index 92% rename from runtime/tutor/tutor.hu rename to runtime/tutor/tutor1.hu index d895e19740..2e86f80bbe 100644 --- a/runtime/tutor/tutor.hu +++ b/runtime/tutor/tutor1.hu @@ -20,11 +20,11 @@ hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti! Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és - Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1-es + Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1.1-es lecke teljesen a képernyõn legyen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1. lecke: A KURZOR MOZGATÁSA + 1.1.1. lecke: A KURZOR MOZGATÁSA ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** @@ -38,7 +38,7 @@ 2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik! ---> Most tudja, hogyan mehet a következõ leckére. - 3. A lefelé gomb használatával menjen a 1.2. leckére! + 3. A lefelé gomb használatával menjen a 1.1.2. leckére! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy normál módba kerüljön, és ismételje meg a parancsot! @@ -47,7 +47,7 @@ Megj: A kurzor gomboknak is m sokkal gyorsabban tud, mozogni, ha hozzászokik. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL + 1.1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! @@ -69,9 +69,9 @@ Megj: A kurzor gomboknak is m 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket 1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután - menjen az 1.3. leckére. + menjen az 1.1.3. leckére. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS + 1.1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS ** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** @@ -87,13 +87,13 @@ Megj: A kurzor gomboknak is m ---> ÕÕszi éjjjell izziik aa galaggonya rruuhája. - 5. Ha a sor helyes, ugorjon a 1.4. leckére. + 5. Ha a sor helyes, ugorjon a 1.1.4. leckére. MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS + 1.1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS ** Normál módban i megnyomásával lehet beilleszteni. ** @@ -116,7 +116,7 @@ MEGJ: A tanul ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. LECKE ÖSSZEFOGLALÓJA + 1.1. LECKE ÖSSZEFOGLALÓJA 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. @@ -135,11 +135,11 @@ MEGJ: A tanul MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett részben befejezett parancsot. -Most folytassuk a 2. leckével! +Most folytassuk a 1.2. leckével! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1. lecke: TÖRLÕ UTASÍTÁSOK + 1.2.1. lecke: TÖRLÕ UTASÍTÁSOK ** dw töröl a szó végéig. ** @@ -158,10 +158,10 @@ Most folytassuk a 2. leck ---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. - 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! + 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 1.2.2 leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS + 1.2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS ** d$ beírásával a sor végéig törölhet. ** @@ -177,14 +177,14 @@ Most folytassuk a 2. leck ---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. - 5. Menjen a 2.3. leckére, hogy megértse mi történt! + 5. Menjen a 1.2.3. leckére, hogy megértse mi történt! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL + 1.2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL A d (delete=törlés) utasítás formája a következõ: @@ -207,7 +207,7 @@ MEGJ: Csup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA + 1.2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA ** dd beírásával törölheti az egész sort. ** @@ -230,7 +230,7 @@ MEGJ: Csup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS + 1.2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** @@ -247,12 +247,12 @@ MEGJ: Csup ---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 1.2. lecke összefoglalójára. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. LECKE ÖSSZEFOGLALÓJA + 1.2. LECKE ÖSSZEFOGLALÓJA 1. Törlés a kurzortól a szó végéig: dw @@ -275,7 +275,7 @@ MEGJ: Csup Visszavonások visszavonása: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS + 1.3.1. lecke: A BEILLESZTÉS (PUT) PARANCS ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** @@ -299,7 +299,7 @@ MEGJ: Csup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS + 1.3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS ** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** @@ -315,13 +315,13 @@ MEGJ: Csup ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Menjünk a 3.2. leckére! + 5. Menjünk a 1.3.2. leckére! MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CSERE (CHANGE) PARANCS + 1.3.3. lecke: A CSERE (CHANGE) PARANCS ** A szó egy részének megváltoztatásához írjuk: cw . ** @@ -347,7 +347,7 @@ Vegy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL + 1.3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** @@ -370,7 +370,7 @@ Vegy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. LECKE ÖSSZEFOGLALÓJA + 1.3. LECKE ÖSSZEFOGLALÓJA 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget @@ -392,7 +392,7 @@ Ugorjunk a k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1. lecke: HELY ÉS FÁJLÁLLAPOT + 1.4.1. lecke: HELY ÉS FÁJLÁLLAPOT ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. @@ -415,7 +415,7 @@ Ugorjunk a k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A KERESÉS (SEARCH) PARANCS + 1.4.2. lecke: A KERESÉS (SEARCH) PARANCS ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** @@ -436,7 +436,7 @@ Megj: Ha a keres ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE + 1.4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE ** % leütésével megtaláljuk a ),], vagy } párját. ** @@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA + 1.4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** @@ -483,7 +483,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. LECKE ÖSSZEFOGLALÓJA + 1.4. LECKE ÖSSZEFOGLALÓJA 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. @@ -507,7 +507,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA + 1.5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA ** :! után külsõ parancsot írva végrehajtódik a parancs. ** @@ -530,7 +530,7 @@ Megj: Minden : parancs ut ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL + 1.5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** @@ -554,7 +554,7 @@ Megj: Ha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA + 1.5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** @@ -579,7 +579,7 @@ Megj: Ha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFÛZÉSE + 1.5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFÛZÉSE ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** @@ -588,7 +588,7 @@ Megj: Ha 2. Helyezze a kurzort ennek az oldalnak a tetejére. -MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva +MEGJ: A 3. lépés után az 1.5.3. leckét fogja látni. Azután LEFELÉ indulva keresse meg ismét ezt a leckét. 3. Most szúrja be a TESZT nevû fájlt a :r TESZT paranccsal, ahol @@ -597,13 +597,13 @@ MEGJ: A 3. l MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. 4. Hogy ellenõrizzük, hogy a fájlt tényleg beillesztettük, menjen - vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti + vissza, és nézze meg, hogy kétszer szerepel az 1.5.3. lecke! Az eredeti mellett a fájlból bemásolt is ott van. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. LECKE ÖSSZEFOGLALÓJA + 1.5. LECKE ÖSSZEFOGLALÓJA 1. :!parancs végrehajt egy külsõ utasítást. @@ -626,7 +626,7 @@ MEGJ: A f ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS + 1.6.1. lecke: A MEGNYITÁS (OPEN) PARANCS ** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** @@ -651,7 +651,7 @@ ezen a soron ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2. lecke: AZ APPEND PARANCS + 1.6.2. lecke: AZ APPEND PARANCS ** a lenyomásával a kurzor UTÁN szúrhatunk szöveget. ** @@ -677,7 +677,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA + 1.6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA ** Nagy R beírásával írhat felül több mint egy karaktert. ** @@ -701,7 +701,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4. lecke: BEÁLLÍTÁSOK + 1.6.4. lecke: BEÁLLÍTÁSOK ** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl ** @@ -724,7 +724,7 @@ Megj: A Vimben a sor legv 6. A kiemelést szüntessük meg alábbi utasítások egyikével: :set nohls vagy :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. LECKE ÖSSZEFOGLALÓJA + 1.6. LECKE ÖSSZEFOGLALÓJA 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új @@ -747,7 +747,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI + 1.7. lecke: AZ ON-LINE SÚGÓ PARANCSAI ** Az online súgórendszer használata ** @@ -770,7 +770,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 8. lecke: INDÍTÓSZKRIPT ÍRÁSA + 1.8. lecke: INDÍTÓSZKRIPT ÍRÁSA ** A Vim lehetõségeinek beállítása ** diff --git a/runtime/tutor/tutor.hu.cp1250 b/runtime/tutor/tutor1.hu.cp1250 similarity index 92% rename from runtime/tutor/tutor.hu.cp1250 rename to runtime/tutor/tutor1.hu.cp1250 index d895e19740..2e86f80bbe 100644 --- a/runtime/tutor/tutor.hu.cp1250 +++ b/runtime/tutor/tutor1.hu.cp1250 @@ -20,11 +20,11 @@ hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti! Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és - Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1-es + Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1.1-es lecke teljesen a képernyõn legyen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1. lecke: A KURZOR MOZGATÁSA + 1.1.1. lecke: A KURZOR MOZGATÁSA ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** @@ -38,7 +38,7 @@ 2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik! ---> Most tudja, hogyan mehet a következõ leckére. - 3. A lefelé gomb használatával menjen a 1.2. leckére! + 3. A lefelé gomb használatával menjen a 1.1.2. leckére! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy normál módba kerüljön, és ismételje meg a parancsot! @@ -47,7 +47,7 @@ Megj: A kurzor gomboknak is m sokkal gyorsabban tud, mozogni, ha hozzászokik. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL + 1.1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! @@ -69,9 +69,9 @@ Megj: A kurzor gomboknak is m 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket 1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután - menjen az 1.3. leckére. + menjen az 1.1.3. leckére. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS + 1.1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS ** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** @@ -87,13 +87,13 @@ Megj: A kurzor gomboknak is m ---> ÕÕszi éjjjell izziik aa galaggonya rruuhája. - 5. Ha a sor helyes, ugorjon a 1.4. leckére. + 5. Ha a sor helyes, ugorjon a 1.1.4. leckére. MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS + 1.1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS ** Normál módban i megnyomásával lehet beilleszteni. ** @@ -116,7 +116,7 @@ MEGJ: A tanul ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. LECKE ÖSSZEFOGLALÓJA + 1.1. LECKE ÖSSZEFOGLALÓJA 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. @@ -135,11 +135,11 @@ MEGJ: A tanul MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett részben befejezett parancsot. -Most folytassuk a 2. leckével! +Most folytassuk a 1.2. leckével! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1. lecke: TÖRLÕ UTASÍTÁSOK + 1.2.1. lecke: TÖRLÕ UTASÍTÁSOK ** dw töröl a szó végéig. ** @@ -158,10 +158,10 @@ Most folytassuk a 2. leck ---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. - 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! + 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 1.2.2 leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS + 1.2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS ** d$ beírásával a sor végéig törölhet. ** @@ -177,14 +177,14 @@ Most folytassuk a 2. leck ---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. - 5. Menjen a 2.3. leckére, hogy megértse mi történt! + 5. Menjen a 1.2.3. leckére, hogy megértse mi történt! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL + 1.2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL A d (delete=törlés) utasítás formája a következõ: @@ -207,7 +207,7 @@ MEGJ: Csup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA + 1.2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA ** dd beírásával törölheti az egész sort. ** @@ -230,7 +230,7 @@ MEGJ: Csup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS + 1.2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** @@ -247,12 +247,12 @@ MEGJ: Csup ---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 1.2. lecke összefoglalójára. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. LECKE ÖSSZEFOGLALÓJA + 1.2. LECKE ÖSSZEFOGLALÓJA 1. Törlés a kurzortól a szó végéig: dw @@ -275,7 +275,7 @@ MEGJ: Csup Visszavonások visszavonása: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS + 1.3.1. lecke: A BEILLESZTÉS (PUT) PARANCS ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** @@ -299,7 +299,7 @@ MEGJ: Csup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS + 1.3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS ** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** @@ -315,13 +315,13 @@ MEGJ: Csup ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Menjünk a 3.2. leckére! + 5. Menjünk a 1.3.2. leckére! MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CSERE (CHANGE) PARANCS + 1.3.3. lecke: A CSERE (CHANGE) PARANCS ** A szó egy részének megváltoztatásához írjuk: cw . ** @@ -347,7 +347,7 @@ Vegy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL + 1.3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** @@ -370,7 +370,7 @@ Vegy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. LECKE ÖSSZEFOGLALÓJA + 1.3. LECKE ÖSSZEFOGLALÓJA 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget @@ -392,7 +392,7 @@ Ugorjunk a k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1. lecke: HELY ÉS FÁJLÁLLAPOT + 1.4.1. lecke: HELY ÉS FÁJLÁLLAPOT ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. @@ -415,7 +415,7 @@ Ugorjunk a k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A KERESÉS (SEARCH) PARANCS + 1.4.2. lecke: A KERESÉS (SEARCH) PARANCS ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** @@ -436,7 +436,7 @@ Megj: Ha a keres ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE + 1.4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE ** % leütésével megtaláljuk a ),], vagy } párját. ** @@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA + 1.4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** @@ -483,7 +483,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. LECKE ÖSSZEFOGLALÓJA + 1.4. LECKE ÖSSZEFOGLALÓJA 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. @@ -507,7 +507,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA + 1.5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA ** :! után külsõ parancsot írva végrehajtódik a parancs. ** @@ -530,7 +530,7 @@ Megj: Minden : parancs ut ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL + 1.5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** @@ -554,7 +554,7 @@ Megj: Ha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA + 1.5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** @@ -579,7 +579,7 @@ Megj: Ha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFÛZÉSE + 1.5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFÛZÉSE ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** @@ -588,7 +588,7 @@ Megj: Ha 2. Helyezze a kurzort ennek az oldalnak a tetejére. -MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva +MEGJ: A 3. lépés után az 1.5.3. leckét fogja látni. Azután LEFELÉ indulva keresse meg ismét ezt a leckét. 3. Most szúrja be a TESZT nevû fájlt a :r TESZT paranccsal, ahol @@ -597,13 +597,13 @@ MEGJ: A 3. l MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. 4. Hogy ellenõrizzük, hogy a fájlt tényleg beillesztettük, menjen - vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti + vissza, és nézze meg, hogy kétszer szerepel az 1.5.3. lecke! Az eredeti mellett a fájlból bemásolt is ott van. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. LECKE ÖSSZEFOGLALÓJA + 1.5. LECKE ÖSSZEFOGLALÓJA 1. :!parancs végrehajt egy külsõ utasítást. @@ -626,7 +626,7 @@ MEGJ: A f ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS + 1.6.1. lecke: A MEGNYITÁS (OPEN) PARANCS ** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** @@ -651,7 +651,7 @@ ezen a soron ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2. lecke: AZ APPEND PARANCS + 1.6.2. lecke: AZ APPEND PARANCS ** a lenyomásával a kurzor UTÁN szúrhatunk szöveget. ** @@ -677,7 +677,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA + 1.6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA ** Nagy R beírásával írhat felül több mint egy karaktert. ** @@ -701,7 +701,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4. lecke: BEÁLLÍTÁSOK + 1.6.4. lecke: BEÁLLÍTÁSOK ** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl ** @@ -724,7 +724,7 @@ Megj: A Vimben a sor legv 6. A kiemelést szüntessük meg alábbi utasítások egyikével: :set nohls vagy :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. LECKE ÖSSZEFOGLALÓJA + 1.6. LECKE ÖSSZEFOGLALÓJA 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új @@ -747,7 +747,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI + 1.7. lecke: AZ ON-LINE SÚGÓ PARANCSAI ** Az online súgórendszer használata ** @@ -770,7 +770,7 @@ Megj: A Vimben a sor legv ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 8. lecke: INDÍTÓSZKRIPT ÍRÁSA + 1.8. lecke: INDÍTÓSZKRIPT ÍRÁSA ** A Vim lehetõségeinek beállítása ** diff --git a/runtime/tutor/tutor.hu.utf-8 b/runtime/tutor/tutor1.hu.utf-8 similarity index 92% rename from runtime/tutor/tutor.hu.utf-8 rename to runtime/tutor/tutor1.hu.utf-8 index f2e0d403c6..f9482e40c6 100644 --- a/runtime/tutor/tutor.hu.utf-8 +++ b/runtime/tutor/tutor1.hu.utf-8 @@ -20,11 +20,11 @@ hogy megfelelÅ‘en megtanulja azokat. Ha csak olvassa, elfelejti! Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és - Nyomja meg megfelelÅ‘ számúszor a j gombot, hogy az 1.1-es + Nyomja meg megfelelÅ‘ számúszor a j gombot, hogy az 1.1.1-es lecke teljesen a képernyÅ‘n legyen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1. lecke: A KURZOR MOZGATÃSA + 1.1.1. lecke: A KURZOR MOZGATÃSA ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** @@ -38,7 +38,7 @@ 2. Tartsa lenyomva a lefelét (j), akkor ismétlÅ‘dik! ---> Most tudja, hogyan mehet a következÅ‘ leckére. - 3. A lefelé gomb használatával menjen a 1.2. leckére! + 3. A lefelé gomb használatával menjen a 1.1.2. leckére! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy normál módba kerüljön, és ismételje meg a parancsot! @@ -47,7 +47,7 @@ Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával sokkal gyorsabban tud, mozogni, ha hozzászokik. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2. lecke: BE ÉS KILÉPÉS A VIMBÅL + 1.1.2. lecke: BE ÉS KILÉPÉS A VIMBÅL !! MEGJ: MielÅ‘tt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! @@ -69,9 +69,9 @@ Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket 1-tÅ‘l 3-ig, hogy kilépjen és visszatérjen a szerkesztÅ‘be. Azután - menjen az 1.3. leckére. + menjen az 1.1.3. leckére. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS + 1.1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS ** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** @@ -87,13 +87,13 @@ Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával ---> ÅÅszi éjjjell izziik aa galaggonya rruuhája. - 5. Ha a sor helyes, ugorjon a 1.4. leckére. + 5. Ha a sor helyes, ugorjon a 1.1.4. leckére. MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÃS + 1.1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÃS ** Normál módban i megnyomásával lehet beilleszteni. ** @@ -116,7 +116,7 @@ MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. LECKE ÖSSZEFOGLALÓJA + 1.1. LECKE ÖSSZEFOGLALÓJA 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. @@ -135,11 +135,11 @@ MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tan MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett részben befejezett parancsot. -Most folytassuk a 2. leckével! +Most folytassuk a 1.2. leckével! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1. lecke: TÖRLÅ UTASÃTÃSOK + 1.2.1. lecke: TÖRLÅ UTASÃTÃSOK ** dw töröl a szó végéig. ** @@ -158,10 +158,10 @@ Most folytassuk a 2. leckével! ---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. - 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! + 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 1.2.2 leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2. lecke: MÉG TÖBB TÖRLÅ UTASÃTÃS + 1.2.2. lecke: MÉG TÖBB TÖRLÅ UTASÃTÃS ** d$ beírásával a sor végéig törölhet. ** @@ -177,14 +177,14 @@ Most folytassuk a 2. leckével! ---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. - 5. Menjen a 2.3. leckére, hogy megértse mi történt! + 5. Menjen a 1.2.3. leckére, hogy megértse mi történt! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3. lecke: UTASÃTÃSOKRÓL ÉS MOZGÃSOKRÓL + 1.2.3. lecke: UTASÃTÃSOKRÓL ÉS MOZGÃSOKRÓL A d (delete=törlés) utasítás formája a következÅ‘: @@ -207,7 +207,7 @@ MEGJ: Csupán a mozgás begépelésével (parancs nélkül) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4. lecke: EGÉSZ SOROK FELDOLGOZÃSA + 1.2.4. lecke: EGÉSZ SOROK FELDOLGOZÃSA ** dd beírásával törölheti az egész sort. ** @@ -230,7 +230,7 @@ MEGJ: Csupán a mozgás begépelésével (parancs nélkül) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÃS (UNDO) PARANCS + 1.2.5. lecke: A VISSZAVONÃS (UNDO) PARANCS ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** @@ -247,12 +247,12 @@ MEGJ: Csupán a mozgás begépelésével (parancs nélkül) ---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 1.2. lecke összefoglalójára. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. LECKE ÖSSZEFOGLALÓJA + 1.2. LECKE ÖSSZEFOGLALÓJA 1. Törlés a kurzortól a szó végéig: dw @@ -275,7 +275,7 @@ MEGJ: Csupán a mozgás begépelésével (parancs nélkül) Visszavonások visszavonása: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS + 1.3.1. lecke: A BEILLESZTÉS (PUT) PARANCS ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** @@ -299,7 +299,7 @@ MEGJ: Csupán a mozgás begépelésével (parancs nélkül) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: AZ ÃTÃRÃS (REPLACE) PARANCS + 1.3.2. lecke: AZ ÃTÃRÃS (REPLACE) PARANCS ** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** @@ -315,13 +315,13 @@ MEGJ: Csupán a mozgás begépelésével (parancs nélkül) ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Menjünk a 3.2. leckére! + 5. Menjünk a 1.3.2. leckére! MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CSERE (CHANGE) PARANCS + 1.3.3. lecke: A CSERE (CHANGE) PARANCS ** A szó egy részének megváltoztatásához írjuk: cw . ** @@ -347,7 +347,7 @@ Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4. lecke: TÖBBFÉLE VÃLTOZTATÃS c-VEL + 1.3.4. lecke: TÖBBFÉLE VÃLTOZTATÃS c-VEL ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** @@ -370,7 +370,7 @@ Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. LECKE ÖSSZEFOGLALÓJA + 1.3. LECKE ÖSSZEFOGLALÓJA 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget @@ -392,7 +392,7 @@ Ugorjunk a következÅ‘ leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1. lecke: HELY ÉS FÃJLÃLLAPOT + 1.4.1. lecke: HELY ÉS FÃJLÃLLAPOT ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. @@ -415,7 +415,7 @@ Ugorjunk a következÅ‘ leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A KERESÉS (SEARCH) PARANCS + 1.4.2. lecke: A KERESÉS (SEARCH) PARANCS ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** @@ -436,7 +436,7 @@ Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3. lecke: ZÃRÓJELEK PÃRJÃNAK KERESÉSE + 1.4.3. lecke: ZÃRÓJELEK PÃRJÃNAK KERESÉSE ** % leütésével megtaláljuk a ),], vagy } párját. ** @@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÃK KIJAVÃTÃSÃNAK EGY MÓDJA + 1.4.4. lecke: A HIBÃK KIJAVÃTÃSÃNAK EGY MÓDJA ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** @@ -483,7 +483,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. LECKE ÖSSZEFOGLALÓJA + 1.4. LECKE ÖSSZEFOGLALÓJA 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. @@ -507,7 +507,7 @@ Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1. lecke: KÃœLSÅ PARANCS VÉGREHAJTÃSA + 1.5.1. lecke: KÃœLSÅ PARANCS VÉGREHAJTÃSA ** :! után külsÅ‘ parancsot írva végrehajtódik a parancs. ** @@ -530,7 +530,7 @@ Megj: Minden : parancs után -t kell ütni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BÅVEBBEN A FÃJLOK ÃRÃSÃRÓL + 1.5.2. lecke: BÅVEBBEN A FÃJLOK ÃRÃSÃRÓL ** A fájlok változásait így írhatjuk ki :w FÃJLNÉV. ** @@ -554,7 +554,7 @@ Megj: Ha Ön kilépne a VimbÅ‘l és és visszatérne a TESZT fájlnévvel, akkor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3. lecke: EGY KIVÃLASZTOTT RÉSZ KIÃRÃSA + 1.5.3. lecke: EGY KIVÃLASZTOTT RÉSZ KIÃRÃSA ** A fájl egy részének kiírásához írja :#,# w FÃJLNÉV ** @@ -579,7 +579,7 @@ Megj: Ha Ön kilépne a VimbÅ‘l és és visszatérne a TESZT fájlnévvel, akkor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4. lecke: FÃJLOK VISSZAÃLLÃTÃSA ÉS ÖSSZEFÅ°ZÉSE + 1.5.4. lecke: FÃJLOK VISSZAÃLLÃTÃSA ÉS ÖSSZEFÅ°ZÉSE ** Egy fájl tartalmának beillesztéséhez írja :r FÃJLNÉV ** @@ -588,7 +588,7 @@ Megj: Ha Ön kilépne a VimbÅ‘l és és visszatérne a TESZT fájlnévvel, akkor 2. Helyezze a kurzort ennek az oldalnak a tetejére. -MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva +MEGJ: A 3. lépés után az 1.5.3. leckét fogja látni. Azután LEFELÉ indulva keresse meg ismét ezt a leckét. 3. Most szúrja be a TESZT nevű fájlt a :r TESZT paranccsal, ahol @@ -597,13 +597,13 @@ MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. 4. Hogy ellenÅ‘rizzük, hogy a fájlt tényleg beillesztettük, menjen - vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti + vissza, és nézze meg, hogy kétszer szerepel az 1.5.3. lecke! Az eredeti mellett a fájlból bemásolt is ott van. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. LECKE ÖSSZEFOGLALÓJA + 1.5. LECKE ÖSSZEFOGLALÓJA 1. :!parancs végrehajt egy külsÅ‘ utasítást. @@ -626,7 +626,7 @@ MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A MEGNYITÃS (OPEN) PARANCS + 1.6.1. lecke: A MEGNYITÃS (OPEN) PARANCS ** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** @@ -651,7 +651,7 @@ ezen a soron áll. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2. lecke: AZ APPEND PARANCS + 1.6.2. lecke: AZ APPEND PARANCS ** a lenyomásával a kurzor UTÃN szúrhatunk szöveget. ** @@ -677,7 +677,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonban ez elÅ‘djében ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3. lecke: AZ ÃTÃRÃS MÃSIK VÃLTOZATA + 1.6.3. lecke: AZ ÃTÃRÃS MÃSIK VÃLTOZATA ** Nagy R beírásával írhat felül több mint egy karaktert. ** @@ -701,7 +701,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonban ez elÅ‘djében ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4. lecke: BEÃLLÃTÃSOK + 1.6.4. lecke: BEÃLLÃTÃSOK ** Ãllítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetűktÅ‘l ** @@ -724,7 +724,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonban ez elÅ‘djében 6. A kiemelést szüntessük meg alábbi utasítások egyikével: :set nohls vagy :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. LECKE ÖSSZEFOGLALÓJA + 1.6. LECKE ÖSSZEFOGLALÓJA 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új @@ -747,7 +747,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonban ez elÅ‘djében ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI + 1.7. lecke: AZ ON-LINE SÚGÓ PARANCSAI ** Az online súgórendszer használata ** @@ -770,7 +770,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonban ez elÅ‘djében ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 8. lecke: INDÃTÓSZKRIPT ÃRÃSA + 1.8. lecke: INDÃTÓSZKRIPT ÃRÃSA ** A Vim lehetÅ‘ségeinek beállítása ** diff --git a/runtime/tutor/tutor.info b/runtime/tutor/tutor1.info similarity index 100% rename from runtime/tutor/tutor.info rename to runtime/tutor/tutor1.info diff --git a/runtime/tutor/tutor.it b/runtime/tutor/tutor1.it similarity index 93% rename from runtime/tutor/tutor.it rename to runtime/tutor/tutor1.it index ce3b9707b9..73a2289f5d 100644 --- a/runtime/tutor/tutor.it +++ b/runtime/tutor/tutor1.it @@ -20,9 +20,9 @@ Adesso, assicurati che il tasto BLOCCA-MAIUSCOLO non sia schiacciato e premi il tasto j tanto da muovere il cursore fino a che la - Lezione 1.1 riempia completamente lo schermo. + Lezione 1.1.1 riempia completamente lo schermo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.1: MOVIMENTI DEL CURSORE + Lezione 1.1.1: MOVIMENTI DEL CURSORE ** Per muovere il cursore, premi i tasti h,j,k,l come indicato. ** @@ -36,7 +36,7 @@ 2. Tieni schiacciato il tasto "giù" (j) finché non si ripete il movimento. Adesso sai come arrivare fino alla lezione seguente. - 3. Usando il tasto "giù" spostati alla Lezione 1.2. + 3. Usando il tasto "giù" spostati alla Lezione 1.1.2. NOTA: Quando non sei sicuro del tasto che hai premuto, premi per andare in Modalità Normale [Normal Mode]. Poi ri-immetti il comando che volevi. @@ -45,7 +45,7 @@ NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci a muoverti molto più rapidamente, dopo che ci si abitua. Davvero! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.2: USCIRE DA VIM + Lezione 1.1.2: USCIRE DA VIM !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! @@ -64,11 +64,11 @@ NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci NOTA: :q! SCARTA qualsiasi modifica fatta. In una delle prossime lezioni imparerai come salvare un file che hai modificato. - 5. Muovi in giù il cursore per passare alla lezione 1.3. + 5. Muovi in giù il cursore per passare alla lezione 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE + Lezione 1.1.3: MODIFICA DI TESTI - CANCELLAZIONE ** Premere x per cancellare il carattere sotto al cursore ** @@ -84,14 +84,14 @@ NOTA: :q! SCARTA qualsiasi modifica fatta. In una delle prossime ---> La mmucca saltòò finnoo allaa lunnna. - 5. Ora che la linea è corretta, vai alla Lezione 1.4 + 5. Ora che la linea è corretta, vai alla Lezione 1.1.4 NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ma impara facendo pratica. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO + Lezione 1.1.4: MODIFICA DI TESTI - INSERIMENTO ** Premere i per inserire testo. ** @@ -109,12 +109,12 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ---> C'era del tsto mncnt questa . ---> C'era del testo mancante da questa linea. - 5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5. + 5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA + Lezione 1.1.5: MODIFICA DI TESTI - AGGIUNTA ** Premere A per aggiungere testo a fine linea. ** @@ -134,17 +134,17 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ---> C'è anche del testo che ma C'è anche del testo che manca qui. - 5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6. + 5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.6: MODIFICARE UN FILE + Lezione 1.1.6: MODIFICARE UN FILE ** Usare :wq per salvare un file e uscire. ** !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! - 1. Esci da Vim come hai fatto nella lezione 1.2: :q! + 1. Esci da Vim come hai fatto nella lezione 1.1.2: :q! 2. Quando vedi il PROMPT della Shell, batti il comando: vim tutor 'vim' è il comando per richiamare Vim, 'tutor' è il nome del file che @@ -160,7 +160,7 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1 SOMMARIO + Lezione 1.1 SOMMARIO 1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl. @@ -180,10 +180,10 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, NOTA: premendo ritornerai in Modalità Normale o annullerai un comando errato che puoi aver inserito in parte. -Ora continua con la Lezione 2. +Ora continua con la Lezione 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.1: COMANDI DI CANCELLAZIONE + Lezione 1.2.1: COMANDI DI CANCELLAZIONE ** Batti dw per cancellare una parola. ** @@ -202,11 +202,11 @@ NOTA: La lettera d sar ---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase. - 5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 2.2. + 5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE + Lezione 1.2.2: ALTRI COMANDI DI CANCELLAZIONE ** Batti d$ per cancellare fino a fine linea. ** @@ -222,14 +222,14 @@ NOTA: La lettera d sar ---> Qualcuno ha battuto la fine di questa linea due volte. linea due volte. - 5. Vai alla Lezione 2.3 per capire il funzionamento di questo comando. + 5. Vai alla Lezione 1.2.3 per capire il funzionamento di questo comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.3: OPERATORI E MOVIMENTI + Lezione 1.2.3: OPERATORI E MOVIMENTI Molti comandi di modifica testi consistono in un operatore e un movimento. @@ -252,7 +252,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalit nessun operatore, il cursore si muoverà come specificato. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO + Lezione 1.2.4: USO DI UN CONTATORE PER UN MOVIMENTO ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** @@ -269,13 +269,13 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ---> Questa è solo una linea con parole all'interno della quale puoi muoverti. - 6. Vai alla Lezione 2.5. + 6. Vai alla Lezione 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU' + Lezione 1.2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU' ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** @@ -298,7 +298,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.6: LAVORARE SU LINEE INTERE + Lezione 1.2.6: LAVORARE SU LINEE INTERE ** Batti dd per cancellare un'intera linea. ** @@ -321,7 +321,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.7: IL COMANDO UNDO [ANNULLA] + Lezione 1.2.7: IL COMANDO UNDO [ANNULLA] ** Premi u per annullare gli ultimi comandi eseguiti. ** ** Premi U per annullare le modifiche all'ultima linea. ** @@ -338,13 +338,13 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo". - 8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 2. + 8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2 SOMMARIO + Lezione 1.2 SOMMARIO 1. Per cancellare dal cursore fino alla parola seguente batti: dw @@ -367,7 +367,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.1: IL COMANDO PUT [METTI, PONI] + Lezione 1.3.1: IL COMANDO PUT [METTI, PONI] ** Batti p per porre [put] testo (cancellato prima) dopo il cursore. ** @@ -390,7 +390,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE] + Lezione 1.3.2: IL COMANDO REPLACE [RIMPIAZZARE] ** Batti rx per rimpiazzare il carattere sotto al cursore con x . ** @@ -406,14 +406,14 @@ NOTA: Se batti solo il movimento mentre sei in Modalit ---> Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati! ---> Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati! - 5. Ora passa alla Lezione 3.3. + 5. Ora passa alla Lezione 1.3.3. NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.3: L'OPERATORE CHANGE [CAMBIA] + Lezione 1.3.3: L'OPERATORE CHANGE [CAMBIA] ** Per cambiare fino alla fine di una parola, batti ce . ** @@ -436,7 +436,7 @@ Nota che ce cancella la parola, e ti mette anche in Modalit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.4: ALTRI CAMBIAMENTI USANDO c + Lezione 1.3.4: ALTRI CAMBIAMENTI USANDO c ** L'operatore c [CHANGE] agisce sugli stessi movimenti di d [DELETE] ** @@ -459,7 +459,7 @@ Nota che ce cancella la parola, e ti mette anche in Modalit NOTA: Puoi usare il tasto Backspace se devi correggere errori di battitura. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3 SOMMARIO + Lezione 1.3 SOMMARIO 1. Per reinserire del testo appena cancellato, batti p . Questo @@ -482,7 +482,7 @@ Ora vai alla prossima Lezione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE + Lezione 1.4.1: POSIZIONAMENTO E SITUAZIONE FILE ** Batti CTRL-G per vedere a che punto sei nel file e la situazione ** ** del file. Batti G per raggiungere una linea nel file. ** @@ -505,7 +505,7 @@ NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello 4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.2: IL COMANDO SEARCH [RICERCA] + Lezione 1.4.2: IL COMANDO SEARCH [RICERCA] ** Batti / seguito da una frase per ricercare quella frase. ** @@ -528,7 +528,7 @@ NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file, a meno che l'opzione 'wrapscan' sia stata disattivata. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI + Lezione 1.4.3: RICERCA DI PARENTESI CORRISPONDENTI ** Batti % per trovare una ),], o } corrispondente. ** @@ -551,7 +551,7 @@ NOTA: Questo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE) + Lezione 1.4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE) ** Batti :s/vecchio/nuovo/g per sostituire 'nuovo' a 'vecchio'. ** @@ -574,7 +574,7 @@ NOTA: Questo ricevendo per ognuna una richiesta se effettuare o meno la sostituzione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4 SOMMARIO + Lezione 1.4 SOMMARIO 1. CTRL-G visualizza a che punto sei nel file e la situazione del file. @@ -597,7 +597,7 @@ NOTA: Questo Per sostituire tutte le occorrenze nel file batti :%s/vecchio/nuovo/g Per chiedere conferma ogni volta aggiungi 'c' :%s/vecchio/nuovo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO + Lezione 1.5.1: COME ESEGUIRE UN COMANDO ESTERNO ** Batti :! seguito da un comando esterno per eseguire quel comando. ** @@ -620,7 +620,7 @@ NOTA: Tutti i comandi : devono essere terminati premendo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE + Lezione 1.5.2: ANCORA SULLA SCRITTURA DEI FILE ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. ** @@ -643,7 +643,7 @@ NOTA: Se esci da Vim e riesegui Vim battendo vim TEST , il file aperto ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE + Lezione 1.5.3: SELEZIONARE IL TESTO DA SCRIVERE ** Per salvare una porzione di file, batti v movimento :w NOMEFILE ** @@ -666,14 +666,14 @@ NOTA: Battere v inizia una selezione visuale. Puoi muovere il cursore puoi usare un operatore per agire sul testo selezionato. Ad es., d cancella il testo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.4: INSERIRE E RIUNIRE FILE + Lezione 1.5.4: INSERIRE E RIUNIRE FILE ** Per inserire il contenuto di un file, batti :r NOMEFILE ** 1. Posiziona il cursore appena sopra questa riga. -NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3. +NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 1.5.3. Quindi spostati IN GIU' per tornare ancora a questa Lezione. 2. Ora inserisci il tuo file TEST con il comando :r TEST dove TEST è @@ -681,7 +681,7 @@ NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3. Il file richiesto è inserito sotto la linea in cui si trova il cursore. 3. Per verificare che un file è stato inserito, torna indietro col cursore - e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e + e nota che ci sono ora 2 copie della Lezione 1.5.3, quella originale e quella che viene dal file. NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. @@ -689,7 +689,7 @@ NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. in cui si trova il cursore. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5 SOMMARIO + Lezione 1.5 SOMMARIO 1. :!comando esegue un comando esterno. @@ -712,7 +712,7 @@ NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.1: IL COMANDO OPEN [APRIRE] + Lezione 1.6.1: IL COMANDO OPEN [APRIRE] ** Batti o per aprire una linea sotto il cursore ** @@ -735,7 +735,7 @@ NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE] + Lezione 1.6.2: IL COMANDO APPEND [AGGIUNGERE] ** Batti a per inserire testo DOPO il cursore. ** @@ -758,7 +758,7 @@ NOTA: a, i ed A entrano sempre in Modalit è dove verranno inseriti i caratteri. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE] + Lezione 1.6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE] ** Batti una R maiuscola per rimpiazzare più di un carattere. ** @@ -781,7 +781,7 @@ NOTA: La Modalit che viene battuto ricopre un carattere esistente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.4: COPIA E INCOLLA DEL TESTO + Lezione 1.6.4: COPIA E INCOLLA DEL TESTO ** usa l'operatore y per copiare del testo e p per incollarlo ** @@ -804,7 +804,7 @@ NOTA: La Modalit NOTA: Puoi usare y come operatore; yw copia una parola [word]. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.5: SET [IMPOSTA] UN'OPZIONE + Lezione 1.6.5: SET [IMPOSTA] UN'OPZIONE ** Imposta un'opzione per ignorare maiuscole/minuscole ** ** durante la ricerca/sostituzione ** @@ -827,7 +827,7 @@ NOTA: Per non evidenziare le occorrenze trovate batti: :nohlsearch NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c nel comando di ricerca: /nota\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6 SOMMARIO + Lezione 1.6 SOMMARIO 1. Batti o per aggiungere una linea SOTTO il cursore ed entrare in Modalità Inserimento. @@ -850,7 +850,7 @@ NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c 7. Usa il prefisso "no" per annullare una opzione: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7.1: OTTENERE AIUTO + Lezione 1.7.1: OTTENERE AIUTO ** Usa il sistema di aiuto on-line ** @@ -873,7 +873,7 @@ NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE + Lezione 1.7.2: PREPARARE UNO SCRIPT INIZIALE ** Attiva le opzioni Vim ** @@ -896,7 +896,7 @@ NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c Per maggiori informazioni batti: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7.3: COMPLETAMENTO + Lezione 1.7.3: COMPLETAMENTO ** Completamento linea comandi con CTRL-D e ** @@ -919,7 +919,7 @@ NOTA: Il completamento CTRL-D e . Particolarmente utile per :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7 Sommario + Lezione 1.7 Sommario 1. Batti :help o premi o per aprire una finestra di aiuto. diff --git a/runtime/tutor/tutor.it.utf-8 b/runtime/tutor/tutor1.it.utf-8 similarity index 93% rename from runtime/tutor/tutor.it.utf-8 rename to runtime/tutor/tutor1.it.utf-8 index d1f62e2774..235a1920d3 100644 --- a/runtime/tutor/tutor.it.utf-8 +++ b/runtime/tutor/tutor1.it.utf-8 @@ -20,9 +20,9 @@ Adesso, assicurati che il tasto BLOCCA-MAIUSCOLO non sia schiacciato e premi il tasto j tanto da muovere il cursore fino a che la - Lezione 1.1 riempia completamente lo schermo. + Lezione 1.1.1 riempia completamente lo schermo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.1: MOVIMENTI DEL CURSORE + Lezione 1.1.1: MOVIMENTI DEL CURSORE ** Per muovere il cursore, premi i tasti h,j,k,l come indicato. ** @@ -36,7 +36,7 @@ 2. Tieni schiacciato il tasto "giù" (j) finché non si ripete il movimento. Adesso sai come arrivare fino alla lezione seguente. - 3. Usando il tasto "giù" spostati alla Lezione 1.2. + 3. Usando il tasto "giù" spostati alla Lezione 1.1.2. NOTA: Quando non sei sicuro del tasto che hai premuto, premi per andare in Modalità Normale [Normal Mode]. Poi ri-immetti il comando che volevi. @@ -45,7 +45,7 @@ NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci a muoverti molto più rapidamente, dopo che ci si abitua. Davvero! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.2: USCIRE DA VIM + Lezione 1.1.2: USCIRE DA VIM !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! @@ -64,11 +64,11 @@ NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci NOTA: :q! SCARTA qualsiasi modifica fatta. In una delle prossime lezioni imparerai come salvare un file che hai modificato. - 5. Muovi in giù il cursore per passare alla lezione 1.3. + 5. Muovi in giù il cursore per passare alla lezione 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE + Lezione 1.1.3: MODIFICA DI TESTI - CANCELLAZIONE ** Premere x per cancellare il carattere sotto al cursore ** @@ -84,14 +84,14 @@ NOTA: :q! SCARTA qualsiasi modifica fatta. In una delle prossime ---> La mmucca saltòò finnoo allaa lunnna. - 5. Ora che la linea è corretta, vai alla Lezione 1.4 + 5. Ora che la linea è corretta, vai alla Lezione 1.1.4 NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ma impara facendo pratica. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO + Lezione 1.1.4: MODIFICA DI TESTI - INSERIMENTO ** Premere i per inserire testo. ** @@ -109,12 +109,12 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ---> C'era del tsto mncnt questa . ---> C'era del testo mancante da questa linea. - 5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5. + 5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA + Lezione 1.1.5: MODIFICA DI TESTI - AGGIUNTA ** Premere A per aggiungere testo a fine linea. ** @@ -134,17 +134,17 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ---> C'è anche del testo che ma C'è anche del testo che manca qui. - 5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6. + 5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1.6: MODIFICARE UN FILE + Lezione 1.1.6: MODIFICARE UN FILE ** Usare :wq per salvare un file e uscire. ** !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! - 1. Esci da Vim come hai fatto nella lezione 1.2: :q! + 1. Esci da Vim come hai fatto nella lezione 1.1.2: :q! 2. Quando vedi il PROMPT della Shell, batti il comando: vim tutor 'vim' è il comando per richiamare Vim, 'tutor' è il nome del file che @@ -160,7 +160,7 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 1 SOMMARIO + Lezione 1.1 SOMMARIO 1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl. @@ -180,10 +180,10 @@ NOTA: Mentre segui questa guida, non cercare di imparare a memoria, NOTA: premendo ritornerai in Modalità Normale o annullerai un comando errato che puoi aver inserito in parte. -Ora continua con la Lezione 2. +Ora continua con la Lezione 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.1: COMANDI DI CANCELLAZIONE + Lezione 1.2.1: COMANDI DI CANCELLAZIONE ** Batti dw per cancellare una parola. ** @@ -202,11 +202,11 @@ NOTA: La lettera d sarà visibile sull'ultima linea dello schermo mentre la ---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase. - 5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 2.2. + 5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE + Lezione 1.2.2: ALTRI COMANDI DI CANCELLAZIONE ** Batti d$ per cancellare fino a fine linea. ** @@ -222,14 +222,14 @@ NOTA: La lettera d sarà visibile sull'ultima linea dello schermo mentre la ---> Qualcuno ha battuto la fine di questa linea due volte. linea due volte. - 5. Vai alla Lezione 2.3 per capire il funzionamento di questo comando. + 5. Vai alla Lezione 1.2.3 per capire il funzionamento di questo comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.3: OPERATORI E MOVIMENTI + Lezione 1.2.3: OPERATORI E MOVIMENTI Molti comandi di modifica testi consistono in un operatore e un movimento. @@ -252,7 +252,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza nessun operatore, il cursore si muoverà come specificato. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO + Lezione 1.2.4: USO DI UN CONTATORE PER UN MOVIMENTO ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** @@ -269,13 +269,13 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ---> Questa è solo una linea con parole all'interno della quale puoi muoverti. - 6. Vai alla Lezione 2.5. + 6. Vai alla Lezione 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU' + Lezione 1.2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU' ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** @@ -298,7 +298,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.6: LAVORARE SU LINEE INTERE + Lezione 1.2.6: LAVORARE SU LINEE INTERE ** Batti dd per cancellare un'intera linea. ** @@ -321,7 +321,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2.7: IL COMANDO UNDO [ANNULLA] + Lezione 1.2.7: IL COMANDO UNDO [ANNULLA] ** Premi u per annullare gli ultimi comandi eseguiti. ** ** Premi U per annullare le modifiche all'ultima linea. ** @@ -338,13 +338,13 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo". - 8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 2. + 8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 2 SOMMARIO + Lezione 1.2 SOMMARIO 1. Per cancellare dal cursore fino alla parola seguente batti: dw @@ -367,7 +367,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.1: IL COMANDO PUT [METTI, PONI] + Lezione 1.3.1: IL COMANDO PUT [METTI, PONI] ** Batti p per porre [put] testo (cancellato prima) dopo il cursore. ** @@ -390,7 +390,7 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE] + Lezione 1.3.2: IL COMANDO REPLACE [RIMPIAZZARE] ** Batti rx per rimpiazzare il carattere sotto al cursore con x . ** @@ -406,14 +406,14 @@ NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza ---> Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati! ---> Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati! - 5. Ora passa alla Lezione 3.3. + 5. Ora passa alla Lezione 1.3.3. NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.3: L'OPERATORE CHANGE [CAMBIA] + Lezione 1.3.3: L'OPERATORE CHANGE [CAMBIA] ** Per cambiare fino alla fine di una parola, batti ce . ** @@ -436,7 +436,7 @@ Nota che ce cancella la parola, e ti mette anche in Modalità Inserimento ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3.4: ALTRI CAMBIAMENTI USANDO c + Lezione 1.3.4: ALTRI CAMBIAMENTI USANDO c ** L'operatore c [CHANGE] agisce sugli stessi movimenti di d [DELETE] ** @@ -459,7 +459,7 @@ Nota che ce cancella la parola, e ti mette anche in Modalità Inserimento NOTA: Puoi usare il tasto Backspace se devi correggere errori di battitura. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 3 SOMMARIO + Lezione 1.3 SOMMARIO 1. Per reinserire del testo appena cancellato, batti p . Questo @@ -482,7 +482,7 @@ Ora vai alla prossima Lezione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE + Lezione 1.4.1: POSIZIONAMENTO E SITUAZIONE FILE ** Batti CTRL-G per vedere a che punto sei nel file e la situazione ** ** del file. Batti G per raggiungere una linea nel file. ** @@ -505,7 +505,7 @@ NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello 4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.2: IL COMANDO SEARCH [RICERCA] + Lezione 1.4.2: IL COMANDO SEARCH [RICERCA] ** Batti / seguito da una frase per ricercare quella frase. ** @@ -528,7 +528,7 @@ NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file, a meno che l'opzione 'wrapscan' sia stata disattivata. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI + Lezione 1.4.3: RICERCA DI PARENTESI CORRISPONDENTI ** Batti % per trovare una ),], o } corrispondente. ** @@ -551,7 +551,7 @@ NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE) + Lezione 1.4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE) ** Batti :s/vecchio/nuovo/g per sostituire 'nuovo' a 'vecchio'. ** @@ -574,7 +574,7 @@ NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate! ricevendo per ognuna una richiesta se effettuare o meno la sostituzione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 4 SOMMARIO + Lezione 1.4 SOMMARIO 1. CTRL-G visualizza a che punto sei nel file e la situazione del file. @@ -597,7 +597,7 @@ NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate! Per sostituire tutte le occorrenze nel file batti :%s/vecchio/nuovo/g Per chiedere conferma ogni volta aggiungi 'c' :%s/vecchio/nuovo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO + Lezione 1.5.1: COME ESEGUIRE UN COMANDO ESTERNO ** Batti :! seguito da un comando esterno per eseguire quel comando. ** @@ -612,7 +612,7 @@ NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate! visualizza una lista della tua directory, proprio come se fossi in una "shell". Usa :!dir se ls non funziona. [Unix: ls MS-DOS: dir] -NOTA: È possibile in questo modo eseguire un comando a piacere, specificando +NOTA: E' possibile in questo modo eseguire un comando a piacere, specificando anche dei parametri per i comandi stessi. NOTA: Tutti i comandi : devono essere terminati premendo @@ -620,7 +620,7 @@ NOTA: Tutti i comandi : devono essere terminati premendo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE + Lezione 1.5.2: ANCORA SULLA SCRITTURA DEI FILE ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. ** @@ -643,7 +643,7 @@ NOTA: Se esci da Vim e riesegui Vim battendo vim TEST , il file aperto ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE + Lezione 1.5.3: SELEZIONARE IL TESTO DA SCRIVERE ** Per salvare una porzione di file, batti v movimento :w NOMEFILE ** @@ -666,14 +666,14 @@ NOTA: Battere v inizia una selezione visuale. Puoi muovere il cursore puoi usare un operatore per agire sul testo selezionato. Ad es., d cancella il testo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5.4: INSERIRE E RIUNIRE FILE + Lezione 1.5.4: INSERIRE E RIUNIRE FILE ** Per inserire il contenuto di un file, batti :r NOMEFILE ** 1. Posiziona il cursore appena sopra questa riga. -NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3. +NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 1.5.3. Quindi spostati IN GIU' per tornare ancora a questa Lezione. 2. Ora inserisci il tuo file TEST con il comando :r TEST dove TEST è @@ -681,7 +681,7 @@ NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3. Il file richiesto è inserito sotto la linea in cui si trova il cursore. 3. Per verificare che un file è stato inserito, torna indietro col cursore - e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e + e nota che ci sono ora 2 copie della Lezione 1.5.3, quella originale e quella che viene dal file. NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. @@ -689,7 +689,7 @@ NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. in cui si trova il cursore. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 5 SOMMARIO + Lezione 1.5 SOMMARIO 1. :!comando esegue un comando esterno. @@ -712,7 +712,7 @@ NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.1: IL COMANDO OPEN [APRIRE] + Lezione 1.6.1: IL COMANDO OPEN [APRIRE] ** Batti o per aprire una linea sotto il cursore ** @@ -735,7 +735,7 @@ NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE] + Lezione 1.6.2: IL COMANDO APPEND [AGGIUNGERE] ** Batti a per inserire testo DOPO il cursore. ** @@ -758,7 +758,7 @@ NOTA: a, i ed A entrano sempre in Modalità Inserimento, la sola differenza è dove verranno inseriti i caratteri. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE] + Lezione 1.6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE] ** Batti una R maiuscola per rimpiazzare più di un carattere. ** @@ -781,7 +781,7 @@ NOTA: La Modalità Replace è come la Modalità Inserimento, ma ogni carattere che viene battuto ricopre un carattere esistente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.4: COPIA E INCOLLA DEL TESTO + Lezione 1.6.4: COPIA E INCOLLA DEL TESTO ** usa l'operatore y per copiare del testo e p per incollarlo ** @@ -804,7 +804,7 @@ NOTA: La Modalità Replace è come la Modalità Inserimento, ma ogni carattere NOTA: Puoi usare y come operatore; yw copia una parola [word]. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6.5: SET [IMPOSTA] UN'OPZIONE + Lezione 1.6.5: SET [IMPOSTA] UN'OPZIONE ** Imposta un'opzione per ignorare maiuscole/minuscole ** ** durante la ricerca/sostituzione ** @@ -827,7 +827,7 @@ NOTA: Per non evidenziare le occorrenze trovate batti: :nohlsearch NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c nel comando di ricerca: /nota\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 6 SOMMARIO + Lezione 1.6 SOMMARIO 1. Batti o per aggiungere una linea SOTTO il cursore ed entrare in Modalità Inserimento. @@ -850,7 +850,7 @@ NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c 7. Usa il prefisso "no" per annullare una opzione: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7.1: OTTENERE AIUTO + Lezione 1.7.1: OTTENERE AIUTO ** Usa il sistema di aiuto on-line ** @@ -873,7 +873,7 @@ NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE + Lezione 1.7.2: PREPARARE UNO SCRIPT INIZIALE ** Attiva le opzioni Vim ** @@ -896,7 +896,7 @@ NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c Per maggiori informazioni batti: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7.3: COMPLETAMENTO + Lezione 1.7.3: COMPLETAMENTO ** Completamento linea comandi con CTRL-D e ** @@ -919,7 +919,7 @@ NOTA: Il completamento è disponibile per molti comandi. Prova a battere CTRL-D e . Particolarmente utile per :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lezione 7 Sommario + Lezione 1.7 Sommario 1. Batti :help o premi o per aprire una finestra di aiuto. diff --git a/runtime/tutor/tutor.ja.euc b/runtime/tutor/tutor1.ja.euc similarity index 93% rename from runtime/tutor/tutor.ja.euc rename to runtime/tutor/tutor1.ja.euc index 92e040db34..4d6d3b9d38 100644 --- a/runtime/tutor/tutor.ja.euc +++ b/runtime/tutor/tutor1.ja.euc @@ -18,10 +18,10 @@ ¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµ¤·¤¯³Ø½¬¤¹¤ë¤Ë¤Ï¥³¥Þ¥ó¥É¤ò¼ÂºÝ¤Ë»î¤µ¤Ê¤±¤ì¤Ð ¤Ê¤é¤Ê¤¤¤Î¤Ç¤¹¡£Ê¸¾Ï¤òÆɤó¤À¤À¤±¤Ê¤é¤Ð¡¢¤­¤Ã¤È˺¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹! - ¤µ¤¡¡¢Caps¥í¥Ã¥¯¥­¡¼¤¬²¡¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤¿¸å¡¢²èÌ̤˥ì¥Ã¥¹¥ó1.1 + ¤µ¤¡¡¢Caps¥í¥Ã¥¯¥­¡¼¤¬²¡¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤¿¸å¡¢²èÌ̤˥ì¥Ã¥¹¥ó1.1.1 ¤¬Á´Éôɽ¼¨¤µ¤ì¤ë¤È¤³¤í¤Þ¤Ç¡¢j ¥­¡¼¤ò²¡¤·¤Æ¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.1: ¥«¡¼¥½¥ë¤Î°ÜÆ° + ¥ì¥Ã¥¹¥ó 1.1.1: ¥«¡¼¥½¥ë¤Î°ÜÆ° ** ¥«¡¼¥½¥ë¤ò°ÜÆ°¤¹¤ë¤Ë¤Ï¡¢¼¨¤µ¤ì¤ëÍÍ¤Ë h,j,k,l ¤ò²¡¤·¤Þ¤¹¡£ ** @@ -35,7 +35,7 @@ 2. ²¼¤Ø¤Î¥­¡¼(j)¤ò²¡¤·¤Ä¤Å¤±¤ë¤È¡¢Ï¢Â³¤·¤Æ°ÜÆ°¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤Ç¼¡¤Î¥ì¥Ã¥¹¥ó¤Ë°ÜÆ°¤¹¤ëÊýË¡¤¬¤ï¤«¤ê¤Þ¤·¤¿¤Í¡£ - 3. ²¼¤Ø¤Î¥­¡¼¤ò»È¤Ã¤Æ¡¢¥ì¥Ã¥¹¥ó1.2 ¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + 3. ²¼¤Ø¤Î¥­¡¼¤ò»È¤Ã¤Æ¡¢¥ì¥Ã¥¹¥ó1.1.2 ¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ NOTE: ²¿¤ò¥¿¥¤¥×¤·¤Æ¤¤¤ë¤«È½¤é¤Ê¤¯¤Ê¤Ã¤¿¤é¡¢¤ò²¡¤·¤Æ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤· ¤Þ¤¹¡£¤½¤ì¤«¤éÆþÎϤ·¤è¤¦¤È¤·¤Æ¤¤¤¿¥³¥Þ¥ó¥É¤òºÆÆþÎϤ·¤Þ¤·¤ç¤¦¡£ @@ -44,7 +44,7 @@ NOTE: ¤Ë®¤¯°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£¤¤¤ä¥Þ¥¸¤Ç! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.2: VIM ¤Îµ¯Æ°¤È½ªÎ» + ¥ì¥Ã¥¹¥ó 1.1.2: VIM ¤Îµ¯Æ°¤È½ªÎ» !! NOTE: °Ê²¼¤Î¤¢¤é¤æ¤ë¥¹¥Æ¥Ã¥×¤ò¹Ô¤¦Á°¤Ë¡¢¤³¤Î¥ì¥Ã¥¹¥ó¤òÆɤߤޤ·¤ç¤¦!! @@ -63,11 +63,11 @@ NOTE: NOTE: :q! ¤ÏÁ´¤Æ¤ÎÊѹ¹¤òÇË´þ¤·¤Þ¤¹¡£¥ì¥Ã¥¹¥ó¤Ë¤ÆÊѹ¹¤ò¥Õ¥¡¥¤¥ë¤ËÊÝ Â¸¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤âÊÙ¶¯¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£ - 5. 1.3¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ + 5. 1.1.3¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.3: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ºï½ü + ¥ì¥Ã¥¹¥ó 1.1.3: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ºï½ü ** ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òºï½ü¤¹¤ë¤Ë¤Ï x ¤ò²¡¤·¤Þ¤¹¡£ ** @@ -82,14 +82,14 @@ NOTE: :q! ---> ¤½¤Î ¤¦¤¦¤µ¤® ¤Ï ¤Ä¤Ä¤­¤­ ¤ò ¤³¤¨¤¨¤Æ¤Æ ¤È¤Ó¤Ï¤Í¤¿¤¿ - 5. ¹Ô¤¬Àµ¤·¤¯¤Ê¤Ã¤¿¤é¡¢¥ì¥Ã¥¹¥ó 1.4 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 5. ¹Ô¤¬Àµ¤·¤¯¤Ê¤Ã¤¿¤é¡¢¥ì¥Ã¥¹¥ó 1.1.4 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ NOTE: Á´¤Æ¤Î¥ì¥Ã¥¹¥ó¤òÄ̤¸¤Æ¡¢³Ð¤¨¤è¤¦¤È¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.4: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ÁÞÆþ + ¥ì¥Ã¥¹¥ó 1.1.4: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ÁÞÆþ ** ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥Æ¥­¥¹¥È¤òÁÞÆþ¤¹¤ë¤Ë¤Ï i ¤ò²¡¤·¤Þ¤¹¡£ ** @@ -107,12 +107,12 @@ NOTE: ---> ¤³¤Î ¤Ë¤Ï ­¤ê¤Ê¤¤ ¥Æ¥­¥¹¥È ¤¢¤ë¡£ ---> ¤³¤Î ¹Ô ¤Ë¤Ï ´ö¤Ä¤« ­¤ê¤Ê¤¤ ¥Æ¥­¥¹¥È ¤¬ ¤¢¤ë¡£ - 5. ÁÞÆþ¤ÎÊýË¡¤¬¤ï¤«¤Ã¤¿¤é¥ì¥Ã¥¹¥ó 1.5 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 5. ÁÞÆþ¤ÎÊýË¡¤¬¤ï¤«¤Ã¤¿¤é¥ì¥Ã¥¹¥ó 1.1.5 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.5: ¥Æ¥­¥¹¥ÈÊÔ½¸ - Äɲà + ¥ì¥Ã¥¹¥ó 1.1.5: ¥Æ¥­¥¹¥ÈÊÔ½¸ - Äɲà ** ¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï A ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ ** @@ -132,17 +132,17 @@ NOTE: ---> ¤³¤³¤Ë¤â´Ö°ã¤Ã¤¿¥Æ¥­¥¹ ¤³¤³¤Ë¤â´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£ - 5. ¥Æ¥­¥¹¥È¤ÎÄɲ䬷ڲ÷¤Ë¤Ê¤Ã¤Æ¤­¤¿¤é¥ì¥Ã¥¹¥ó 1.6 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 5. ¥Æ¥­¥¹¥È¤ÎÄɲ䬷ڲ÷¤Ë¤Ê¤Ã¤Æ¤­¤¿¤é¥ì¥Ã¥¹¥ó 1.1.6 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.6: ¥Õ¥¡¥¤¥ë¤ÎÊÔ½¸ + ¥ì¥Ã¥¹¥ó 1.1.6: ¥Õ¥¡¥¤¥ë¤ÎÊÔ½¸ ** ¥Õ¥¡¥¤¥ë¤òÊݸ¤·¤Æ½ªÎ»¤¹¤ë¤Ë¤Ï :wq ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** !! NOTE: °Ê²¼¤Î¥¹¥Æ¥Ã¥×¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¤Þ¤ºÁ´ÂΤòÆɤó¤Ç¤¯¤À¤µ¤¤!! 1. Ê̤ÎüËö¤¬¤¢¤ë¾ì¹ç¤Ï¤½¤³¤Ç°Ê²¼¤ÎÆâÍƤò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢ - ¥ì¥Ã¥¹¥ó 1.2 ¤Ç¤ä¤Ã¤¿¤è¤¦¤Ë :q! ¤ò¥¿¥¤¥×¤·¤Æ¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ªÎ» + ¥ì¥Ã¥¹¥ó 1.1.2 ¤Ç¤ä¤Ã¤¿¤è¤¦¤Ë :q! ¤ò¥¿¥¤¥×¤·¤Æ¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ªÎ» ¤·¤Þ¤¹¡£ 2. ¥·¥§¥ë¥×¥í¥ó¥×¥È¤Ç¤³¤Î¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Þ¤¹: vim file.txt @@ -159,7 +159,7 @@ NOTE: 6. °Ê¾å¤Î¥¹¥Æ¥Ã¥×¤òÆɤó¤ÇÍý²ò¤·¤¿¾å¤Ç¤³¤ì¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.1 Í×Ìó 1. ¥«¡¼¥½¥ë¤ÏÌð°õ¥­¡¼¤â¤·¤¯¤Ï hjkl ¥­¡¼¤Ç°ÜÆ°¤·¤Þ¤¹¡£ @@ -179,10 +179,10 @@ NOTE: NOTE: ¥­¡¼¤ò²¡¤¹¤È¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë°Ü¹Ô¤·¤Þ¤¹¡£¤½¤ÎºÝ¡¢´Ö°ã¤Ã¤¿¤êÆþÎÏÅÓ Ãæ¤Î¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¤µ¤Æ¡¢Â³¤±¤Æ¥ì¥Ã¥¹¥ó 2 ¤ò»Ï¤á¤Þ¤·¤ç¤¦¡£ +¤µ¤Æ¡¢Â³¤±¤Æ¥ì¥Ã¥¹¥ó 1.2 ¤ò»Ï¤á¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.1: ºï½ü¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.2.1: ºï½ü¥³¥Þ¥ó¥É ** ñ¸ì¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï dw ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ ** @@ -201,11 +201,11 @@ NOTE: ---> ¤³¤Î ʸ »æ ¤Ë¤Ï ¤¤¤¯¤Ä¤«¤Î ¤¿¤Î¤·¤¤ ɬÍפΤʤ¤ ñ¸ì ¤¬ ´Þ¤Þ¤ì¤Æ ¤¤¤Þ¤¹¡£ - 5. 3 ¤«¤é 4 ¤Þ¤Ç¤òʸ¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤·¡¢¥ì¥Ã¥¹¥ó 2.2 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 5. 3 ¤«¤é 4 ¤Þ¤Ç¤òʸ¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤·¡¢¥ì¥Ã¥¹¥ó 1.2.2 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.2: ¤½¤Î¾¤Îºï½ü¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.2.2: ¤½¤Î¾¤Îºï½ü¥³¥Þ¥ó¥É ** ¹Ô¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï d$ ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ ** @@ -221,14 +221,14 @@ NOTE: ---> 狼¤¬¤³¤Î¹Ô¤ÎºÇ¸å¤ò2ÅÙ¥¿¥¤¥×¤·¤Þ¤·¤¿¡£ 2ÅÙ¥¿¥¤¥×¤·¤Þ¤·¤¿¡£ - 5. ¤É¤¦¤¤¤¦¤³¤È¤«Íý²ò¤¹¤ë¤¿¤á¤Ë¡¢¥ì¥Ã¥¹¥ó 2.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 5. ¤É¤¦¤¤¤¦¤³¤È¤«Íý²ò¤¹¤ë¤¿¤á¤Ë¡¢¥ì¥Ã¥¹¥ó 1.2.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.3: ¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó + ¥ì¥Ã¥¹¥ó 1.2.3: ¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó ¥Æ¥­¥¹¥È¤ËÊѹ¹¤ò²Ã¤¨¤ë¿¤¯¤Î¥³¥Þ¥ó¥É¤Ï¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó¤«¤é¤Ê¤ê¤Þ¤¹¡£ @@ -251,7 +251,7 @@ NOTE: ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤¬ÌÜŪ¸ì°ìÍ÷¤Ç¼¨¤µ¤ì¤ë°ÌÃ֤˰ÜÆ°¤¹¤ë¤Ï¤º¤Ç¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.4: ¥â¡¼¥·¥ç¥ó¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë + ¥ì¥Ã¥¹¥ó 1.2.4: ¥â¡¼¥·¥ç¥ó¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë ** ²¿²ó¤â¹Ô¤¤¤¿¤¤·«¤êÊÖ¤·¤Î¥â¡¼¥·¥ç¥ó¤ÎÁ°¤Ë¿ôÃͤò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -268,13 +268,13 @@ NOTE: ---> This is just a line with words you can move around in. - 6. ¥ì¥Ã¥¹¥ó 2.5 ¤Ë¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 6. ¥ì¥Ã¥¹¥ó 1.2.5 ¤Ë¿Ê¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.5: ¤è¤ê¿¤¯¤òºï½ü¤¹¤ë¤¿¤á¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë + ¥ì¥Ã¥¹¥ó 1.2.5: ¤è¤ê¿¤¯¤òºï½ü¤¹¤ë¤¿¤á¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë ** ¥ª¥Ú¥ì¡¼¥¿¤È¥«¥¦¥ó¥È¤ò¥¿¥¤¥×¤¹¤ë¤È¡¢¤½¤ÎÁàºî¤¬Ê£¿ô²ó·«¤êÊÖ¤µ¤ì¤Þ¤¹¡£ ** @@ -297,7 +297,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.6: ¹Ô¤ÎÁàºî + ¥ì¥Ã¥¹¥ó 1.2.6: ¹Ô¤ÎÁàºî ** ¹ÔÁ´ÂΤòºï½ü¤¹¤ë¤Ë¤Ï dd ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -321,7 +321,7 @@ NOTE: 2²ó¥¿¥¤¥×¤Ç1¹Ô¤ËÂФ·¤ÆºîÍѤµ¤»¤ëÊýË¡¤Ï°Ê²¼¤Ç½Ò¤Ù¤ë¥ª¥Ú¥ì¡¼¥¿¤Ç¤âÆ°ºî¤·¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.7: ¤ä¤êľ¤·¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.2.7: ¤ä¤êľ¤·¥³¥Þ¥ó¥É ** ºÇ¸å¤Î¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤¹¤Ë¤Ï u ¤ò²¡¤·¤Þ¤¹¡£U ¤Ï¹ÔÁ´ÂΤμè¤ê¾Ã¤·¤Ç¤¹¡£ ** @@ -338,13 +338,13 @@ NOTE: ---> ¤³¤Î¤Î¹Ô¤Î¤Î´Ö°ã¤¤¤ò½¤Àµ¡¹¤·¡¢¸å¤Ç¤½¤ì¤é¤Î½¤Àµ¤ò¤ò¼è¤ê¾Ã¤·¤Þ¤Þ¤¹¤¹¡£ - 8. ¤³¤ì¤Ï¤È¤Æ¤âÊØÍø¤Ê¥³¥Þ¥ó¥É¤Ç¤¹¡£¤µ¤¡¥ì¥Ã¥¹¥ó 2 Í×Ìó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 8. ¤³¤ì¤Ï¤È¤Æ¤âÊØÍø¤Ê¥³¥Þ¥ó¥É¤Ç¤¹¡£¤µ¤¡¥ì¥Ã¥¹¥ó 1.2 Í×Ìó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.2 Í×Ìó 1. ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¼¡¤Îñ¸ì¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï dw ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ @@ -368,7 +368,7 @@ NOTE: ¼è¤ê¾Ã¤·¤Î¼è¤ê¾Ã¤·: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.1: Ž¤êÉÕ¤±¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.3.1: Ž¤êÉÕ¤±¥³¥Þ¥ó¥É ** ºÇ¸å¤Ëºï½ü¤µ¤ì¤¿¹Ô¤ò¥«¡¼¥½¥ë¤Î¸å¤ËŽ¤êÉÕ¤±¤ë¤Ë¤Ï p ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -392,7 +392,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.2: ÃÖ¤­´¹¤¨¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.3.2: ÃÖ¤­´¹¤¨¥³¥Þ¥ó¥É ** ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤ò x ¤ËÃÖ¤­´¹¤¨¤ë¤Ë¤Ï rx ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -408,14 +408,14 @@ NOTE: ---> ¤³¤Î¹ç¤ò¿ÍÎϤ·¤¿»þ¤Í¡¢¤½¤Î¿Í¤Ï´ö¤Ä¤«Ìä°ã¤Ã¤¿¥­¡¼¤ò²¡¤·¤â¤·¤¿! ---> ¤³¤Î¹Ô¤òÆþÎϤ·¤¿»þ¤Ë¡¢¤½¤Î¿Í¤Ï´ö¤Ä¤«´Ö°ã¤Ã¤¿¥­¡¼¤ò²¡¤·¤Þ¤·¤¿! - 5. ¤µ¤¡¡¢¥ì¥Ã¥¹¥ó 3.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + 5. ¤µ¤¡¡¢¥ì¥Ã¥¹¥ó 1.3.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ NOTE: ¼ÂºÝ¤Ë»î¤·¤Þ¤·¤ç¤¦¡£·è¤·¤Æ³Ð¤¨¤ë¤À¤±¤Ë¤Ï¤·¤Ê¤¤¤³¤È¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.3: Êѹ¹¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.3.3: Êѹ¹¥³¥Þ¥ó¥É ** ñ¸ì¤ÎËöÈø¤Þ¤Ç¤òÊѹ¹¤¹¤ë¤Ë¤Ï ce ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -438,7 +438,7 @@ cc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.4: c ¤ò»ÈÍѤ·¤¿¤½¤Î¾¤ÎÊѹ¹ + ¥ì¥Ã¥¹¥ó 1.3.4: c ¤ò»ÈÍѤ·¤¿¤½¤Î¾¤ÎÊѹ¹ ** Êѹ¹¥ª¥Ú¥ì¡¼¥¿¤Ï¡¢ºï½ü¤ÈƱ¤¸Íͤ˥⡼¥·¥ç¥ó¤ò»ÈÍѤ·¤Þ¤¹¡£ ** @@ -461,7 +461,7 @@ cc NOTE: ¥¿¥¤¥×Ãæ¤Î´Ö°ã¤¤¤Ï¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¥­¡¼¤ò»È¤Ã¤Æľ¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.3 Í×Ìó 1. ´û¤Ëºï½ü¤µ¤ì¤¿¥Æ¥­¥¹¥È¤òºÆÇÛÃÖ¤¹¤ë¤Ë¤Ï¡¢p ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£¤³¤ì¤Ïºï½ü¤µ @@ -484,7 +484,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.1: °ÌÃ֤ȥե¡¥¤¥ë¤Î¾ðÊó + ¥ì¥Ã¥¹¥ó 1.4.1: °ÌÃ֤ȥե¡¥¤¥ë¤Î¾ðÊó ** ¥Õ¥¡¥¤¥ëÆâ¤Ç¤Î°ÌÃ֤ȥե¡¥¤¥ë¤Î¾õÂÖ¤òɽ¼¨¤¹¤ë¤Ë¤Ï CTRL-G ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ëÆâ¤Î¤¢¤ë¹Ô¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï G ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -507,7 +507,7 @@ NOTE: 4. ¼«¿®¤¬»ý¤Æ¤¿¤é¥¹¥Æ¥Ã¥× 1 ¤«¤é 3 ¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.2: ¸¡º÷¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.4.2: ¸¡º÷¥³¥Þ¥ó¥É ** ¸ì¶ç¤ò¸¡º÷¤¹¤ë¤Ë¤Ï / ¤È¡¢Á°Êý¸¡º÷¤¹¤ë¸ì¶ç¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -530,7 +530,7 @@ NOTE: ¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é¸¡º÷¤ò³¹Ô¤·¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.3: Âбþ¤¹¤ë³ç¸Ì¤ò¸¡º÷ + ¥ì¥Ã¥¹¥ó 1.4.3: Âбþ¤¹¤ë³ç¸Ì¤ò¸¡º÷ ** Âбþ¤¹¤ë ),] ¤ä } ¤ò¸¡º÷¤¹¤ë¤Ë¤Ï % ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -553,7 +553,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.4: ´Ö°ã¤¤¤òÊѹ¹¤¹¤ëÊýË¡ + ¥ì¥Ã¥¹¥ó 1.4.4: ´Ö°ã¤¤¤òÊѹ¹¤¹¤ëÊýË¡ ** 'old' ¤ò 'new' ¤ËÃÖ´¹¤¹¤ë¤Ë¤Ï :s/old/new/g ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -576,7 +576,7 @@ NOTE: ¤¬¤éÊѹ¹¤¹¤ë¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.4 Í×Ìó 1. CTRL-G ¤Ï¥Õ¥¡¥¤¥ë¤Ç¤Î°ÌÃ֤ȥե¡¥¤¥ë¤Î¾ÜºÙ¤òɽ¼¨¤·¤Þ¤¹¡£ @@ -599,7 +599,7 @@ NOTE: 'c' ¤ò²Ã¤¨¤ë¤ÈÃÖ´¹¤ÎÅ٤˳Îǧ¤òµá¤á¤ë¡£ :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.1: ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëÊýË¡ + ¥ì¥Ã¥¹¥ó 1.5.1: ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëÊýË¡ ** :! ¤Î¸å¤Ë¼Â¹Ô¤¹¤ë³°Éô¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -622,7 +622,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.2: ¤½¤Î¾¤Î¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤ß + ¥ì¥Ã¥¹¥ó 1.5.2: ¤½¤Î¾¤Î¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤ß ** ¥Õ¥¡¥¤¥ë¤ØÊѹ¹¤òÊݸ¤¹¤ë¤Ë¤Ï :w ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -645,7 +645,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.3: ÁªÂò¤·¤¿½ñ¤­¹þ¤ß + ¥ì¥Ã¥¹¥ó 1.5.3: ÁªÂò¤·¤¿½ñ¤­¹þ¤ß ** ¥Õ¥¡¥¤¥ë¤Î°ìÉô¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢v ¥â¡¼¥·¥ç¥ó¤È :w FILENAME ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -669,21 +669,21 @@ NOTE: v ¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð d ¤Ï¥Æ¥­¥¹¥È¤òºï½ü¤·¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.4: ¥Õ¥¡¥¤¥ë¤Î¼è¹þ¤È¹çÊ» + ¥ì¥Ã¥¹¥ó 1.5.4: ¥Õ¥¡¥¤¥ë¤Î¼è¹þ¤È¹çÊ» ** ¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤òÁÞÆþ¤¹¤ë¤Ë¤Ï :r ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** 1. ¥«¡¼¥½¥ë¤ò¤³¤Î¹Ô¤Î¤¹¤°¾å¤Ë¹ç¤ï¤»¤Þ¤¹¡£ -NOTE: ¥¹¥Æ¥Ã¥× 2 ¤Î¼Â¹Ô¸å¡¢¥ì¥Ã¥¹¥ó 5.3 ¤Î¥Æ¥­¥¹¥È¤¬¸½¤ì¤Þ¤¹¡£²¼¤Ë²¼¤¬¤Ã¤Æ¤³ +NOTE: ¥¹¥Æ¥Ã¥× 2 ¤Î¼Â¹Ô¸å¡¢¥ì¥Ã¥¹¥ó 1.5.3 ¤Î¥Æ¥­¥¹¥È¤¬¸½¤ì¤Þ¤¹¡£²¼¤Ë²¼¤¬¤Ã¤Æ¤³ ¤Î¥ì¥Ã¥¹¥ó¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ 2. ¤Ç¤Ï TEST ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò :r TEST ¤È¤¤¤¦¥³¥Þ¥ó¥É¤ÇÆɤ߹þ¤ß¤Þ¤·¤ç¤¦¡£ ¤³¤³¤Ç¤¤¤¦ TEST ¤Ï»È¤¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤Î¤³¤È¤Ç¤¹¡£ Æɤ߹þ¤Þ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥«¡¼¥½¥ë¹Ô¤Î²¼¤Ë¤¢¤ê¤Þ¤¹¡£ - 3. ¼è¤ê¹þ¤ó¤À¥Õ¥¡¥¤¥ë¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤òÌ᤹¤È¡¢¥ì¥Ã¥¹¥ó5.3 ¤Î + 3. ¼è¤ê¹þ¤ó¤À¥Õ¥¡¥¤¥ë¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤òÌ᤹¤È¡¢¥ì¥Ã¥¹¥ó1.5.3 ¤Î ¥ª¥ê¥¸¥Ê¥ë¤È¥Õ¥¡¥¤¥ë¤Ë¤è¤ë¤â¤Î¤Î2¤Ä¤¬¤¢¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£ NOTE: ³°Éô¥³¥Þ¥ó¥É¤Î½ÐÎϤòÆɤ߹þ¤à¤³¤È¤â¤Ç¤­¤Þ¤¹¡£Î㤨¤Ð¡¢ @@ -691,7 +691,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.5 Í×Ìó 1. :!command ¤Ë¤è¤Ã¤Æ ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¡£ @@ -714,7 +714,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.1: ¥ª¡¼¥×¥ó¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.6.1: ¥ª¡¼¥×¥ó¥³¥Þ¥ó¥É ** o ¤ò¥¿¥¤¥×¤¹¤ë¤È¡¢¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤¬³«¤­¡¢ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹¡£ ** @@ -737,7 +737,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.2: Äɲå³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.6.2: Äɲå³¥Þ¥ó¥É ** ¥«¡¼¥½¥ë¤Î¼¡¤Î°ÌÃÖ¤«¤é¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï a ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ** @@ -760,7 +760,7 @@ NOTE: a, i ¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.3: ¤½¤Î¾¤ÎÃÖ´¹ÊýË¡ + ¥ì¥Ã¥¹¥ó 1.6.3: ¤½¤Î¾¤ÎÃÖ´¹ÊýË¡ ** 1ʸ»ú°Ê¾å¤òÃÖ¤­´¹¤¨¤ë¤Ë¤ÏÂçʸ»ú¤Î R ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ ** @@ -782,7 +782,7 @@ NOTE: ¤òºï½ü¤·¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.4: ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤È¥Ú¡¼¥¹¥È + ¥ì¥Ã¥¹¥ó 1.6.4: ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤È¥Ú¡¼¥¹¥È ** ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤Ë¤Ï¥ª¥Ú¥ì¡¼¥¿ y ¤ò¡¢¥Ú¡¼¥¹¥È¤Ë¤Ï p ¤ò»È¤¤¤Þ¤¹¡£ ** @@ -806,7 +806,7 @@ NOTE: NOTE: y ¤ò¥ª¥Ú¥ì¡¼¥¿¤È¤·¤Æ»È¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£yw ¤Ïñ¸ì¤ò1¤Ä yank ¤·¤Þ¤¹¡£ yy ¤Ï¹Ô¤ò1¤Ä yank ¤·¡¢p ¤Ç¤½¤Î¹Ô¤ò put ¤·¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.5: ¥ª¥×¥·¥ç¥ó¤ÎÀßÄê + ¥ì¥Ã¥¹¥ó 1.6.5: ¥ª¥×¥·¥ç¥ó¤ÎÀßÄê ** ¸¡º÷¤äÃÖ´¹¤ÎºÝ¤ËÂçʸ»ú/¾®Ê¸»ú¤ò̵»ë¤¹¤ë¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤¹¡£ ** @@ -829,7 +829,7 @@ NOTE: NOTE: 1¤Ä¤Î¸¡º÷¥³¥Þ¥ó¥É¤À¤±Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò¤ä¤á¤¿¤¤¤Ê¤é¤Ð¡¢¸ì¶çÆâ¤Ç \c ¤ò»ÈÍѤ·¤Þ¤¹: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.6 Í×Ìó 1. o ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤ò³«¤±¤Æ¡¢¤½¤³¤ÇÁÞÆþ¥â¡¼¥É¤Ë¤Ê¤ë¡£ O (Âçʸ»ú) ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Î¾å¤Î¹Ô¤ÇÁÞÆþ¥â¡¼¥É¤Ë¤Ê¤ë¡£ @@ -852,7 +852,7 @@ NOTE: 1 7. ¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï "no" ¤òÉÕÍ¿¤¹¤ë: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 7.1: ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¥³¥Þ¥ó¥É + ¥ì¥Ã¥¹¥ó 1.7.1: ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¥³¥Þ¥ó¥É ** ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¤ò»ÈÍѤ·¤Þ¤·¤ç¤¦ ** @@ -875,7 +875,7 @@ NOTE: 1 :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 7.2: µ¯Æ°¥¹¥¯¥ê¥×¥È¤ÎºîÀ® + ¥ì¥Ã¥¹¥ó 1.7.2: µ¯Æ°¥¹¥¯¥ê¥×¥È¤ÎºîÀ® ** Vim ¤ÎÆÃħ¤òȯ´ø¤¹¤ë ** @@ -898,7 +898,7 @@ NOTE: 1 ¤è¤ê¿¤¯¤Î¾ðÊó¤òÆÀ¤ë¤Ë¤Ï :help vimrc-intro ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 7.3: Êä´° + ¥ì¥Ã¥¹¥ó 1.7.3: Êä´° ** CTRL-D ¤È ¤Ç¥³¥Þ¥ó¥É¥é¥¤¥ó¤òÊä´°¤¹¤ë ** @@ -921,7 +921,7 @@ NOTE: ¤µ¤¤¡£ÆÃ¤Ë :help ¤ÎºÝ¤ËÌòΩ¤Á¤Þ¤¹¡£ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 7 Í×Ìó + ¥ì¥Ã¥¹¥ó 1.7 Í×Ìó 1. ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤ò³«¤¯¤Ë¤Ï :help ¤È¤¹¤ë¤« ¤â¤·¤¯¤Ï ¤ò²¡¤¹¡£ diff --git a/runtime/tutor/tutor.ja.sjis b/runtime/tutor/tutor1.ja.sjis similarity index 93% rename from runtime/tutor/tutor.ja.sjis rename to runtime/tutor/tutor1.ja.sjis index ab463801cc..ea1207e9d7 100644 --- a/runtime/tutor/tutor.ja.sjis +++ b/runtime/tutor/tutor1.ja.sjis @@ -18,10 +18,10 @@ ‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB³‚µ‚­ŠwK‚·‚é‚ɂ̓Rƒ}ƒ“ƒh‚ðŽÀÛ‚ÉŽŽ‚³‚È‚¯‚ê‚Î ‚È‚ç‚È‚¢‚Ì‚Å‚·B•¶Í‚ð“Ç‚ñ‚¾‚¾‚¯‚È‚ç‚ÎA‚«‚Á‚Æ–Y‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·! - ‚³‚ŸACapsƒƒbƒNƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŠm”F‚µ‚½ŒãA‰æ–ʂɃŒƒbƒXƒ“1.1 + ‚³‚ŸACapsƒƒbƒNƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŠm”F‚µ‚½ŒãA‰æ–ʂɃŒƒbƒXƒ“1.1.1 ‚ª‘S•”•\Ž¦‚³‚ê‚é‚Æ‚±‚ë‚Ü‚ÅAj ƒL[‚ð‰Ÿ‚µ‚ăJ[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.1: ƒJ[ƒ\ƒ‹‚̈ړ® + ƒŒƒbƒXƒ“ 1.1.1: ƒJ[ƒ\ƒ‹‚̈ړ® ** ƒJ[ƒ\ƒ‹‚ðˆÚ“®‚·‚é‚É‚ÍAŽ¦‚³‚ê‚é—l‚É h,j,k,l ‚ð‰Ÿ‚µ‚Ü‚·B ** @@ -35,7 +35,7 @@ 2. ‰º‚ւ̃L[(j)‚ð‰Ÿ‚µ‚‚¯‚é‚ÆA˜A‘±‚µ‚Ĉړ®‚Å‚«‚Ü‚·B ‚±‚ê‚ÅŽŸ‚̃ŒƒbƒXƒ“‚Ɉړ®‚·‚é•û–@‚ª‚í‚©‚è‚Ü‚µ‚½‚ËB - 3. ‰º‚ւ̃L[‚ðŽg‚Á‚ÄAƒŒƒbƒXƒ“1.2 ‚Ɉړ®‚µ‚Ü‚µ‚傤B + 3. ‰º‚ւ̃L[‚ðŽg‚Á‚ÄAƒŒƒbƒXƒ“1.1.2 ‚Ɉړ®‚µ‚Ü‚µ‚傤B NOTE: ‰½‚ðƒ^ƒCƒv‚µ‚Ä‚¢‚é‚©”»‚ç‚È‚­‚È‚Á‚½‚çA‚ð‰Ÿ‚µ‚ăm[ƒ}ƒ‹ƒ‚[ƒh‚É‚µ ‚Ü‚·B‚»‚ê‚©‚ç“ü—Í‚µ‚悤‚Æ‚µ‚Ä‚¢‚½ƒRƒ}ƒ“ƒh‚ðÄ“ü—Í‚µ‚Ü‚µ‚傤B @@ -44,7 +44,7 @@ NOTE: ‚É‘¬‚­ˆÚ“®‚·‚邱‚Æ‚ª‚Å‚«‚é‚Å‚µ‚傤B‚¢‚âƒ}ƒW‚Å! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.2: VIM ‚Ì‹N“®‚ÆI—¹ + ƒŒƒbƒXƒ“ 1.1.2: VIM ‚Ì‹N“®‚ÆI—¹ !! NOTE: ˆÈ‰º‚Ì‚ ‚ç‚ä‚éƒXƒeƒbƒv‚ðs‚¤‘O‚ÉA‚±‚̃ŒƒbƒXƒ“‚ð“Ç‚Ý‚Ü‚µ‚傤!! @@ -63,11 +63,11 @@ NOTE: NOTE: :q! ‚Í‘S‚Ä‚Ì•ÏX‚ð”jŠü‚µ‚Ü‚·BƒŒƒbƒXƒ“‚É‚Ä•ÏX‚ðƒtƒ@ƒCƒ‹‚É•Û ‘¶‚·‚é•û–@‚ɂ‚¢‚Ä‚à•×‹­‚µ‚Ä‚¢‚«‚Ü‚µ‚傤B - 5. 1.3‚܂ŃJ[ƒ\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚µ‚傤B + 5. 1.1.3‚܂ŃJ[ƒ\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.3: ƒeƒLƒXƒg•ÒW - íœ + ƒŒƒbƒXƒ“ 1.1.3: ƒeƒLƒXƒg•ÒW - íœ ** ƒm[ƒ}ƒ‹ƒ‚[ƒh‚ɂăJ[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð휂·‚é‚É‚Í x ‚ð‰Ÿ‚µ‚Ü‚·B ** @@ -82,14 +82,14 @@ NOTE: :q! ---> ‚»‚Ì ‚¤‚¤‚³‚¬ ‚Í ‚‚‚«‚« ‚ð ‚±‚¦‚¦‚Ä‚Ä ‚Æ‚Ñ‚Í‚Ë‚½‚½ - 5. s‚ª³‚µ‚­‚È‚Á‚½‚çAƒŒƒbƒXƒ“ 1.4 ‚Öi‚Ý‚Ü‚µ‚傤B + 5. s‚ª³‚µ‚­‚È‚Á‚½‚çAƒŒƒbƒXƒ“ 1.1.4 ‚Öi‚Ý‚Ü‚µ‚傤B NOTE: ‘S‚ẴŒƒbƒXƒ“‚ð’Ê‚¶‚ÄAŠo‚¦‚悤‚Æ‚·‚é‚Ì‚Å‚Í‚È‚­ŽÀÛ‚É‚â‚Á‚Ä‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.4: ƒeƒLƒXƒg•ÒW - ‘}“ü + ƒŒƒbƒXƒ“ 1.1.4: ƒeƒLƒXƒg•ÒW - ‘}“ü ** ƒm[ƒ}ƒ‹ƒ‚[ƒh‚ɂăeƒLƒXƒg‚ð‘}“ü‚·‚é‚É‚Í i ‚ð‰Ÿ‚µ‚Ü‚·B ** @@ -107,12 +107,12 @@ NOTE: ---> ‚±‚Ì ‚É‚Í ‘«‚è‚È‚¢ ƒeƒLƒXƒg ‚ ‚éB ---> ‚±‚Ì s ‚É‚Í Šô‚‚© ‘«‚è‚È‚¢ ƒeƒLƒXƒg ‚ª ‚ ‚éB - 5. ‘}“ü‚Ì•û–@‚ª‚í‚©‚Á‚½‚烌ƒbƒXƒ“ 1.5 ‚Öi‚Ý‚Ü‚µ‚傤B + 5. ‘}“ü‚Ì•û–@‚ª‚í‚©‚Á‚½‚烌ƒbƒXƒ“ 1.1.5 ‚Öi‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.5: ƒeƒLƒXƒg•ÒW - ’ljÁ + ƒŒƒbƒXƒ“ 1.1.5: ƒeƒLƒXƒg•ÒW - ’ljÁ ** ƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í A ‚ð‰Ÿ‚µ‚Ü‚µ‚傤B ** @@ -132,17 +132,17 @@ NOTE: ---> ‚±‚±‚É‚àŠÔˆá‚Á‚½ƒeƒLƒX ‚±‚±‚É‚àŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è‚Ü‚·B - 5. ƒeƒLƒXƒg‚̒ljÁ‚ªŒy‰õ‚É‚È‚Á‚Ä‚«‚½‚烌ƒbƒXƒ“ 1.6 ‚Öi‚Ý‚Ü‚µ‚傤B + 5. ƒeƒLƒXƒg‚̒ljÁ‚ªŒy‰õ‚É‚È‚Á‚Ä‚«‚½‚烌ƒbƒXƒ“ 1.1.6 ‚Öi‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.6: ƒtƒ@ƒCƒ‹‚Ì•ÒW + ƒŒƒbƒXƒ“ 1.1.6: ƒtƒ@ƒCƒ‹‚Ì•ÒW ** ƒtƒ@ƒCƒ‹‚ð•Û‘¶‚µ‚ÄI—¹‚·‚é‚É‚Í :wq ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** !! NOTE: ˆÈ‰º‚̃Xƒeƒbƒv‚ðŽÀs‚·‚é‘O‚ÉA‚Ü‚¸‘S‘Ì‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢!! 1. •Ê‚Ì’[––‚ª‚ ‚éꇂ͂»‚±‚ňȉº‚Ì“à—e‚ðs‚Á‚Ä‚­‚¾‚³‚¢B‚»‚¤‚Å‚È‚¯‚ê‚ÎA - ƒŒƒbƒXƒ“ 1.2 ‚Å‚â‚Á‚½‚悤‚É :q! ‚ðƒ^ƒCƒv‚µ‚ÄA‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚ðI—¹ + ƒŒƒbƒXƒ“ 1.1.2 ‚Å‚â‚Á‚½‚悤‚É :q! ‚ðƒ^ƒCƒv‚µ‚ÄA‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚ðI—¹ ‚µ‚Ü‚·B 2. ƒVƒFƒ‹ƒvƒƒ“ƒvƒg‚Å‚±‚̃Rƒ}ƒ“ƒh‚ðƒ^ƒCƒv‚µ‚Ü‚·: vim file.txt @@ -159,7 +159,7 @@ NOTE: 6. ˆÈã‚̃Xƒeƒbƒv‚ð“Ç‚ñ‚Å—‰ð‚µ‚½ã‚Å‚±‚ê‚ðŽÀs‚µ‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1 —v–ñ + ƒŒƒbƒXƒ“ 1.1 —v–ñ 1. ƒJ[ƒ\ƒ‹‚Í–îˆóƒL[‚à‚µ‚­‚Í hjkl ƒL[‚ňړ®‚µ‚Ü‚·B @@ -179,10 +179,10 @@ NOTE: NOTE: ƒL[‚ð‰Ÿ‚·‚ƃm[ƒ}ƒ‹ƒ‚[ƒh‚ɈÚs‚µ‚Ü‚·B‚»‚ÌÛAŠÔˆá‚Á‚½‚è“ü—Í“r ’†‚̃Rƒ}ƒ“ƒh‚ðŽæ‚èÁ‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B -‚³‚ÄA‘±‚¯‚ăŒƒbƒXƒ“ 2 ‚ðŽn‚ß‚Ü‚µ‚傤B +‚³‚ÄA‘±‚¯‚ăŒƒbƒXƒ“ 1.2 ‚ðŽn‚ß‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.1: 휃Rƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.2.1: 휃Rƒ}ƒ“ƒh ** ’PŒê‚Ì––”ö‚Ü‚Å‚ð휂·‚é‚É‚Í dw ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤B ** @@ -201,11 +201,11 @@ NOTE: ---> ‚±‚Ì •¶ Ž† ‚É‚Í ‚¢‚­‚‚©‚Ì ‚½‚Ì‚µ‚¢ •K—v‚Ì‚È‚¢ ’PŒê ‚ª ŠÜ‚Ü‚ê‚Ä ‚¢‚Ü‚·B - 5. 3 ‚©‚ç 4 ‚܂ł𕶂ª³‚µ‚­‚È‚é‚Ü‚ÅŒJ‚è•Ô‚µAƒŒƒbƒXƒ“ 2.2 ‚Öi‚Ý‚Ü‚µ‚傤B + 5. 3 ‚©‚ç 4 ‚܂ł𕶂ª³‚µ‚­‚È‚é‚Ü‚ÅŒJ‚è•Ô‚µAƒŒƒbƒXƒ“ 1.2.2 ‚Öi‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.2: ‚»‚Ì‘¼‚Ì휃Rƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.2.2: ‚»‚Ì‘¼‚Ì휃Rƒ}ƒ“ƒh ** s‚Ì––”ö‚Ü‚Å‚ð휂·‚é‚É‚Í d$ ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤B ** @@ -221,14 +221,14 @@ NOTE: ---> ’N‚©‚ª‚±‚Ìs‚ÌÅŒã‚ð2“xƒ^ƒCƒv‚µ‚Ü‚µ‚½B 2“xƒ^ƒCƒv‚µ‚Ü‚µ‚½B - 5. ‚Ç‚¤‚¢‚¤‚±‚Æ‚©—‰ð‚·‚邽‚ß‚ÉAƒŒƒbƒXƒ“ 2.3 ‚Öi‚Ý‚Ü‚µ‚傤B + 5. ‚Ç‚¤‚¢‚¤‚±‚Æ‚©—‰ð‚·‚邽‚ß‚ÉAƒŒƒbƒXƒ“ 1.2.3 ‚Öi‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.3: ƒIƒyƒŒ[ƒ^‚ƃ‚[ƒVƒ‡ƒ“ + ƒŒƒbƒXƒ“ 1.2.3: ƒIƒyƒŒ[ƒ^‚ƃ‚[ƒVƒ‡ƒ“ ƒeƒLƒXƒg‚É•ÏX‚ð‰Á‚¦‚鑽‚­‚̃Rƒ}ƒ“ƒh‚̓IƒyƒŒ[ƒ^‚ƃ‚[ƒVƒ‡ƒ“‚©‚ç‚È‚è‚Ü‚·B @@ -251,7 +251,7 @@ NOTE: ‚Ý‚Ü‚µ‚傤BƒJ[ƒ\ƒ‹‚ª–Ú“IŒêˆê——‚ÅŽ¦‚³‚ê‚éˆÊ’u‚Ɉړ®‚·‚é‚Í‚¸‚Å‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.4: ƒ‚[ƒVƒ‡ƒ“‚ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é + ƒŒƒbƒXƒ“ 1.2.4: ƒ‚[ƒVƒ‡ƒ“‚ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é ** ‰½‰ñ‚às‚¢‚½‚¢ŒJ‚è•Ô‚µ‚̃‚[ƒVƒ‡ƒ“‚Ì‘O‚É”’l‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -268,13 +268,13 @@ NOTE: ---> This is just a line with words you can move around in. - 6. ƒŒƒbƒXƒ“ 2.5 ‚Éi‚Ý‚Ü‚µ‚傤B + 6. ƒŒƒbƒXƒ“ 1.2.5 ‚Éi‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.5: ‚æ‚葽‚­‚ð휂·‚邽‚߂ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é + ƒŒƒbƒXƒ“ 1.2.5: ‚æ‚葽‚­‚ð휂·‚邽‚߂ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é ** ƒIƒyƒŒ[ƒ^‚ƃJƒEƒ“ƒg‚ðƒ^ƒCƒv‚·‚é‚ÆA‚»‚Ì‘€ì‚ª•¡”‰ñŒJ‚è•Ô‚³‚ê‚Ü‚·B ** @@ -297,7 +297,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.6: s‚Ì‘€ì + ƒŒƒbƒXƒ“ 1.2.6: s‚Ì‘€ì ** s‘S‘Ì‚ð휂·‚é‚É‚Í dd ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** @@ -321,7 +321,7 @@ NOTE: 2‰ñƒ^ƒCƒv‚Å1s‚ɑ΂µ‚Äì—p‚³‚¹‚é•û–@‚͈ȉº‚Åq‚ׂéƒIƒyƒŒ[ƒ^‚Å‚à“®ì‚µ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.7: ‚â‚è’¼‚µƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.2.7: ‚â‚è’¼‚µƒRƒ}ƒ“ƒh ** ÅŒã‚̃Rƒ}ƒ“ƒh‚ðŽæ‚èÁ‚·‚É‚Í u ‚ð‰Ÿ‚µ‚Ü‚·BU ‚Ís‘S‘Ì‚ÌŽæ‚èÁ‚µ‚Å‚·B ** @@ -338,13 +338,13 @@ NOTE: ---> ‚±‚Ì‚Ìs‚̂̊ԈႢ‚ðC³X‚µAŒã‚Å‚»‚ê‚ç‚ÌC³‚ð‚ðŽæ‚èÁ‚µ‚Ü‚Ü‚·‚·B - 8. ‚±‚ê‚Í‚Æ‚Ä‚à•Ö—˜‚ȃRƒ}ƒ“ƒh‚Å‚·B‚³‚ŸƒŒƒbƒXƒ“ 2 —v–ñ‚Öi‚Ý‚Ü‚µ‚傤B + 8. ‚±‚ê‚Í‚Æ‚Ä‚à•Ö—˜‚ȃRƒ}ƒ“ƒh‚Å‚·B‚³‚ŸƒŒƒbƒXƒ“ 1.2 —v–ñ‚Öi‚Ý‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2 —v–ñ + ƒŒƒbƒXƒ“ 1.2 —v–ñ 1. ƒJ[ƒ\ƒ‹ˆÊ’u‚©‚玟‚Ì’PŒê‚Ü‚Å‚ð휂·‚é‚É‚Í dw ‚ƃ^ƒCƒv‚µ‚Ü‚·B @@ -368,7 +368,7 @@ NOTE: Žæ‚èÁ‚µ‚ÌŽæ‚èÁ‚µ: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.1: “\‚è•t‚¯ƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.3.1: “\‚è•t‚¯ƒRƒ}ƒ“ƒh ** ÅŒã‚É휂³‚ꂽs‚ðƒJ[ƒ\ƒ‹‚ÌŒã‚É“\‚è•t‚¯‚é‚É‚Í p ‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -392,7 +392,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.2: ’u‚«Š·‚¦ƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.3.2: ’u‚«Š·‚¦ƒRƒ}ƒ“ƒh ** ƒJ[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð x ‚É’u‚«Š·‚¦‚é‚É‚Í rx ‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -408,14 +408,14 @@ NOTE: ---> ‚±‚̇‚ðl—Í‚µ‚½Žž‚ËA‚»‚Ìl‚ÍŠô‚‚©–âˆá‚Á‚½ƒL[‚ð‰Ÿ‚µ‚à‚µ‚½! ---> ‚±‚Ìs‚ð“ü—Í‚µ‚½Žž‚ÉA‚»‚Ìl‚ÍŠô‚‚©ŠÔˆá‚Á‚½ƒL[‚ð‰Ÿ‚µ‚Ü‚µ‚½! - 5. ‚³‚ŸAƒŒƒbƒXƒ“ 3.3 ‚Öi‚Ý‚Ü‚µ‚傤B + 5. ‚³‚ŸAƒŒƒbƒXƒ“ 1.3.3 ‚Öi‚Ý‚Ü‚µ‚傤B NOTE: ŽÀÛ‚ÉŽŽ‚µ‚Ü‚µ‚傤BŒˆ‚µ‚ÄŠo‚¦‚邾‚¯‚É‚Í‚µ‚È‚¢‚±‚ÆB ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.3: •ÏXƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.3.3: •ÏXƒRƒ}ƒ“ƒh ** ’PŒê‚Ì––”ö‚Ü‚Å‚ð•ÏX‚·‚é‚É‚Í ce ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** @@ -438,7 +438,7 @@ cc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.4: c ‚ðŽg—p‚µ‚½‚»‚Ì‘¼‚Ì•ÏX + ƒŒƒbƒXƒ“ 1.3.4: c ‚ðŽg—p‚µ‚½‚»‚Ì‘¼‚Ì•ÏX ** •ÏXƒIƒyƒŒ[ƒ^‚ÍA휂Ɠ¯‚¶—l‚Ƀ‚[ƒVƒ‡ƒ“‚ðŽg—p‚µ‚Ü‚·B ** @@ -461,7 +461,7 @@ cc NOTE: ƒ^ƒCƒv’†‚̊ԈႢ‚̓oƒbƒNƒXƒy[ƒXƒL[‚ðŽg‚Á‚Ä’¼‚·‚±‚Æ‚à‚Å‚«‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3 —v–ñ + ƒŒƒbƒXƒ“ 1.3 —v–ñ 1. Šù‚É휂³‚ꂽƒeƒLƒXƒg‚ðÄ”z’u‚·‚é‚É‚ÍAp ‚ðƒ^ƒCƒv‚µ‚Ü‚·B‚±‚ê‚Í휂³ @@ -484,7 +484,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.1: ˆÊ’u‚ƃtƒ@ƒCƒ‹‚Ìî•ñ + ƒŒƒbƒXƒ“ 1.4.1: ˆÊ’u‚ƃtƒ@ƒCƒ‹‚Ìî•ñ ** ƒtƒ@ƒCƒ‹“à‚ł̈ʒu‚ƃtƒ@ƒCƒ‹‚Ìó‘Ô‚ð•\Ž¦‚·‚é‚É‚Í CTRL-G ‚ðƒ^ƒCƒv‚µ‚Ü‚·B ƒtƒ@ƒCƒ‹“à‚Ì‚ ‚és‚Ɉړ®‚·‚é‚É‚Í G ‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -507,7 +507,7 @@ NOTE: 4. Ž©M‚ªŽ‚Ä‚½‚çƒXƒeƒbƒv 1 ‚©‚ç 3 ‚ðŽÀs‚µ‚Ü‚µ‚傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.2: ŒŸõƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.4.2: ŒŸõƒRƒ}ƒ“ƒh ** Œê‹å‚ðŒŸõ‚·‚é‚É‚Í / ‚ÆA‘O•ûŒŸõ‚·‚éŒê‹å‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -530,7 +530,7 @@ NOTE: ꇂÍAƒtƒ@ƒCƒ‹‚Ì擪‚©‚猟õ‚ð‘±s‚µ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.3: ‘Ήž‚·‚銇ŒÊ‚ðŒŸõ + ƒŒƒbƒXƒ“ 1.4.3: ‘Ήž‚·‚銇ŒÊ‚ðŒŸõ ** ‘Ήž‚·‚é ),] ‚â } ‚ðŒŸõ‚·‚é‚É‚Í % ‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -553,7 +553,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.4: ŠÔˆá‚¢‚ð•ÏX‚·‚é•û–@ + ƒŒƒbƒXƒ“ 1.4.4: ŠÔˆá‚¢‚ð•ÏX‚·‚é•û–@ ** 'old' ‚ð 'new' ‚É’uŠ·‚·‚é‚É‚Í :s/old/new/g ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** @@ -576,7 +576,7 @@ NOTE: ‚ª‚ç•ÏX‚·‚éB ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4 —v–ñ + ƒŒƒbƒXƒ“ 1.4 —v–ñ 1. CTRL-G ‚̓tƒ@ƒCƒ‹‚ł̈ʒu‚ƃtƒ@ƒCƒ‹‚ÌÚׂð•\Ž¦‚µ‚Ü‚·B @@ -599,7 +599,7 @@ NOTE: 'c' ‚ð‰Á‚¦‚é‚Æ’uŠ·‚Ì“x‚ÉŠm”F‚ð‹‚ß‚éB :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.1: ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀs‚·‚é•û–@ + ƒŒƒbƒXƒ“ 1.5.1: ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀs‚·‚é•û–@ ** :! ‚ÌŒã‚ÉŽÀs‚·‚éŠO•”ƒRƒ}ƒ“ƒh‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -622,7 +622,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.2: ‚»‚Ì‘¼‚̃tƒ@ƒCƒ‹‚Ö‘‚«ž‚Ý + ƒŒƒbƒXƒ“ 1.5.2: ‚»‚Ì‘¼‚̃tƒ@ƒCƒ‹‚Ö‘‚«ž‚Ý ** ƒtƒ@ƒCƒ‹‚Ö•ÏX‚ð•Û‘¶‚·‚é‚É‚Í :w ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** @@ -645,7 +645,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.3: ‘I‘ð‚µ‚½‘‚«ž‚Ý + ƒŒƒbƒXƒ“ 1.5.3: ‘I‘ð‚µ‚½‘‚«ž‚Ý ** ƒtƒ@ƒCƒ‹‚̈ꕔ‚ð•Û‘¶‚·‚é‚É‚ÍAv ƒ‚[ƒVƒ‡ƒ“‚Æ :w FILENAME ‚ðƒ^ƒCƒv‚µ‚Ü‚·B ** @@ -669,21 +669,21 @@ NOTE: v ‚Å‚«‚Ü‚·B—Ⴆ‚Î d ‚̓eƒLƒXƒg‚ð휂µ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.4: ƒtƒ@ƒCƒ‹‚̎枂Ƈ•¹ + ƒŒƒbƒXƒ“ 1.5.4: ƒtƒ@ƒCƒ‹‚̎枂Ƈ•¹ ** ƒtƒ@ƒCƒ‹‚Ì’†g‚ð‘}“ü‚·‚é‚É‚Í :r ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** 1. ƒJ[ƒ\ƒ‹‚ð‚±‚Ìs‚Ì‚·‚®ã‚ɇ‚킹‚Ü‚·B -NOTE: ƒXƒeƒbƒv 2 ‚ÌŽÀsŒãAƒŒƒbƒXƒ“ 5.3 ‚̃eƒLƒXƒg‚ªŒ»‚ê‚Ü‚·B‰º‚ɉº‚ª‚Á‚Ä‚± +NOTE: ƒXƒeƒbƒv 2 ‚ÌŽÀsŒãAƒŒƒbƒXƒ“ 1.5.3 ‚̃eƒLƒXƒg‚ªŒ»‚ê‚Ü‚·B‰º‚ɉº‚ª‚Á‚Ä‚± ‚̃ŒƒbƒXƒ“‚Ɉړ®‚µ‚Ü‚µ‚傤B 2. ‚Å‚Í TEST ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ð :r TEST ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh‚Å“Ç‚Ýž‚Ý‚Ü‚µ‚傤B ‚±‚±‚Å‚¢‚¤ TEST ‚ÍŽg‚¤ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚Ì‚±‚Æ‚Å‚·B “Ç‚Ýž‚܂ꂽƒtƒ@ƒCƒ‹‚ÍAƒJ[ƒ\ƒ‹s‚̉º‚É‚ ‚è‚Ü‚·B - 3. Žæ‚èž‚ñ‚¾ƒtƒ@ƒCƒ‹‚ðŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚傤BƒJ[ƒ\ƒ‹‚ð–ß‚·‚ÆAƒŒƒbƒXƒ“5.3 ‚Ì + 3. Žæ‚èž‚ñ‚¾ƒtƒ@ƒCƒ‹‚ðŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚傤BƒJ[ƒ\ƒ‹‚ð–ß‚·‚ÆAƒŒƒbƒXƒ“1.5.3 ‚Ì ƒIƒŠƒWƒiƒ‹‚ƃtƒ@ƒCƒ‹‚É‚æ‚é‚à‚Ì‚Ì2‚‚ª‚ ‚邱‚Æ‚ª‚í‚©‚è‚Ü‚·B NOTE: ŠO•”ƒRƒ}ƒ“ƒh‚Ìo—Í‚ð“Ç‚Ýž‚Þ‚±‚Æ‚à‚Å‚«‚Ü‚·B—Ⴆ‚ÎA @@ -691,7 +691,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5 —v–ñ + ƒŒƒbƒXƒ“ 1.5 —v–ñ 1. :!command ‚É‚æ‚Á‚Ä ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀs‚·‚éB @@ -714,7 +714,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.1: ƒI[ƒvƒ“ƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.6.1: ƒI[ƒvƒ“ƒRƒ}ƒ“ƒh ** o ‚ðƒ^ƒCƒv‚·‚é‚ÆAƒJ[ƒ\ƒ‹‚̉º‚Ìs‚ªŠJ‚«A‘}“üƒ‚[ƒh‚É“ü‚è‚Ü‚·B ** @@ -737,7 +737,7 @@ NOTE: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.2: ’ljÁƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.6.2: ’ljÁƒRƒ}ƒ“ƒh ** ƒJ[ƒ\ƒ‹‚ÌŽŸ‚̈ʒu‚©‚çƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í a ‚ƃ^ƒCƒv‚µ‚Ü‚·B ** @@ -760,7 +760,7 @@ NOTE: a, i ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.3: ‚»‚Ì‘¼‚Ì’uŠ·•û–@ + ƒŒƒbƒXƒ“ 1.6.3: ‚»‚Ì‘¼‚Ì’uŠ·•û–@ ** 1•¶ŽšˆÈã‚ð’u‚«Š·‚¦‚é‚ɂ͑啶Žš‚Ì R ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤B ** @@ -782,7 +782,7 @@ NOTE: ‚ð휂µ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.4: ƒeƒLƒXƒg‚̃Rƒs[‚ƃy[ƒXƒg + ƒŒƒbƒXƒ“ 1.6.4: ƒeƒLƒXƒg‚̃Rƒs[‚ƃy[ƒXƒg ** ƒeƒLƒXƒg‚̃Rƒs[‚ɂ̓IƒyƒŒ[ƒ^ y ‚ðAƒy[ƒXƒg‚É‚Í p ‚ðŽg‚¢‚Ü‚·B ** @@ -806,7 +806,7 @@ NOTE: NOTE: y ‚ðƒIƒyƒŒ[ƒ^‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·Byw ‚Í’PŒê‚ð1‚ yank ‚µ‚Ü‚·B yy ‚Ís‚ð1‚ yank ‚µAp ‚Å‚»‚Ìs‚ð put ‚µ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.5: ƒIƒvƒVƒ‡ƒ“‚ÌÝ’è + ƒŒƒbƒXƒ“ 1.6.5: ƒIƒvƒVƒ‡ƒ“‚ÌÝ’è ** ŒŸõ‚â’uŠ·‚Ìۂɑ啶Žš/¬•¶Žš‚𖳎‹‚·‚é‚É‚ÍAƒIƒvƒVƒ‡ƒ“‚ðݒ肵‚Ü‚·B ** @@ -829,7 +829,7 @@ NOTE: NOTE: 1‚‚̌ŸõƒRƒ}ƒ“ƒh‚¾‚¯‘啶Žš¬•¶Žš‚Ì‹æ•Ê‚ð‚â‚ß‚½‚¢‚È‚ç‚ÎAŒê‹å“à‚Å \c ‚ðŽg—p‚µ‚Ü‚·: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6 —v–ñ + ƒŒƒbƒXƒ“ 1.6 —v–ñ 1. o ‚ðƒ^ƒCƒv‚·‚é‚ƃJ[ƒ\ƒ‹‚̉º‚Ìs‚ðŠJ‚¯‚ÄA‚»‚±‚Å‘}“üƒ‚[ƒh‚É‚È‚éB O (‘啶Žš) ‚ðƒ^ƒCƒv‚·‚é‚ƃJ[ƒ\ƒ‹‚Ìã‚Ìs‚Å‘}“üƒ‚[ƒh‚É‚È‚éB @@ -852,7 +852,7 @@ NOTE: 1 7. ƒIƒvƒVƒ‡ƒ“‚𖳌ø‚É‚·‚é‚É‚Í "no" ‚ð•t—^‚·‚é: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 7.1: ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒvƒRƒ}ƒ“ƒh + ƒŒƒbƒXƒ“ 1.7.1: ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒvƒRƒ}ƒ“ƒh ** ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒv‚ðŽg—p‚µ‚Ü‚µ‚傤 ** @@ -875,7 +875,7 @@ NOTE: 1 :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 7.2: ‹N“®ƒXƒNƒŠƒvƒg‚Ìì¬ + ƒŒƒbƒXƒ“ 1.7.2: ‹N“®ƒXƒNƒŠƒvƒg‚Ìì¬ ** Vim ‚Ì“Á’¥‚ð”­Šö‚·‚é ** @@ -898,7 +898,7 @@ NOTE: 1 ‚æ‚葽‚­‚Ìî•ñ‚𓾂é‚É‚Í :help vimrc-intro ‚ƃ^ƒCƒv‚µ‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 7.3: •âŠ® + ƒŒƒbƒXƒ“ 1.7.3: •âŠ® ** CTRL-D ‚Æ ‚ŃRƒ}ƒ“ƒhƒ‰ƒCƒ“‚ð•âŠ®‚·‚é ** @@ -921,7 +921,7 @@ NOTE: ‚³‚¢B“Á‚É :help ‚Ìۂɖ𗧂¿‚Ü‚·B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 7 —v–ñ + ƒŒƒbƒXƒ“ 1.7 —v–ñ 1. ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ðŠJ‚­‚É‚Í :help ‚Æ‚·‚é‚© ‚à‚µ‚­‚Í ‚ð‰Ÿ‚·B diff --git a/runtime/tutor/tutor.ja.utf-8 b/runtime/tutor/tutor1.ja.utf-8 similarity index 93% rename from runtime/tutor/tutor.ja.utf-8 rename to runtime/tutor/tutor1.ja.utf-8 index 8eaa72cf05..96004ceaea 100644 --- a/runtime/tutor/tutor.ja.utf-8 +++ b/runtime/tutor/tutor1.ja.utf-8 @@ -18,10 +18,10 @@ ã¦ãŠã‹ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。正ã—ã学習ã™ã‚‹ã«ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’実際ã«è©¦ã•ãªã‘れ㰠ãªã‚‰ãªã„ã®ã§ã™ã€‚文章を読んã ã ã‘ãªã‚‰ã°ã€ãã£ã¨å¿˜ã‚Œã¦ã—ã¾ã„ã¾ã™! - ã•ãã€CapsロックキーãŒæŠ¼ã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’確èªã—ãŸå¾Œã€ç”»é¢ã«ãƒ¬ãƒƒã‚¹ãƒ³1.1 + ã•ãã€CapsロックキーãŒæŠ¼ã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’確èªã—ãŸå¾Œã€ç”»é¢ã«ãƒ¬ãƒƒã‚¹ãƒ³1.1.1 ãŒå…¨éƒ¨è¡¨ç¤ºã•ã‚Œã‚‹ã¨ã“ã‚ã¾ã§ã€j キーを押ã—ã¦ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã—ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.1: カーソルã®ç§»å‹• + レッスン 1.1.1: カーソルã®ç§»å‹• ** カーソルを移動ã™ã‚‹ã«ã¯ã€ç¤ºã•ã‚Œã‚‹æ§˜ã« h,j,k,l を押ã—ã¾ã™ã€‚ ** @@ -35,7 +35,7 @@ 2. 下ã¸ã®ã‚­ãƒ¼(j)を押ã—ã¤ã¥ã‘ã‚‹ã¨ã€é€£ç¶šã—ã¦ç§»å‹•ã§ãã¾ã™ã€‚ ã“ã‚Œã§æ¬¡ã®ãƒ¬ãƒƒã‚¹ãƒ³ã«ç§»å‹•ã™ã‚‹æ–¹æ³•ãŒã‚ã‹ã‚Šã¾ã—ãŸã­ã€‚ - 3. 下ã¸ã®ã‚­ãƒ¼ã‚’使ã£ã¦ã€ãƒ¬ãƒƒã‚¹ãƒ³1.2 ã«ç§»å‹•ã—ã¾ã—ょã†ã€‚ + 3. 下ã¸ã®ã‚­ãƒ¼ã‚’使ã£ã¦ã€ãƒ¬ãƒƒã‚¹ãƒ³1.1.2 ã«ç§»å‹•ã—ã¾ã—ょã†ã€‚ NOTE: 何をタイプã—ã¦ã„ã‚‹ã‹åˆ¤ã‚‰ãªããªã£ãŸã‚‰ã€ã‚’押ã—ã¦ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã— ã¾ã™ã€‚ãã‚Œã‹ã‚‰å…¥åŠ›ã—よã†ã¨ã—ã¦ã„ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’å†å…¥åŠ›ã—ã¾ã—ょã†ã€‚ @@ -44,7 +44,7 @@ NOTE: カーソルキーã§ã‚‚移動ã§ãã¾ã™ã€‚ã—ã‹ã— hjkl ã«ä¸€åº¦æ…£ ã«é€Ÿã移動ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã§ã—ょã†ã€‚ã„やマジã§! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.2: VIM ã®èµ·å‹•ã¨çµ‚了 + レッスン 1.1.2: VIM ã®èµ·å‹•ã¨çµ‚了 !! NOTE: 以下ã®ã‚らゆるステップを行ã†å‰ã«ã€ã“ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’読ã¿ã¾ã—ょã†!! @@ -63,11 +63,11 @@ NOTE: カーソルキーã§ã‚‚移動ã§ãã¾ã™ã€‚ã—ã‹ã— hjkl ã«ä¸€åº¦æ…£ NOTE: :q! ã¯å…¨ã¦ã®å¤‰æ›´ã‚’破棄ã—ã¾ã™ã€‚レッスンã«ã¦å¤‰æ›´ã‚’ファイルã«ä¿ å­˜ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦ã‚‚勉強ã—ã¦ã„ãã¾ã—ょã†ã€‚ - 5. 1.3ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã•ã›ã¾ã—ょã†ã€‚ + 5. 1.1.3ã¾ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã•ã›ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.3: テキスト編集 - 削除 + レッスン 1.1.3: テキスト編集 - 削除 ** ノーマルモードã«ã¦ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®æ–‡å­—を削除ã™ã‚‹ã«ã¯ x を押ã—ã¾ã™ã€‚ ** @@ -82,14 +82,14 @@ NOTE: :q! ã¯å…¨ã¦ã®å¤‰æ›´ã‚’破棄ã—ã¾ã™ã€‚レッスンã«ã¦å¤‰ ---> ãã® ã†ã†ã•ãŽ 㯠ã¤ã¤ãã ã‚’ ã“ãˆãˆã¦ã¦ ã¨ã³ã¯ã­ãŸãŸ - 5. è¡ŒãŒæ­£ã—ããªã£ãŸã‚‰ã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.4 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 5. è¡ŒãŒæ­£ã—ããªã£ãŸã‚‰ã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.1.4 ã¸é€²ã¿ã¾ã—ょã†ã€‚ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã実際ã«ã‚„ã£ã¦ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.4: テキスト編集 - 挿入 + レッスン 1.1.4: テキスト編集 - 挿入 ** ノーマルモードã«ã¦ãƒ†ã‚­ã‚¹ãƒˆã‚’挿入ã™ã‚‹ã«ã¯ i を押ã—ã¾ã™ã€‚ ** @@ -107,12 +107,12 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã ---> ã“ã® ã«ã¯ 足りãªã„ テキスト ã‚る。 ---> ã“ã® è¡Œ ã«ã¯ å¹¾ã¤ã‹ 足りãªã„ テキスト ㌠ã‚る。 - 5. 挿入ã®æ–¹æ³•ãŒã‚ã‹ã£ãŸã‚‰ãƒ¬ãƒƒã‚¹ãƒ³ 1.5 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 5. 挿入ã®æ–¹æ³•ãŒã‚ã‹ã£ãŸã‚‰ãƒ¬ãƒƒã‚¹ãƒ³ 1.1.5 ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.5: テキスト編集 - 追加 + レッスン 1.1.5: テキスト編集 - 追加 ** テキストを追加ã™ã‚‹ã«ã¯ A を押ã—ã¾ã—ょã†ã€‚ ** @@ -132,17 +132,17 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã ---> ã“ã“ã«ã‚‚é–“é•ã£ãŸãƒ†ã‚­ã‚¹ ã“ã“ã«ã‚‚é–“é•ã£ãŸãƒ†ã‚­ã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ - 5. テキストã®è¿½åŠ ãŒè»½å¿«ã«ãªã£ã¦ããŸã‚‰ãƒ¬ãƒƒã‚¹ãƒ³ 1.6 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 5. テキストã®è¿½åŠ ãŒè»½å¿«ã«ãªã£ã¦ããŸã‚‰ãƒ¬ãƒƒã‚¹ãƒ³ 1.1.6 ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.6: ファイルã®ç·¨é›† + レッスン 1.1.6: ファイルã®ç·¨é›† ** ファイルをä¿å­˜ã—ã¦çµ‚了ã™ã‚‹ã«ã¯ :wq ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** !! NOTE: 以下ã®ã‚¹ãƒ†ãƒƒãƒ—を実行ã™ã‚‹å‰ã«ã€ã¾ãšå…¨ä½“を読んã§ãã ã•ã„!! 1. 別ã®ç«¯æœ«ãŒã‚ã‚‹å ´åˆã¯ãã“ã§ä»¥ä¸‹ã®å†…容を行ã£ã¦ãã ã•ã„。ãã†ã§ãªã‘ã‚Œã°ã€ - レッスン 1.2 ã§ã‚„ã£ãŸã‚ˆã†ã« :q! をタイプã—ã¦ã€ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’終了 + レッスン 1.1.2 ã§ã‚„ã£ãŸã‚ˆã†ã« :q! をタイプã—ã¦ã€ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’終了 ã—ã¾ã™ã€‚ 2. シェルプロンプトã§ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’タイプã—ã¾ã™: vim file.txt @@ -159,7 +159,7 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã 6. 以上ã®ã‚¹ãƒ†ãƒƒãƒ—を読んã§ç†è§£ã—ãŸä¸Šã§ã“れを実行ã—ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1 è¦ç´„ + レッスン 1.1 è¦ç´„ 1. カーソルã¯çŸ¢å°ã‚­ãƒ¼ã‚‚ã—ã㯠hjkl キーã§ç§»å‹•ã—ã¾ã™ã€‚ @@ -179,10 +179,10 @@ NOTE: å…¨ã¦ã®ãƒ¬ãƒƒã‚¹ãƒ³ã‚’通ã˜ã¦ã€è¦šãˆã‚ˆã†ã¨ã™ã‚‹ã®ã§ã¯ãªã NOTE: キーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã®éš›ã€é–“é•ã£ãŸã‚Šå…¥åŠ›é€” 中ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å–り消ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ -ã•ã¦ã€ç¶šã‘ã¦ãƒ¬ãƒƒã‚¹ãƒ³ 2 を始ã‚ã¾ã—ょã†ã€‚ +ã•ã¦ã€ç¶šã‘ã¦ãƒ¬ãƒƒã‚¹ãƒ³ 1.2 を始ã‚ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.1: 削除コマンド + レッスン 1.2.1: 削除コマンド ** å˜èªžã®æœ«å°¾ã¾ã§ã‚’削除ã™ã‚‹ã«ã¯ dw ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ ** @@ -201,11 +201,11 @@ NOTE: キーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã® ---> ã“ã® æ–‡ ç´™ ã«ã¯ ã„ãã¤ã‹ã® ãŸã®ã—ã„ å¿…è¦ã®ãªã„ å˜èªž ㌠å«ã¾ã‚Œã¦ ã„ã¾ã™ã€‚ - 5. 3 ã‹ã‚‰ 4 ã¾ã§ã‚’æ–‡ãŒæ­£ã—ããªã‚‹ã¾ã§ç¹°ã‚Šè¿”ã—ã€ãƒ¬ãƒƒã‚¹ãƒ³ 2.2 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 5. 3 ã‹ã‚‰ 4 ã¾ã§ã‚’æ–‡ãŒæ­£ã—ããªã‚‹ã¾ã§ç¹°ã‚Šè¿”ã—ã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.2.2 ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.2: ãã®ä»–ã®å‰Šé™¤ã‚³ãƒžãƒ³ãƒ‰ + レッスン 1.2.2: ãã®ä»–ã®å‰Šé™¤ã‚³ãƒžãƒ³ãƒ‰ ** è¡Œã®æœ«å°¾ã¾ã§ã‚’削除ã™ã‚‹ã«ã¯ d$ ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ ** @@ -221,14 +221,14 @@ NOTE: キーを押ã™ã¨ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œã—ã¾ã™ã€‚ãã® ---> 誰ã‹ãŒã“ã®è¡Œã®æœ€å¾Œã‚’2度タイプã—ã¾ã—ãŸã€‚ 2度タイプã—ã¾ã—ãŸã€‚ - 5. ã©ã†ã„ã†ã“ã¨ã‹ç†è§£ã™ã‚‹ãŸã‚ã«ã€ãƒ¬ãƒƒã‚¹ãƒ³ 2.3 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 5. ã©ã†ã„ã†ã“ã¨ã‹ç†è§£ã™ã‚‹ãŸã‚ã«ã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.2.3 ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.3: オペレータã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ + レッスン 1.2.3: オペレータã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ テキストã«å¤‰æ›´ã‚’加ãˆã‚‹å¤šãã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã¨ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã‹ã‚‰ãªã‚Šã¾ã™ã€‚ @@ -251,7 +251,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— ã¿ã¾ã—ょã†ã€‚カーソルãŒç›®çš„語一覧ã§ç¤ºã•ã‚Œã‚‹ä½ç½®ã«ç§»å‹•ã™ã‚‹ã¯ãšã§ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.4: モーションã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã™ã‚‹ + レッスン 1.2.4: モーションã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã™ã‚‹ ** 何回も行ã„ãŸã„ç¹°ã‚Šè¿”ã—ã®ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã®å‰ã«æ•°å€¤ã‚’タイプã—ã¾ã™ã€‚ ** @@ -268,13 +268,13 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— ---> This is just a line with words you can move around in. - 6. レッスン 2.5 ã«é€²ã¿ã¾ã—ょã†ã€‚ + 6. レッスン 1.2.5 ã«é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.5: より多ãを削除ã™ã‚‹ãŸã‚ã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã™ã‚‹ + レッスン 1.2.5: より多ãを削除ã™ã‚‹ãŸã‚ã«ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã™ã‚‹ ** オペレータã¨ã‚«ã‚¦ãƒ³ãƒˆã‚’タイプã™ã‚‹ã¨ã€ãã®æ“作ãŒè¤‡æ•°å›žç¹°ã‚Šè¿”ã•ã‚Œã¾ã™ã€‚ ** @@ -297,7 +297,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.6: è¡Œã®æ“作 + レッスン 1.2.6: è¡Œã®æ“作 ** 行全体を削除ã™ã‚‹ã«ã¯ dd ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** @@ -321,7 +321,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— 2回タイプã§1è¡Œã«å¯¾ã—ã¦ä½œç”¨ã•ã›ã‚‹æ–¹æ³•ã¯ä»¥ä¸‹ã§è¿°ã¹ã‚‹ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ã§ã‚‚動作ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.7: ã‚„ã‚Šç›´ã—コマンド + レッスン 1.2.7: ã‚„ã‚Šç›´ã—コマンド ** 最後ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å–り消ã™ã«ã¯ u を押ã—ã¾ã™ã€‚U ã¯è¡Œå…¨ä½“ã®å–り消ã—ã§ã™ã€‚ ** @@ -338,13 +338,13 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— ---> ã“ã®ã®è¡Œã®ã®é–“é•ã„を修正々ã—ã€å¾Œã§ãれらã®ä¿®æ­£ã‚’ã‚’å–り消ã—ã¾ã¾ã™ã™ã€‚ - 8. ã“ã‚Œã¯ã¨ã¦ã‚‚便利ãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚ã•ãレッスン 2 è¦ç´„ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 8. ã“ã‚Œã¯ã¨ã¦ã‚‚便利ãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚ã•ãレッスン 1.2 è¦ç´„ã¸é€²ã¿ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2 è¦ç´„ + レッスン 1.2 è¦ç´„ 1. カーソルä½ç½®ã‹ã‚‰æ¬¡ã®å˜èªžã¾ã§ã‚’削除ã™ã‚‹ã«ã¯ dw ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ @@ -368,7 +368,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— å–り消ã—ã®å–り消ã—: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.1: 貼り付ã‘コマンド + レッスン 1.3.1: 貼り付ã‘コマンド ** 最後ã«å‰Šé™¤ã•ã‚ŒãŸè¡Œã‚’カーソルã®å¾Œã«è²¼ã‚Šä»˜ã‘ã‚‹ã«ã¯ p をタイプã—ã¾ã™ã€‚ ** @@ -392,7 +392,7 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.2: ç½®ãæ›ãˆã‚³ãƒžãƒ³ãƒ‰ + レッスン 1.3.2: ç½®ãæ›ãˆã‚³ãƒžãƒ³ãƒ‰ ** カーソルã®ä¸‹ã®æ–‡å­—ã‚’ x ã«ç½®ãæ›ãˆã‚‹ã«ã¯ rx をタイプã—ã¾ã™ã€‚ ** @@ -408,14 +408,14 @@ NOTE: 冒険ã—ãŸã„人ã¯ã€ãƒŽãƒ¼ãƒžãƒ«ãƒ¢ãƒ¼ãƒ‰ã«ã¦ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ãªã— ---> ã“ã®åˆã‚’人力ã—ãŸæ™‚ã­ã€ãã®äººã¯å¹¾ã¤ã‹å•é•ã£ãŸã‚­ãƒ¼ã‚’押ã—ã‚‚ã—ãŸ! ---> ã“ã®è¡Œã‚’入力ã—ãŸæ™‚ã«ã€ãã®äººã¯å¹¾ã¤ã‹é–“é•ã£ãŸã‚­ãƒ¼ã‚’押ã—ã¾ã—ãŸ! - 5. ã•ãã€ãƒ¬ãƒƒã‚¹ãƒ³ 3.3 ã¸é€²ã¿ã¾ã—ょã†ã€‚ + 5. ã•ãã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.3.3 ã¸é€²ã¿ã¾ã—ょã†ã€‚ NOTE: 実際ã«è©¦ã—ã¾ã—ょã†ã€‚決ã—ã¦è¦šãˆã‚‹ã ã‘ã«ã¯ã—ãªã„ã“ã¨ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.3: 変更コマンド + レッスン 1.3.3: 変更コマンド ** å˜èªžã®æœ«å°¾ã¾ã§ã‚’変更ã™ã‚‹ã«ã¯ ce ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** @@ -438,7 +438,7 @@ cc ã¯åŒã˜ã“ã¨ã‚’行全体ã«å¯¾ã—ã¦è¡Œã„ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.4: c を使用ã—ãŸãã®ä»–ã®å¤‰æ›´ + レッスン 1.3.4: c を使用ã—ãŸãã®ä»–ã®å¤‰æ›´ ** 変更オペレータã¯ã€å‰Šé™¤ã¨åŒã˜æ§˜ã«ãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ã‚’使用ã—ã¾ã™ã€‚ ** @@ -461,7 +461,7 @@ cc ã¯åŒã˜ã“ã¨ã‚’行全体ã«å¯¾ã—ã¦è¡Œã„ã¾ã™ã€‚ NOTE: タイプ中ã®é–“é•ã„ã¯ãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã‚­ãƒ¼ã‚’使ã£ã¦ç›´ã™ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3 è¦ç´„ + レッスン 1.3 è¦ç´„ 1. æ—¢ã«å‰Šé™¤ã•ã‚ŒãŸãƒ†ã‚­ã‚¹ãƒˆã‚’å†é…ç½®ã™ã‚‹ã«ã¯ã€p をタイプã—ã¾ã™ã€‚ã“ã‚Œã¯å‰Šé™¤ã• @@ -484,7 +484,7 @@ NOTE: タイプ中ã®é–“é•ã„ã¯ãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã‚­ãƒ¼ã‚’使ã£ã¦ç›´ã™ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.1: ä½ç½®ã¨ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ± + レッスン 1.4.1: ä½ç½®ã¨ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ± ** ファイル内ã§ã®ä½ç½®ã¨ãƒ•ã‚¡ã‚¤ãƒ«ã®çŠ¶æ…‹ã‚’表示ã™ã‚‹ã«ã¯ CTRL-G をタイプã—ã¾ã™ã€‚ ファイル内ã®ã‚ã‚‹è¡Œã«ç§»å‹•ã™ã‚‹ã«ã¯ G をタイプã—ã¾ã™ã€‚ ** @@ -507,7 +507,7 @@ NOTE: ç”»é¢ã®å³ä¸‹éš…ã«ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ãŒè¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ã‹ã‚‚ 4. 自信ãŒæŒã¦ãŸã‚‰ã‚¹ãƒ†ãƒƒãƒ— 1 ã‹ã‚‰ 3 を実行ã—ã¾ã—ょã†ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.2: 検索コマンド + レッスン 1.4.2: 検索コマンド ** 語å¥ã‚’検索ã™ã‚‹ã«ã¯ / ã¨ã€å‰æ–¹æ¤œç´¢ã™ã‚‹èªžå¥ã‚’タイプã—ã¾ã™ã€‚ ** @@ -530,7 +530,7 @@ NOTE: 検索ãŒãƒ•ã‚¡ã‚¤ãƒ«ã®çµ‚ã‚ã‚Šã«é”ã™ã‚‹ã¨ã€ã‚ªãƒ—ション 'wrapsc å ´åˆã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®å…ˆé ­ã‹ã‚‰æ¤œç´¢ã‚’続行ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.3: 対応ã™ã‚‹æ‹¬å¼§ã‚’検索 + レッスン 1.4.3: 対応ã™ã‚‹æ‹¬å¼§ã‚’検索 ** 対応ã™ã‚‹ ),] ã‚„ } を検索ã™ã‚‹ã«ã¯ % をタイプã—ã¾ã™ã€‚ ** @@ -553,7 +553,7 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プログラムをデãƒãƒƒ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.4: é–“é•ã„を変更ã™ã‚‹æ–¹æ³• + レッスン 1.4.4: é–“é•ã„を変更ã™ã‚‹æ–¹æ³• ** 'old' ã‚’ 'new' ã«ç½®æ›ã™ã‚‹ã«ã¯ :s/old/new/g ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** @@ -576,7 +576,7 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プログラムをデãƒãƒƒ ãŒã‚‰å¤‰æ›´ã™ã‚‹ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4 è¦ç´„ + レッスン 1.4 è¦ç´„ 1. CTRL-G ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã§ã®ä½ç½®ã¨ãƒ•ã‚¡ã‚¤ãƒ«ã®è©³ç´°ã‚’表示ã—ã¾ã™ã€‚ @@ -599,7 +599,7 @@ NOTE: ã“ã®æ©Ÿèƒ½ã¯æ‹¬å¼§ãŒä¸€è‡´ã—ã¦ã„ãªã„プログラムをデãƒãƒƒ 'c' を加ãˆã‚‹ã¨ç½®æ›ã®åº¦ã«ç¢ºèªã‚’求ã‚る。 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.1: 外部コマンドを実行ã™ã‚‹æ–¹æ³• + レッスン 1.5.1: 外部コマンドを実行ã™ã‚‹æ–¹æ³• ** :! ã®å¾Œã«å®Ÿè¡Œã™ã‚‹å¤–部コマンドをタイプã—ã¾ã™ã€‚ ** @@ -622,7 +622,7 @@ NOTE: å…¨ã¦ã® : コマンド㯠を押ã—ã¦çµ‚了ã—ãªã‘ã‚Œã°ãª ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.2: ãã®ä»–ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸æ›¸ã込㿠+ レッスン 1.5.2: ãã®ä»–ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸æ›¸ã込㿠** ファイルã¸å¤‰æ›´ã‚’ä¿å­˜ã™ã‚‹ã«ã¯ :w ファイルå ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** @@ -645,7 +645,7 @@ NOTE: ã“ã“㧠Vim を終了ã—ã€ãƒ•ã‚¡ã‚¤ãƒ«å TEST ã¨å…±ã«èµ·å‹•ã™ã‚‹ã¨ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.3: é¸æŠžã—ãŸæ›¸ã込㿠+ レッスン 1.5.3: é¸æŠžã—ãŸæ›¸ã込㿠** ファイルã®ä¸€éƒ¨ã‚’ä¿å­˜ã™ã‚‹ã«ã¯ã€v モーション㨠:w FILENAME をタイプã—ã¾ã™ã€‚ ** @@ -669,21 +669,21 @@ NOTE: v を押ã™ã¨ã€Visual é¸æŠžãŒå§‹ã¾ã‚Šã¾ã™ã€‚カーソルを動㋠ã§ãã¾ã™ã€‚例ãˆã° d ã¯ãƒ†ã‚­ã‚¹ãƒˆã‚’削除ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.4: ファイルã®å–è¾¼ã¨åˆä½µ + レッスン 1.5.4: ファイルã®å–è¾¼ã¨åˆä½µ ** ファイルã®ä¸­èº«ã‚’挿入ã™ã‚‹ã«ã¯ :r ファイルå ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** 1. カーソルをã“ã®è¡Œã®ã™ã上ã«åˆã‚ã›ã¾ã™ã€‚ -NOTE: ステップ 2 ã®å®Ÿè¡Œå¾Œã€ãƒ¬ãƒƒã‚¹ãƒ³ 5.3 ã®ãƒ†ã‚­ã‚¹ãƒˆãŒç¾ã‚Œã¾ã™ã€‚下ã«ä¸‹ãŒã£ã¦ã“ +NOTE: ステップ 2 ã®å®Ÿè¡Œå¾Œã€ãƒ¬ãƒƒã‚¹ãƒ³ 1.5.3 ã®ãƒ†ã‚­ã‚¹ãƒˆãŒç¾ã‚Œã¾ã™ã€‚下ã«ä¸‹ãŒã£ã¦ã“ ã®ãƒ¬ãƒƒã‚¹ãƒ³ã«ç§»å‹•ã—ã¾ã—ょã†ã€‚ 2. ã§ã¯ TEST ã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ :r TEST ã¨ã„ã†ã‚³ãƒžãƒ³ãƒ‰ã§èª­ã¿è¾¼ã¿ã¾ã—ょã†ã€‚ ã“ã“ã§ã„ㆠTEST ã¯ä½¿ã†ãƒ•ã‚¡ã‚¤ãƒ«ã®åå‰ã®ã“ã¨ã§ã™ã€‚ 読ã¿è¾¼ã¾ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã‚«ãƒ¼ã‚½ãƒ«è¡Œã®ä¸‹ã«ã‚ã‚Šã¾ã™ã€‚ - 3. å–り込んã ãƒ•ã‚¡ã‚¤ãƒ«ã‚’確èªã—ã¦ã¿ã¾ã—ょã†ã€‚カーソルを戻ã™ã¨ã€ãƒ¬ãƒƒã‚¹ãƒ³5.3 ã® + 3. å–り込んã ãƒ•ã‚¡ã‚¤ãƒ«ã‚’確èªã—ã¦ã¿ã¾ã—ょã†ã€‚カーソルを戻ã™ã¨ã€ãƒ¬ãƒƒã‚¹ãƒ³1.5.3 㮠オリジナルã¨ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚ˆã‚‹ã‚‚ã®ã®2ã¤ãŒã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚ NOTE: 外部コマンドã®å‡ºåŠ›ã‚’読ã¿è¾¼ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ã€‚例ãˆã°ã€ @@ -691,7 +691,7 @@ NOTE: 外部コマンドã®å‡ºåŠ›ã‚’読ã¿è¾¼ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ã€‚例㈠~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5 è¦ç´„ + レッスン 1.5 è¦ç´„ 1. :!command ã«ã‚ˆã£ã¦ 外部コマンドを実行ã™ã‚‹ã€‚ @@ -714,7 +714,7 @@ NOTE: 外部コマンドã®å‡ºåŠ›ã‚’読ã¿è¾¼ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ã€‚例㈠~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.1: オープンコマンド + レッスン 1.6.1: オープンコマンド ** o をタイプã™ã‚‹ã¨ã€ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®è¡ŒãŒé–‹ãã€æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™ã€‚ ** @@ -737,7 +737,7 @@ NOTE: 外部コマンドã®å‡ºåŠ›ã‚’読ã¿è¾¼ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ã€‚例㈠~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.2: 追加コマンド + レッスン 1.6.2: 追加コマンド ** カーソルã®æ¬¡ã®ä½ç½®ã‹ã‚‰ãƒ†ã‚­ã‚¹ãƒˆã‚’追加ã™ã‚‹ã«ã¯ a ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ** @@ -760,7 +760,7 @@ NOTE: a, i 㨠A ã¯åŒã˜æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã¸ç§»ã‚Šã¾ã™ãŒã€æ–‡å­—ãŒæŒ¿å…¥ã• ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.3: ãã®ä»–ã®ç½®æ›æ–¹æ³• + レッスン 1.6.3: ãã®ä»–ã®ç½®æ›æ–¹æ³• ** 1文字以上を置ãæ›ãˆã‚‹ã«ã¯å¤§æ–‡å­—ã® R ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã—ょã†ã€‚ ** @@ -782,7 +782,7 @@ NOTE: ç½®æ›ãƒ¢ãƒ¼ãƒ‰ã¯æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ä¼¼ã¦ã„ã¾ã™ãŒã€å…¨ã¦ã®ã‚¿ã‚¤ を削除ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.4: テキストã®ã‚³ãƒ”ーã¨ãƒšãƒ¼ã‚¹ãƒˆ + レッスン 1.6.4: テキストã®ã‚³ãƒ”ーã¨ãƒšãƒ¼ã‚¹ãƒˆ ** テキストã®ã‚³ãƒ”ーã«ã¯ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ y ã‚’ã€ãƒšãƒ¼ã‚¹ãƒˆã«ã¯ p を使ã„ã¾ã™ã€‚ ** @@ -806,7 +806,7 @@ NOTE: ç½®æ›ãƒ¢ãƒ¼ãƒ‰ã¯æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ä¼¼ã¦ã„ã¾ã™ãŒã€å…¨ã¦ã®ã‚¿ã‚¤ NOTE: y をオペレータã¨ã—ã¦ä½¿ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚yw ã¯å˜èªžã‚’1㤠yank ã—ã¾ã™ã€‚ yy ã¯è¡Œã‚’1㤠yank ã—ã€p ã§ãã®è¡Œã‚’ put ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.5: オプションã®è¨­å®š + レッスン 1.6.5: オプションã®è¨­å®š ** 検索や置æ›ã®éš›ã«å¤§æ–‡å­—/å°æ–‡å­—を無視ã™ã‚‹ã«ã¯ã€ã‚ªãƒ—ションを設定ã—ã¾ã™ã€‚ ** @@ -829,7 +829,7 @@ NOTE: マッãƒã®å¼·èª¿è¡¨ç¤ºã‚’ã‚„ã‚ã‚‹ã«ã¯æ¬¡ã®æ§˜ã«å…¥åŠ›ã—ã¾ã™: :n NOTE: 1ã¤ã®æ¤œç´¢ã‚³ãƒžãƒ³ãƒ‰ã ã‘大文字å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã‚„ã‚ãŸã„ãªã‚‰ã°ã€èªžå¥å†…㧠\c を使用ã—ã¾ã™: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6 è¦ç´„ + レッスン 1.6 è¦ç´„ 1. o をタイプã™ã‚‹ã¨ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸‹ã®è¡Œã‚’é–‹ã‘ã¦ã€ãã“ã§æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ãªã‚‹ã€‚ O (大文字) をタイプã™ã‚‹ã¨ã‚«ãƒ¼ã‚½ãƒ«ã®ä¸Šã®è¡Œã§æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ãªã‚‹ã€‚ @@ -852,7 +852,7 @@ NOTE: 1ã¤ã®æ¤œç´¢ã‚³ãƒžãƒ³ãƒ‰ã ã‘大文字å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã‚„ã‚ãŸã„ 7. オプションを無効ã«ã™ã‚‹ã«ã¯ "no" を付与ã™ã‚‹: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 7.1: オンラインヘルプコマンド + レッスン 1.7.1: オンラインヘルプコマンド ** オンラインヘルプを使用ã—ã¾ã—ょㆠ** @@ -875,7 +875,7 @@ NOTE: 1ã¤ã®æ¤œç´¢ã‚³ãƒžãƒ³ãƒ‰ã ã‘大文字å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã‚„ã‚ãŸã„ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 7.2: 起動スクリプトã®ä½œæˆ + レッスン 1.7.2: 起動スクリプトã®ä½œæˆ ** Vim ã®ç‰¹å¾´ã‚’発æ®ã™ã‚‹ ** @@ -898,7 +898,7 @@ NOTE: 1ã¤ã®æ¤œç´¢ã‚³ãƒžãƒ³ãƒ‰ã ã‘大文字å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã‚„ã‚ãŸã„ より多ãã®æƒ…報を得るã«ã¯ :help vimrc-intro ã¨ã‚¿ã‚¤ãƒ—ã—ã¾ã™ã€‚ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 7.3: 補完 + レッスン 1.7.3: 補完 ** CTRL-D 㨠ã§ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚’補完ã™ã‚‹ ** @@ -921,7 +921,7 @@ NOTE: 補完ã¯å¤šãã®ã‚³ãƒžãƒ³ãƒ‰ã§å‹•ä½œã—ã¾ã™ã€‚ãã—㦠CTRL-D 㨠もã—ã㯠を押ã™ã€‚ diff --git a/runtime/tutor/tutor.ko.utf-8 b/runtime/tutor/tutor1.ko similarity index 92% rename from runtime/tutor/tutor.ko.utf-8 rename to runtime/tutor/tutor1.ko index 993c43de8c..60f1f488dc 100644 --- a/runtime/tutor/tutor.ko.utf-8 +++ b/runtime/tutor/tutor1.ko @@ -18,9 +18,9 @@ 것만으로는, ëª…ë ¹ì„ ìžŠì–´ë²„ë¦¬ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. ìž ì´ì œ, Caps Lock(Shift-Lock) 키가 눌려있지 ì•Šì€ì§€ 확ì¸í•´ë³´ì‹œê³ , j 키를 - 충분히 눌러서 Lesson 1.1ì´ í™”ë©´ì— ê°€ë“ ì°¨ë„ë¡ ì›€ì§ì—¬ë´…시다. + 충분히 눌러서 Lesson 1.1.1ì´ í™”ë©´ì— ê°€ë“ ì°¨ë„ë¡ ì›€ì§ì—¬ë´…시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: 커서 움ì§ì´ê¸° + Lesson 1.1.1: 커서 움ì§ì´ê¸° ** 커서를 움ì§ì´ë ¤ë©´, í‘œì‹œëœ ëŒ€ë¡œ h,j,k,l 키를 누르십시오. ** ^ @@ -34,7 +34,7 @@ 2. 아래 방향키 (j)를 ë°˜ë³µìž…ë ¥ì´ ë  ë•Œê¹Œì§€ 누르고 계십시오. ì´ì œ ë‹¤ìŒ lesson으로 가는 ë°©ë²•ì„ ì•Œê²Œ ë˜ì—ˆìŠµë‹ˆë‹¤. - 3. 아래 방향키를 ì´ìš©í•˜ì—¬, Lesson 1.2 ë¡œ 가십시오. + 3. 아래 방향키를 ì´ìš©í•˜ì—¬, Lesson 1.1.2 ë¡œ 가십시오. 참고: ì›í•˜ì§€ 않는 무언가가 ìž…ë ¥ì´ ë˜ì—ˆë‹¤ë©´, 를 눌러서, 명령 모드로 ëŒì•„가십시오. ê·¸ í›„ì— ì›í•˜ëŠ” ëª…ë ¹ì„ ë‹¤ì‹œ 입력하십시오. @@ -43,7 +43,7 @@ 훨씬 빠르게 ì´ë™í•  수 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤. ì •ë§ìš”! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: ë¹”ì„ ì‹œìž‘í•˜ê³  ë내기 + Lesson 1.1.2: ë¹”ì„ ì‹œìž‘í•˜ê³  ë내기 !! 주ì˜: 아래 있는 단계를 실행하기 ì „ì—, ì´ lesson 전체를 ì½ìœ¼ì‹­ì‹œì˜¤!! @@ -68,9 +68,9 @@ 주ì˜: :q! 는 ë°”ë€ ë‚´ìš©ì„ ì €ìž¥í•˜ì§€ 않습니다. ì´ í›„ lessonì—ì„œ 어떻게 편집 ë‚´ìš©ì„ ì €ìž¥í•˜ëŠ”ì§€ 배울 수 있습니다. - 5. ê·¸ 후 커서를 아래로 움ì§ì—¬ Lesson 1.3 으로 가십시오. + 5. ê·¸ 후 커서를 아래로 움ì§ì—¬ Lesson 1.1.3 으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: í…스트 편집 - 지우기 + Lesson 1.1.3: í…스트 편집 - 지우기 ** 명령 모드ì—ì„œ x 를 누르면 커서가 위치한 ê³³ì˜ ê¸€ìžë¥¼ 지울 수 있습니다. ** @@ -85,7 +85,7 @@ ---> The ccow jumpedd ovverr thhe mooon. - 5. ë¬¸ìž¥ì´ ì •í™•í•´ì¡Œë‹¤ë©´, Lesson 1.4ë¡œ 가십시오. + 5. ë¬¸ìž¥ì´ ì •í™•í•´ì¡Œë‹¤ë©´, Lesson 1.1.4ë¡œ 가십시오. 주ì˜: ì´ ê¸¸ìž¡ì´ë¥¼ ë³´ë©´ì„œ 외우려고 하지ë§ê³ , ì§ì ‘ 사용해보면서 ìµížˆê¸¸ ë°”ëžë‹ˆë‹¤. @@ -93,7 +93,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: í…스트 편집 - 삽입 (INSERTION) + Lesson 1.1.4: í…스트 편집 - 삽입 (INSERTION) ** 명령 모드ì—ì„œ i 를 누르면 í…스트를 입력할 수 있습니다. ** @@ -111,12 +111,12 @@ ---> There is text misng this . ---> There is some text missing from this line. - 5. í…스트를 삽입하는 ë°ì— ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.5ë¡œ 가십시오. + 5. í…스트를 삽입하는 ë°ì— ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.1.5ë¡œ 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: íƒìŠ¤íŠ¸ 편집 - 추가 (APPENDING) + Lesson 1.1.5: íƒìŠ¤íŠ¸ 편집 - 추가 (APPENDING) ** A 를 입력해 í…스트를 추가할 수 있습니다. ** @@ -136,16 +136,16 @@ ---> There is also some text miss There is also some text missing here. - 5. í…스트를 추가하는 ë° ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.6으로 가십시오. + 5. í…스트를 추가하는 ë° ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.1.6으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: íŒŒì¼ íŽ¸ì§‘ + Lesson 1.1.6: íŒŒì¼ íŽ¸ì§‘ ** :wq 를 ì´ìš©í•˜ì—¬ 파ì¼ì„ 저장하고 빠져나갈 수 있습니다. ** !! 주ì˜: 아래 있는 단계를 실행하기 ì „ì—, ì´ lesson 전체를 ì½ìœ¼ì‹­ì‹œì˜¤!! - 1. lesson 1.2ì—ì„œ ë°°ì› ë˜ ê²ƒì²˜ëŸ¼ :q!ë¡œ 편집기를 나갈 수 있습니다. + 1. lesson 1.1.2ì—ì„œ ë°°ì› ë˜ ê²ƒì²˜ëŸ¼ :q!ë¡œ 편집기를 나갈 수 있습니다. 만약, 다른 터미ë„ì— ì ‘ê·¼ 가능하다면, ì•„ëž˜ì˜ ë‹¨ê³„ë¥¼ 다른 터미ë„ì—ì„œ 해봅니다. 2. 쉘 í”„ë¡¬í”„íŠ¸ì— ë‹¤ìŒê³¼ ê°™ì´ ìž…ë ¥í•©ë‹ˆë‹¤: vim tutor @@ -161,7 +161,7 @@ 6. 위 모든 단계를 다 ì½ê³  ì´í•´í•œ í›„ì— ì§ì ‘ 해보세요. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 1 요약 + LESSON 1.1 요약 1. 커서를 움ì§ì¼ ë•Œì—는 화살표 키나 hjkl 키를 ì´ìš©í•©ë‹ˆë‹¤. @@ -181,10 +181,10 @@ 참고: 는 명령 모드로 ëŒì•„가는 ë° ì“°ë©°, ì›ì¹˜ 않는 명령ì´ë‚˜ 완전히 ìž…ë ¥ë˜ì§€ ì•Šì€ ëª…ë ¹ì„ ì·¨ì†Œí•˜ëŠ” ë°ì—ë„ ì”니다. -그럼 Lesson 2를 시작합시다. +그럼 Lesson 1.2를 시작합시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: ì‚­ì œ(DELETION) 명령 + Lesson 1.2.1: ì‚­ì œ(DELETION) 명령 ** í•œ 단어를 ë까지 지우려면 dw ë¼ê³  치면 ë©ë‹ˆë‹¤. ** @@ -202,11 +202,11 @@ ---> There are a some words fun that don't belong paper in this sentence. - 5. 3, 4번 ê³¼ì •ì„ ë‹¤ì‹œ 하여 ë¬¸ìž¥ì„ ì •í™•í•˜ê²Œ 만든 ë’¤ Lesson 2.2ë¡œ 가십시오. + 5. 3, 4번 ê³¼ì •ì„ ë‹¤ì‹œ 하여 ë¬¸ìž¥ì„ ì •í™•í•˜ê²Œ 만든 ë’¤ Lesson 1.2.2ë¡œ 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: 다른 ì‚­ì œ 명령 + Lesson 1.2.2: 다른 ì‚­ì œ 명령 ** d$ ë¼ê³  치면 ê·¸ 줄 ë까지 지워집니다. ** @@ -221,14 +221,14 @@ ---> Somebody typed the end of this line twice. end of this line twice. - 5. ì–´ë–¤ ì¼ì´ ì¼ì–´ë‚¬ëŠ”지 ì´í•´í•˜ê¸° 위해 Lesson 2.3 으로 가십시오. + 5. ì–´ë–¤ ì¼ì´ ì¼ì–´ë‚¬ëŠ”지 ì´í•´í•˜ê¸° 위해 Lesson 1.2.3 으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: 명령과 ì ìš© 대ìƒì— 대해 + Lesson 1.2.3: 명령과 ì ìš© 대ìƒì— 대해 ì‚­ì œ 명령 dì˜ í˜•ì‹ì€ 다ìŒê³¼ 같습니다. @@ -250,7 +250,7 @@ 위ì—ì„œ ì´ì•¼ê¸°í•œ 대ìƒì˜ 목ë¡ì— ë”°ë¼ ì»¤ì„œê°€ 움ì§ì´ê²Œ ë©ë‹ˆë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: 대ìƒì— 반복 ì ìš©í•˜ê¸° + Lesson 1.2.4: 대ìƒì— 반복 ì ìš©í•˜ê¸° ** ëŒ€ìƒ ì´ì „ì— ìˆ«ìžë¥¼ 넣어주면 ê·¸ ë§Œí¼ ë°˜ë³µ ë©ë‹ˆë‹¤. ** @@ -267,10 +267,10 @@ ---> This is just a line with words you can move around in. - 6. Lesson 2.5ë¡œ 가십시오. + 6. Lesson 1.2.5ë¡œ 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: ì‚­ì œì— ë°˜ë³µ ì ìš©í•˜ê¸° + Lesson 1.2.5: ì‚­ì œì— ë°˜ë³µ ì ìš©í•˜ê¸° ** 명령과 숫ìžë¥¼ 함께 사용하면 ê·¸ë§Œí¼ ë°˜ë³µ 수행 ë©ë‹ˆë‹¤. ** @@ -287,7 +287,7 @@ ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: 줄 ì „ì²´ 조작하기 + Lesson 1.2.6: 줄 ì „ì²´ 조작하기 @@ -311,7 +311,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: 취소(UNDO) 명령 + Lesson 1.2.7: 취소(UNDO) 명령 ** u 를 누르면 마지막 ëª…ë ¹ì´ ì·¨ì†Œë˜ë©°, U 는 줄 전체를 수정합니다. ** @@ -327,13 +327,13 @@ ---> Fiix the errors oon thhis line and reeplace them witth undo. - 8. ì´ ëª…ë ¹ì€ ë§¤ìš° 유용합니다. 그럼 Lesson 2 요약으로 넘어가ë„ë¡ í•©ì‹œë‹¤. + 8. ì´ ëª…ë ¹ì€ ë§¤ìš° 유용합니다. 그럼 Lesson 1.2 요약으로 넘어가ë„ë¡ í•©ì‹œë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 2 요약 + LESSON 1.2 요약 1. 커서가 위치한 곳부터 ë‹¨ì–´ì˜ ë까지 지우려면: dw @@ -357,7 +357,7 @@ 취소한 ê²ƒì„ ë‹¤ì‹œ 실행하려면: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: 붙ì´ê¸°(PUT) 명령 + Lesson 1.3.1: 붙ì´ê¸°(PUT) 명령 ** p 를 입력하여 마지막으로 지운 ë‚´ìš©ì„ ì»¤ì„œ ë’¤ì— ë¶™ìž…ë‹ˆë‹¤. ** @@ -380,7 +380,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: 치환(REPLACE) 명령 + Lesson 1.3.2: 치환(REPLACE) 명령 ** 커서 ì•„ëž˜ì˜ ê¸€ìž í•˜ë‚˜ë¥¼ 바꾸려면, r ì„ ëˆ„ë¥¸ 후 바꿀 글ìžë¥¼ 입력합니다. ** @@ -396,14 +396,14 @@ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Lesson 3.2 ë¡œ ì´ë™í•©ì‹œë‹¤. + 5. Lesson 1.3.2 ë¡œ ì´ë™í•©ì‹œë‹¤. 주ì˜: 외우지 ë§ê³ , ì§ì ‘ í•´ë³´ë©´ì„œ ìµí˜€ì•¼ 한다는 ê²ƒì„ ìžŠì§€ 마십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: 변환(CHANGE) 명령 + Lesson 1.3.3: 변환(CHANGE) 명령 ** í•œ ë‹¨ì–´ì˜ ì „ì²´ë¥¼ 바꾸려면, ce 를 치십시오. ** @@ -427,7 +427,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: c 를 ì´ìš©í•œ 다른 변환 명령 + Lesson 1.3.4: c 를 ì´ìš©í•œ 다른 변환 명령 ** 변환 ëª…ë ¹ì€ ì‚­ì œí•  ë•Œ ì´ìš©í•œ 대ìƒì— 대해 ì ìš©í•  수 있습니다. ** @@ -451,7 +451,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 참고: 입력하는 ë™ì•ˆì€ 백스페ì´ìŠ¤ë¥¼ ì´ìš©í•  수 있습니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 3 요약 + LESSON 1.3 요약 1. ì´ë¯¸ 지운 ë‚´ìš©ì„ ë˜ëŒë¦¬ë ¤ë©´, p 를 누르십시오. ì´ ëª…ë ¹ì€ ì»¤ì„œ *다ìŒì—* @@ -474,7 +474,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: 위치와 파ì¼ì˜ ìƒíƒœ + Lesson 1.4.1: 위치와 파ì¼ì˜ ìƒíƒœ ** CTRL-G 를 누르면 íŒŒì¼ ë‚´ì—ì„œì˜ í˜„ìž¬ 위치와 파ì¼ì˜ ìƒíƒœë¥¼ ë³¼ 수 있습니다. @@ -501,7 +501,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: 찾기 명령 + Lesson 1.4.2: 찾기 명령 ** / 를 누른 후 검색할 문구를 입력하십시오. ** @@ -525,7 +525,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: ê´„í˜¸ì˜ ì§ ì°¾ê¸° + Lesson 1.4.3: ê´„í˜¸ì˜ ì§ ì°¾ê¸° ** % 를 눌러서 ), ], } ì˜ ì§ì„ 찾습니다. ** @@ -547,7 +547,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: 치환(SUBTITUTE) 명령 + Lesson 1.4.4: 치환(SUBTITUTE) 명령 ** :s/old/new/g 하면 'old' 를 'new' ë¡œ 치환(SUBTITUTE)합니다. ** @@ -569,7 +569,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 할지 프롬프트로 명령합니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 4 요약 + LESSON 1.4 요약 1. CTRL-G 파ì¼ì˜ ìƒíƒœì™€ íŒŒì¼ ë‚´ì—ì„œì˜ í˜„ìž¬ 위치를 표시합니다. G 파ì¼ì˜ ë으로 ì´ë™í•©ë‹ˆë‹¤. @@ -593,7 +593,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: 외부 명령 실행하는 방법 + Lesson 1.5.1: 외부 명령 실행하는 방법 ** :! ì„ ìž…ë ¥í•œ 후 실행하려는 ëª…ë ¹ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤. ** @@ -615,7 +615,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: 보다 ìžì„¸í•œ íŒŒì¼ ì €ìž¥ + Lesson 1.5.2: 보다 ìžì„¸í•œ íŒŒì¼ ì €ìž¥ ** ìˆ˜ì •ëœ ë‚´ìš©ì„ íŒŒì¼ë¡œ 저장하려면, :w FILENAME 하십시오. ** @@ -639,7 +639,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: ì„ íƒì ìœ¼ë¡œ 저장하는 명령 + Lesson 1.5.3: ì„ íƒì ìœ¼ë¡œ 저장하는 명령 ** 파ì¼ì˜ ì¼ë¶€ë¥¼ 저장하려면, v ëŒ€ìƒ :w FILENAME ì„ ìž…ë ¥í•©ë‹ˆë‹¤. ** @@ -660,27 +660,27 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 삭제할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: íŒŒì¼ ì½ì–´ë“¤ì´ê¸°, 합치기 + Lesson 1.5.4: íŒŒì¼ ì½ì–´ë“¤ì´ê¸°, 합치기 ** ì–´ë–¤ 파ì¼ì˜ ë‚´ìš©ì„ ì‚½ìž…í•˜ë ¤ë©´, :r FILENAME 하십시오 ** 1. 커서를 ì´ ë¼ì¸ 바로 위로 옮기십시오. -주ì˜: 3번째 단계를 실행하면, Lesson 5.3 ì„ ë³´ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. 그렇게 ë˜ë©´ +주ì˜: 3번째 단계를 실행하면, Lesson 1.5.3 ì„ ë³´ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. 그렇게 ë˜ë©´ ì´ lesson으로 다시 내려오십시오. 2. ì´ì œ TEST 파ì¼ì„ ì½ì–´ë“¤ìž…시다. :r TEST ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤. TEST 는 파ì¼ì˜ ì´ë¦„입니다. ì½ì–´ë“¤ì¸ 파ì¼ì€ 커서가 위치한 문장 아래부터 놓ì´ê²Œ ë©ë‹ˆë‹¤. 3. 파ì¼ì´ ì½ì–´ë“¤ì—¬ì§„ ê²ƒì„ í™•ì¸í•˜ê¸° 위해, 뒤로 ì´ë™í•´ì„œ 기존 버전과 파ì¼ì—ì„œ - ì½ì–´ë“¤ì¸ 버전, ì´ë ‡ê²Œ Lesson 5.3 ì´ ë‘번 반복ë˜ì—ˆìŒì„ 확ì¸í•˜ì‹­ì‹œì˜¤. + ì½ì–´ë“¤ì¸ 버전, ì´ë ‡ê²Œ Lesson 1.5.3 ì´ ë‘번 반복ë˜ì—ˆìŒì„ 확ì¸í•˜ì‹­ì‹œì˜¤. 참고: 외부 ëª…ë ¹ì–´ì˜ ê²°ê³¼ê°’ë„ ì½ì„ 수 있습니다. 예를 들어, :r !ls 는 ls ëª…ë ¹ì–´ì— ëŒ€í•œ ê²°ê³¼ê°’ì„ ì½ì–´ 커서 바로 ì•„ëž˜ì— í•©ì¹©ë‹ˆë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 5 요약 + LESSON 1.5 요약 1. :!command 를 ì´ìš©í•˜ì—¬ 외부 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤. @@ -702,7 +702,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: 새 줄 열기(OPEN) 명령 + Lesson 1.6.1: 새 줄 열기(OPEN) 명령 ** o 를 누르면 커서 ì•„ëž˜ì— ì¤„ì„ ë§Œë“¤ê³  편집 모드가 ë©ë‹ˆë‹¤. ** @@ -722,7 +722,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: 추가(APPEND) 명령 + Lesson 1.6.2: 추가(APPEND) 명령 ** a 를 누르면 커서 *다ìŒì—* ê¸€ì„ ìž…ë ¥í•  수 있습니다. ** @@ -751,7 +751,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 참고: a, i 그리고 A 는 í…스트가 ìž…ë ¥ë˜ëŠ” 위치 외ì—는 편집 모드와 완전히 같다는 ê²ƒì„ ìœ ë…하십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: 치환(REPLACE) ì˜ ë‹¤ë¥¸ 버전 + Lesson 1.6.3: 치환(REPLACE) ì˜ ë‹¤ë¥¸ 버전 ** ëŒ€ë¬¸ìž R ì„ ìž…ë ¥í•˜ë©´ 하나 ì´ìƒì˜ 글ìžë¥¼ 바꿀 수 있습니다. ** @@ -770,7 +770,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 주ì˜: 치환 모드는 편집 모드와 비슷합니다. 하지만 ìž…ë ¥ëœ ë¬¸ìžë“¤ì´ ì›ëž˜ 문ìžë“¤ì„ 삭제하는 ì ì´ 다릅니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: ë¬¸ìž ë³µì‚¬ 붙여넣기(COPY AND PASTE) + Lesson 1.6.4: ë¬¸ìž ë³µì‚¬ 붙여넣기(COPY AND PASTE) ** y 를 ì´ìš©í•´ 복사하고 p ë¡œ 붙여 넣습니다. ** @@ -794,7 +794,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 참고: y ì—­ì‹œ 명령어로 사용 가능합니다. 예를 들어, yw 는 í•œ 단어를 복사합니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: 옵션 설정(SET) + Lesson 1.6.5: 옵션 설정(SET) ** 찾기나 바꾸기ì—ì„œ ëŒ€ì†Œë¬¸ìž êµ¬ë¶„ì„ ì—†ì• ê¸° 위해 ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤ ** @@ -821,7 +821,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 : /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 6 요약 + LESSON 1.6 요약 1. o 를 입력하면 커서 *아래ì—* í•œ ì¤„ì´ ì—´ë¦¬ë©°, 커서는 편집 모드로 @@ -846,7 +846,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 7. ì•žì— "no"를 붙여 ì˜µì…˜ì„ ëŒ ìˆ˜ 있습니다: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7.1: 온ë¼ì¸ ë„ì›€ë§ ëª…ë ¹ + LESSON 1.7.1: 온ë¼ì¸ ë„ì›€ë§ ëª…ë ¹ ** 온ë¼ì¸ ë„ì›€ë§ ì‹œìŠ¤í…œ 사용하기 ** @@ -870,7 +870,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7.2: 시작 스í¬ë¦½íŠ¸ 만들기 + LESSON 1.7.2: 시작 스í¬ë¦½íŠ¸ 만들기 ** ë¹”ì˜ ê¸°ëŠ¥ 켜기 ** @@ -892,7 +892,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ë” ìžì„¸í•œ ë‚´ìš©ì€ :help vimrc-intro를 참고 하세요. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: 명령어 완성하기 + Lesson 1.7.3: 명령어 완성하기 ** CTRL-D 와 ì´ìš©í•˜ì—¬ 명령어를 완성할 수 있습니다.** @@ -915,7 +915,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 특히, :help ì—ì„œ 유용할 것입니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 요약 + Lesson 1.7 요약 1. ë„움ë§ì„ 열기 위해 :help í˜¹ì€ í˜¹ì€ ë¥¼ 누릅니다. diff --git a/runtime/tutor/tutor.ko.euc b/runtime/tutor/tutor1.ko.euc similarity index 91% rename from runtime/tutor/tutor.ko.euc rename to runtime/tutor/tutor1.ko.euc index b93bb3be3c..6e06251196 100644 --- a/runtime/tutor/tutor.ko.euc +++ b/runtime/tutor/tutor1.ko.euc @@ -18,9 +18,9 @@ °Í¸¸À¸·Î´Â, ¸í·ÉÀ» Àؾî¹ö¸®°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÚ ÀÌÁ¦, Caps Lock(Shift-Lock) Å°°¡ ´­·ÁÀÖÁö ¾ÊÀºÁö È®ÀÎÇغ¸½Ã°í, j Å°¸¦ - ÃæºÐÈ÷ ´­·¯¼­ Lesson 1.1ÀÌ È­¸é¿¡ °¡µæ Â÷µµ·Ï ¿òÁ÷¿©º¾½Ã´Ù. + ÃæºÐÈ÷ ´­·¯¼­ Lesson 1.1.1ÀÌ È­¸é¿¡ °¡µæ Â÷µµ·Ï ¿òÁ÷¿©º¾½Ã´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: Ä¿¼­ ¿òÁ÷À̱â + Lesson 1.1.1: Ä¿¼­ ¿òÁ÷À̱â ** Ä¿¼­¸¦ ¿òÁ÷ÀÌ·Á¸é, Ç¥½ÃµÈ ´ë·Î h,j,k,l Å°¸¦ ´©¸£½Ê½Ã¿À. ** ^ @@ -34,7 +34,7 @@ 2. ¾Æ·¡ ¹æÇâÅ° (j)¸¦ ¹Ýº¹ÀÔ·ÂÀÌ µÉ ¶§±îÁö ´©¸£°í °è½Ê½Ã¿À. ÀÌÁ¦ ´ÙÀ½ lessonÀ¸·Î °¡´Â ¹æ¹ýÀ» ¾Ë°Ô µÇ¾ú½À´Ï´Ù. - 3. ¾Æ·¡ ¹æÇâÅ°¸¦ ÀÌ¿ëÇÏ¿©, Lesson 1.2 ·Î °¡½Ê½Ã¿À. + 3. ¾Æ·¡ ¹æÇâÅ°¸¦ ÀÌ¿ëÇÏ¿©, Lesson 1.1.2 ·Î °¡½Ê½Ã¿À. Âü°í: ¿øÇÏÁö ¾Ê´Â ¹«¾ð°¡°¡ ÀÔ·ÂÀÌ µÇ¾ú´Ù¸é, ¸¦ ´­·¯¼­, ¸í·É ¸ðµå·Î µ¹¾Æ°¡½Ê½Ã¿À. ±× ÈÄ¿¡ ¿øÇÏ´Â ¸í·ÉÀ» ´Ù½Ã ÀÔ·ÂÇϽʽÿÀ. @@ -43,7 +43,7 @@ ÈξÀ ºü¸£°Ô À̵¿ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. Á¤¸»¿ä! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: ºöÀ» ½ÃÀÛÇÏ°í ³¡³»±â + Lesson 1.1.2: ºöÀ» ½ÃÀÛÇÏ°í ³¡³»±â !! ÁÖÀÇ: ¾Æ·¡ ÀÖ´Â ´Ü°è¸¦ ½ÇÇàÇϱâ Àü¿¡, ÀÌ lesson Àüü¸¦ ÀÐÀ¸½Ê½Ã¿À!! @@ -68,9 +68,9 @@ ÁÖÀÇ: :q! ´Â ¹Ù²ï ³»¿ëÀ» ÀúÀåÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÈÄ lesson¿¡¼­ ¾î¶»°Ô ÆíÁý ³»¿ëÀ» ÀúÀåÇÏ´ÂÁö ¹è¿ï ¼ö ÀÖ½À´Ï´Ù. - 5. ±× ÈÄ Ä¿¼­¸¦ ¾Æ·¡·Î ¿òÁ÷¿© Lesson 1.3 À¸·Î °¡½Ê½Ã¿À. + 5. ±× ÈÄ Ä¿¼­¸¦ ¾Æ·¡·Î ¿òÁ÷¿© Lesson 1.1.3 À¸·Î °¡½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: ÅؽºÆ® ÆíÁý - Áö¿ì±â + Lesson 1.1.3: ÅؽºÆ® ÆíÁý - Áö¿ì±â ** ¸í·É ¸ðµå¿¡¼­ x ¸¦ ´©¸£¸é Ä¿¼­°¡ À§Ä¡ÇÑ °÷ÀÇ ±ÛÀÚ¸¦ Áö¿ï ¼ö ÀÖ½À´Ï´Ù. ** @@ -85,7 +85,7 @@ ---> The ccow jumpedd ovverr thhe mooon. - 5. ¹®ÀåÀÌ Á¤È®ÇØÁ³´Ù¸é, Lesson 1.4·Î °¡½Ê½Ã¿À. + 5. ¹®ÀåÀÌ Á¤È®ÇØÁ³´Ù¸é, Lesson 1.1.4·Î °¡½Ê½Ã¿À. ÁÖÀÇ: ÀÌ ±æÀâÀ̸¦ º¸¸é¼­ ¿Ü¿ì·Á°í ÇÏÁö¸»°í, Á÷Á¢ »ç¿ëÇغ¸¸é¼­ ÀÍÈ÷±æ ¹Ù¶ø´Ï´Ù. @@ -93,7 +93,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: ÅؽºÆ® ÆíÁý - »ðÀÔ (INSERTION) + Lesson 1.1.4: ÅؽºÆ® ÆíÁý - »ðÀÔ (INSERTION) ** ¸í·É ¸ðµå¿¡¼­ i ¸¦ ´©¸£¸é ÅؽºÆ®¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ** @@ -111,12 +111,12 @@ ---> There is text misng this . ---> There is some text missing from this line. - 5. ÅؽºÆ®¸¦ »ðÀÔÇÏ´Â µ¥¿¡ Àͼ÷ÇØÁ³´Ù¸é, Lesson 1.5·Î °¡½Ê½Ã¿À. + 5. ÅؽºÆ®¸¦ »ðÀÔÇÏ´Â µ¥¿¡ Àͼ÷ÇØÁ³´Ù¸é, Lesson 1.1.5·Î °¡½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: ÅýºÆ® ÆíÁý - Ãß°¡ (APPENDING) + Lesson 1.1.5: ÅýºÆ® ÆíÁý - Ãß°¡ (APPENDING) ** A ¸¦ ÀÔ·ÂÇØ ÅؽºÆ®¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ** @@ -136,16 +136,16 @@ ---> There is also some text miss There is also some text missing here. - 5. ÅؽºÆ®¸¦ Ãß°¡ÇÏ´Â µ¥ Àͼ÷ÇØÁ³´Ù¸é, Lesson 1.6À¸·Î °¡½Ê½Ã¿À. + 5. ÅؽºÆ®¸¦ Ãß°¡ÇÏ´Â µ¥ Àͼ÷ÇØÁ³´Ù¸é, Lesson 1.1.6À¸·Î °¡½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: ÆÄÀÏ ÆíÁý + Lesson 1.1.6: ÆÄÀÏ ÆíÁý ** :wq ¸¦ ÀÌ¿ëÇÏ¿© ÆÄÀÏÀ» ÀúÀåÇÏ°í ºüÁ®³ª°¥ ¼ö ÀÖ½À´Ï´Ù. ** !! ÁÖÀÇ: ¾Æ·¡ ÀÖ´Â ´Ü°è¸¦ ½ÇÇàÇϱâ Àü¿¡, ÀÌ lesson Àüü¸¦ ÀÐÀ¸½Ê½Ã¿À!! - 1. lesson 1.2¿¡¼­ ¹è¿ü´ø °Íó·³ :q!·Î ÆíÁý±â¸¦ ³ª°¥ ¼ö ÀÖ½À´Ï´Ù. + 1. lesson 1.1.2¿¡¼­ ¹è¿ü´ø °Íó·³ :q!·Î ÆíÁý±â¸¦ ³ª°¥ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à, ´Ù¸¥ Å͹̳ο¡ Á¢±Ù °¡´ÉÇÏ´Ù¸é, ¾Æ·¡ÀÇ ´Ü°è¸¦ ´Ù¸¥ Å͹̳ο¡¼­ Çغ¾´Ï´Ù. 2. ½© ÇÁ·ÒÇÁÆ®¿¡ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: vim tutor @@ -161,7 +161,7 @@ 6. À§ ¸ðµç ´Ü°è¸¦ ´Ù Àаí ÀÌÇØÇÑ ÈÄ¿¡ Á÷Á¢ Çغ¸¼¼¿ä. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 1 ¿ä¾à + LESSON 1.1 ¿ä¾à 1. Ä¿¼­¸¦ ¿òÁ÷ÀÏ ¶§¿¡´Â È­»ìÇ¥ Å°³ª hjkl Å°¸¦ ÀÌ¿ëÇÕ´Ï´Ù. @@ -181,10 +181,10 @@ Âü°í: ´Â ¸í·É ¸ðµå·Î µ¹¾Æ°¡´Â µ¥ ¾²¸ç, ¿øÄ¡ ¾Ê´Â ¸í·ÉÀ̳ª ¿ÏÀüÈ÷ ÀԷµÇÁö ¾ÊÀº ¸í·ÉÀ» Ãë¼ÒÇÏ´Â µ¥¿¡µµ ¾¹´Ï´Ù. -±×·³ Lesson 2¸¦ ½ÃÀÛÇսôÙ. +±×·³ Lesson 1.2¸¦ ½ÃÀÛÇսôÙ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: »èÁ¦(DELETION) ¸í·É + Lesson 1.2.1: »èÁ¦(DELETION) ¸í·É ** ÇÑ ´Ü¾î¸¦ ³¡±îÁö Áö¿ì·Á¸é dw ¶ó°í Ä¡¸é µË´Ï´Ù. ** @@ -202,11 +202,11 @@ ---> There are a some words fun that don't belong paper in this sentence. - 5. 3, 4¹ø °úÁ¤À» ´Ù½Ã ÇÏ¿© ¹®ÀåÀ» Á¤È®ÇÏ°Ô ¸¸µç µÚ Lesson 2.2·Î °¡½Ê½Ã¿À. + 5. 3, 4¹ø °úÁ¤À» ´Ù½Ã ÇÏ¿© ¹®ÀåÀ» Á¤È®ÇÏ°Ô ¸¸µç µÚ Lesson 1.2.2·Î °¡½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: ´Ù¸¥ »èÁ¦ ¸í·É + Lesson 1.2.2: ´Ù¸¥ »èÁ¦ ¸í·É ** d$ ¶ó°í Ä¡¸é ±× ÁÙ ³¡±îÁö Áö¿öÁý´Ï´Ù. ** @@ -221,14 +221,14 @@ ---> Somebody typed the end of this line twice. end of this line twice. - 5. ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö ÀÌÇØÇϱâ À§ÇØ Lesson 2.3 À¸·Î °¡½Ê½Ã¿À. + 5. ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö ÀÌÇØÇϱâ À§ÇØ Lesson 1.2.3 À¸·Î °¡½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: ¸í·É°ú Àû¿ë ´ë»ó¿¡ ´ëÇØ + Lesson 1.2.3: ¸í·É°ú Àû¿ë ´ë»ó¿¡ ´ëÇØ »èÁ¦ ¸í·É dÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù. @@ -250,7 +250,7 @@ À§¿¡¼­ À̾߱âÇÑ ´ë»óÀÇ ¸ñ·Ï¿¡ µû¶ó Ä¿¼­°¡ ¿òÁ÷ÀÌ°Ô µË´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: ´ë»ó¿¡ ¹Ýº¹ Àû¿ëÇϱâ + Lesson 1.2.4: ´ë»ó¿¡ ¹Ýº¹ Àû¿ëÇϱâ ** ´ë»ó ÀÌÀü¿¡ ¼ýÀÚ¸¦ ³Ö¾îÁÖ¸é ±× ¸¸Å­ ¹Ýº¹ µË´Ï´Ù. ** @@ -267,10 +267,10 @@ ---> This is just a line with words you can move around in. - 6. Lesson 2.5·Î °¡½Ê½Ã¿À. + 6. Lesson 1.2.5·Î °¡½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: »èÁ¦¿¡ ¹Ýº¹ Àû¿ëÇϱâ + Lesson 1.2.5: »èÁ¦¿¡ ¹Ýº¹ Àû¿ëÇϱâ ** ¸í·É°ú ¼ýÀÚ¸¦ ÇÔ²² »ç¿ëÇÏ¸é ±×¸¸Å­ ¹Ýº¹ ¼öÇà µË´Ï´Ù. ** @@ -287,7 +287,7 @@ ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: ÁÙ Àüü Á¶ÀÛÇϱâ + Lesson 1.2.6: ÁÙ Àüü Á¶ÀÛÇϱâ @@ -311,7 +311,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: Ãë¼Ò(UNDO) ¸í·É + Lesson 1.2.7: Ãë¼Ò(UNDO) ¸í·É ** u ¸¦ ´©¸£¸é ¸¶Áö¸· ¸í·ÉÀÌ Ãë¼ÒµÇ¸ç, U ´Â ÁÙ Àüü¸¦ ¼öÁ¤ÇÕ´Ï´Ù. ** @@ -327,13 +327,13 @@ ---> Fiix the errors oon thhis line and reeplace them witth undo. - 8. ÀÌ ¸í·ÉÀº ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ±×·³ Lesson 2 ¿ä¾àÀ¸·Î ³Ñ¾î°¡µµ·Ï ÇսôÙ. + 8. ÀÌ ¸í·ÉÀº ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ±×·³ Lesson 1.2 ¿ä¾àÀ¸·Î ³Ñ¾î°¡µµ·Ï ÇսôÙ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 2 ¿ä¾à + LESSON 1.2 ¿ä¾à 1. Ä¿¼­°¡ À§Ä¡ÇÑ °÷ºÎÅÍ ´Ü¾îÀÇ ³¡±îÁö Áö¿ì·Á¸é: dw @@ -357,7 +357,7 @@ Ãë¼ÒÇÑ °ÍÀ» ´Ù½Ã ½ÇÇàÇÏ·Á¸é: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: ºÙÀ̱â(PUT) ¸í·É + Lesson 1.3.1: ºÙÀ̱â(PUT) ¸í·É ** p ¸¦ ÀÔ·ÂÇÏ¿© ¸¶Áö¸·À¸·Î Áö¿î ³»¿ëÀ» Ä¿¼­ µÚ¿¡ ºÙÀÔ´Ï´Ù. ** @@ -380,7 +380,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: ġȯ(REPLACE) ¸í·É + Lesson 1.3.2: ġȯ(REPLACE) ¸í·É ** Ä¿¼­ ¾Æ·¡ÀÇ ±ÛÀÚ Çϳª¸¦ ¹Ù²Ù·Á¸é, r À» ´©¸¥ ÈÄ ¹Ù²Ü ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ** @@ -396,14 +396,14 @@ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Lesson 3.2 ·Î À̵¿ÇսôÙ. + 5. Lesson 1.3.2 ·Î À̵¿ÇսôÙ. ÁÖÀÇ: ¿Ü¿ìÁö ¸»°í, Á÷Á¢ Çغ¸¸é¼­ ÀÍÇô¾ß ÇÑ´Ù´Â °ÍÀ» ÀØÁö ¸¶½Ê½Ã¿À. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: º¯È¯(CHANGE) ¸í·É + Lesson 1.3.3: º¯È¯(CHANGE) ¸í·É ** ÇÑ ´Ü¾îÀÇ Àüü¸¦ ¹Ù²Ù·Á¸é, ce ¸¦ Ä¡½Ê½Ã¿À. ** @@ -427,7 +427,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: c ¸¦ ÀÌ¿ëÇÑ ´Ù¸¥ º¯È¯ ¸í·É + Lesson 1.3.4: c ¸¦ ÀÌ¿ëÇÑ ´Ù¸¥ º¯È¯ ¸í·É ** º¯È¯ ¸í·ÉÀº »èÁ¦ÇÒ ¶§ ÀÌ¿ëÇÑ ´ë»ó¿¡ ´ëÇØ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ** @@ -451,7 +451,7 @@ ce Âü°í: ÀÔ·ÂÇÏ´Â µ¿¾ÈÀº ¹é½ºÆäÀ̽º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 3 ¿ä¾à + LESSON 1.3 ¿ä¾à 1. ÀÌ¹Ì Áö¿î ³»¿ëÀ» µÇµ¹¸®·Á¸é, p ¸¦ ´©¸£½Ê½Ã¿À. ÀÌ ¸í·ÉÀº Ä¿¼­ *´ÙÀ½¿¡* @@ -474,7 +474,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: À§Ä¡¿Í ÆÄÀÏÀÇ »óÅ + Lesson 1.4.1: À§Ä¡¿Í ÆÄÀÏÀÇ »óÅ ** CTRL-G ¸¦ ´©¸£¸é ÆÄÀÏ ³»¿¡¼­ÀÇ ÇöÀç À§Ä¡¿Í ÆÄÀÏÀÇ »óŸ¦ º¼ ¼ö ÀÖ½À´Ï´Ù. @@ -501,7 +501,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: ã±â ¸í·É + Lesson 1.4.2: ã±â ¸í·É ** / ¸¦ ´©¸¥ ÈÄ °Ë»öÇÒ ¹®±¸¸¦ ÀÔ·ÂÇϽʽÿÀ. ** @@ -525,7 +525,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: °ýÈ£ÀÇ Â¦ ã±â + Lesson 1.4.3: °ýÈ£ÀÇ Â¦ ã±â ** % ¸¦ ´­·¯¼­ ), ], } ÀÇ Â¦À» ã½À´Ï´Ù. ** @@ -547,7 +547,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: ġȯ(SUBTITUTE) ¸í·É + Lesson 1.4.4: ġȯ(SUBTITUTE) ¸í·É ** :s/old/new/g Çϸé 'old' ¸¦ 'new' ·Î ġȯ(SUBTITUTE)ÇÕ´Ï´Ù. ** @@ -569,7 +569,7 @@ ce ÇÒÁö ÇÁ·ÒÇÁÆ®·Î ¸í·ÉÇÕ´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 4 ¿ä¾à + LESSON 1.4 ¿ä¾à 1. CTRL-G ÆÄÀÏÀÇ »óÅÂ¿Í ÆÄÀÏ ³»¿¡¼­ÀÇ ÇöÀç À§Ä¡¸¦ Ç¥½ÃÇÕ´Ï´Ù. G ÆÄÀÏÀÇ ³¡À¸·Î À̵¿ÇÕ´Ï´Ù. @@ -593,7 +593,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: ¿ÜºÎ ¸í·É ½ÇÇàÇÏ´Â ¹æ¹ý + Lesson 1.5.1: ¿ÜºÎ ¸í·É ½ÇÇàÇÏ´Â ¹æ¹ý ** :! À» ÀÔ·ÂÇÑ ÈÄ ½ÇÇàÇÏ·Á´Â ¸í·ÉÀ» ÀÔ·ÂÇϽʽÿÀ. ** @@ -615,7 +615,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: º¸´Ù ÀÚ¼¼ÇÑ ÆÄÀÏ ÀúÀå + Lesson 1.5.2: º¸´Ù ÀÚ¼¼ÇÑ ÆÄÀÏ ÀúÀå ** ¼öÁ¤µÈ ³»¿ëÀ» ÆÄÀÏ·Î ÀúÀåÇÏ·Á¸é, :w FILENAME ÇϽʽÿÀ. ** @@ -639,7 +639,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: ¼±ÅÃÀûÀ¸·Î ÀúÀåÇÏ´Â ¸í·É + Lesson 1.5.3: ¼±ÅÃÀûÀ¸·Î ÀúÀåÇÏ´Â ¸í·É ** ÆÄÀÏÀÇ ÀϺθ¦ ÀúÀåÇÏ·Á¸é, v ´ë»ó :w FILENAME À» ÀÔ·ÂÇÕ´Ï´Ù. ** @@ -660,27 +660,27 @@ ce »èÁ¦ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: ÆÄÀÏ ÀоîµéÀ̱â, ÇÕÄ¡±â + Lesson 1.5.4: ÆÄÀÏ ÀоîµéÀ̱â, ÇÕÄ¡±â ** ¾î¶² ÆÄÀÏÀÇ ³»¿ëÀ» »ðÀÔÇÏ·Á¸é, :r FILENAME ÇϽʽÿÀ ** 1. Ä¿¼­¸¦ ÀÌ ¶óÀÎ ¹Ù·Î À§·Î ¿Å±â½Ê½Ã¿À. -ÁÖÀÇ: 3¹ø° ´Ü°è¸¦ ½ÇÇàÇϸé, Lesson 5.3 À» º¸°Ô µÉ °ÍÀÔ´Ï´Ù. ±×·¸°Ô µÇ¸é +ÁÖÀÇ: 3¹ø° ´Ü°è¸¦ ½ÇÇàÇϸé, Lesson 1.5.3 À» º¸°Ô µÉ °ÍÀÔ´Ï´Ù. ±×·¸°Ô µÇ¸é ÀÌ lessonÀ¸·Î ´Ù½Ã ³»·Á¿À½Ê½Ã¿À. 2. ÀÌÁ¦ TEST ÆÄÀÏÀ» ÀоîµéÀԽôÙ. :r TEST ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. TEST ´Â ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. ÀоîµéÀÎ ÆÄÀÏÀº Ä¿¼­°¡ À§Ä¡ÇÑ ¹®Àå ¾Æ·¡ºÎÅÍ ³õÀÌ°Ô µË´Ï´Ù. 3. ÆÄÀÏÀÌ Àоîµé¿©Áø °ÍÀ» È®ÀÎÇϱâ À§ÇØ, µÚ·Î À̵¿Çؼ­ ±âÁ¸ ¹öÀü°ú ÆÄÀÏ¿¡¼­ - ÀоîµéÀÎ ¹öÀü, ÀÌ·¸°Ô Lesson 5.3 ÀÌ µÎ¹ø ¹Ýº¹µÇ¾úÀ½À» È®ÀÎÇϽʽÿÀ. + ÀоîµéÀÎ ¹öÀü, ÀÌ·¸°Ô Lesson 1.5.3 ÀÌ µÎ¹ø ¹Ýº¹µÇ¾úÀ½À» È®ÀÎÇϽʽÿÀ. Âü°í: ¿ÜºÎ ¸í·É¾îÀÇ °á°ú°ªµµ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, :r !ls ´Â ls ¸í·É¾î¿¡ ´ëÇÑ °á°ú°ªÀ» Àоî Ä¿¼­ ¹Ù·Î ¾Æ·¡¿¡ ÇÕĨ´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 5 ¿ä¾à + LESSON 1.5 ¿ä¾à 1. :!command ¸¦ ÀÌ¿ëÇÏ¿© ¿ÜºÎ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù. @@ -702,7 +702,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: »õ ÁÙ ¿­±â(OPEN) ¸í·É + Lesson 1.6.1: »õ ÁÙ ¿­±â(OPEN) ¸í·É ** o ¸¦ ´©¸£¸é Ä¿¼­ ¾Æ·¡¿¡ ÁÙÀ» ¸¸µé°í ÆíÁý ¸ðµå°¡ µË´Ï´Ù. ** @@ -722,7 +722,7 @@ ce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: Ãß°¡(APPEND) ¸í·É + Lesson 1.6.2: Ãß°¡(APPEND) ¸í·É ** a ¸¦ ´©¸£¸é Ä¿¼­ *´ÙÀ½¿¡* ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ** @@ -751,7 +751,7 @@ ce Âü°í: a, i ±×¸®°í A ´Â ÅؽºÆ®°¡ ÀԷµǴ À§Ä¡ ¿Ü¿¡´Â ÆíÁý ¸ðµå¿Í ¿ÏÀüÈ÷ °°´Ù´Â °ÍÀ» À¯³äÇϽʽÿÀ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: ġȯ(REPLACE) ÀÇ ´Ù¸¥ ¹öÀü + Lesson 1.6.3: ġȯ(REPLACE) ÀÇ ´Ù¸¥ ¹öÀü ** ´ë¹®ÀÚ R À» ÀÔ·ÂÇϸé Çϳª ÀÌ»óÀÇ ±ÛÀÚ¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ** @@ -770,7 +770,7 @@ ce ÁÖÀÇ: ġȯ ¸ðµå´Â ÆíÁý ¸ðµå¿Í ºñ½ÁÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÔ·ÂµÈ ¹®ÀÚµéÀÌ ¿ø·¡ ¹®ÀÚµéÀ» »èÁ¦ÇÏ´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: ¹®ÀÚ º¹»ç ºÙ¿©³Ö±â(COPY AND PASTE) + Lesson 1.6.4: ¹®ÀÚ º¹»ç ºÙ¿©³Ö±â(COPY AND PASTE) ** y ¸¦ ÀÌ¿ëÇØ º¹»çÇÏ°í p ·Î ºÙ¿© ³Ö½À´Ï´Ù. ** @@ -794,7 +794,7 @@ ce Âü°í: y ¿ª½Ã ¸í·É¾î·Î »ç¿ë °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, yw ´Â ÇÑ ´Ü¾î¸¦ º¹»çÇÕ´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: ¿É¼Ç ¼³Á¤(SET) + Lesson 1.6.5: ¿É¼Ç ¼³Á¤(SET) ** ã±â³ª ¹Ù²Ù±â¿¡¼­ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ¾ø¾Ö±â À§ÇØ ¿É¼ÇÀ» ¼³Á¤ÇÕ´Ï´Ù ** @@ -821,7 +821,7 @@ ce : /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 6 ¿ä¾à + LESSON 1.6 ¿ä¾à 1. o ¸¦ ÀÔ·ÂÇϸé Ä¿¼­ *¾Æ·¡¿¡* ÇÑ ÁÙÀÌ ¿­¸®¸ç, Ä¿¼­´Â ÆíÁý ¸ðµå·Î @@ -846,7 +846,7 @@ ce 7. ¾Õ¿¡ "no"¸¦ ºÙ¿© ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7.1: ¿Â¶óÀÎ µµ¿ò¸» ¸í·É + LESSON 1.7.1: ¿Â¶óÀÎ µµ¿ò¸» ¸í·É ** ¿Â¶óÀÎ µµ¿ò¸» ½Ã½ºÅÛ »ç¿ëÇϱâ ** @@ -870,7 +870,7 @@ ce :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7.2: ½ÃÀÛ ½ºÅ©¸³Æ® ¸¸µé±â + LESSON 1.7.2: ½ÃÀÛ ½ºÅ©¸³Æ® ¸¸µé±â ** ºöÀÇ ±â´É Äѱâ ** @@ -892,7 +892,7 @@ ce ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº :help vimrc-intro¸¦ Âü°í Çϼ¼¿ä. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: ¸í·É¾î ¿Ï¼ºÇϱâ + Lesson 1.7.3: ¸í·É¾î ¿Ï¼ºÇϱâ ** CTRL-D ¿Í ÀÌ¿ëÇÏ¿© ¸í·É¾î¸¦ ¿Ï¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.** @@ -915,7 +915,7 @@ ce ƯÈ÷, :help ¿¡¼­ À¯¿ëÇÒ °ÍÀÔ´Ï´Ù. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 ¿ä¾à + Lesson 1.7 ¿ä¾à 1. µµ¿ò¸»À» ¿­±â À§ÇØ :help ȤÀº ȤÀº ¸¦ ´©¸¨´Ï´Ù. diff --git a/runtime/tutor/tutor.ko b/runtime/tutor/tutor1.ko.utf-8 similarity index 92% rename from runtime/tutor/tutor.ko rename to runtime/tutor/tutor1.ko.utf-8 index 993c43de8c..60f1f488dc 100644 --- a/runtime/tutor/tutor.ko +++ b/runtime/tutor/tutor1.ko.utf-8 @@ -18,9 +18,9 @@ 것만으로는, ëª…ë ¹ì„ ìžŠì–´ë²„ë¦¬ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. ìž ì´ì œ, Caps Lock(Shift-Lock) 키가 눌려있지 ì•Šì€ì§€ 확ì¸í•´ë³´ì‹œê³ , j 키를 - 충분히 눌러서 Lesson 1.1ì´ í™”ë©´ì— ê°€ë“ ì°¨ë„ë¡ ì›€ì§ì—¬ë´…시다. + 충분히 눌러서 Lesson 1.1.1ì´ í™”ë©´ì— ê°€ë“ ì°¨ë„ë¡ ì›€ì§ì—¬ë´…시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: 커서 움ì§ì´ê¸° + Lesson 1.1.1: 커서 움ì§ì´ê¸° ** 커서를 움ì§ì´ë ¤ë©´, í‘œì‹œëœ ëŒ€ë¡œ h,j,k,l 키를 누르십시오. ** ^ @@ -34,7 +34,7 @@ 2. 아래 방향키 (j)를 ë°˜ë³µìž…ë ¥ì´ ë  ë•Œê¹Œì§€ 누르고 계십시오. ì´ì œ ë‹¤ìŒ lesson으로 가는 ë°©ë²•ì„ ì•Œê²Œ ë˜ì—ˆìŠµë‹ˆë‹¤. - 3. 아래 방향키를 ì´ìš©í•˜ì—¬, Lesson 1.2 ë¡œ 가십시오. + 3. 아래 방향키를 ì´ìš©í•˜ì—¬, Lesson 1.1.2 ë¡œ 가십시오. 참고: ì›í•˜ì§€ 않는 무언가가 ìž…ë ¥ì´ ë˜ì—ˆë‹¤ë©´, 를 눌러서, 명령 모드로 ëŒì•„가십시오. ê·¸ í›„ì— ì›í•˜ëŠ” ëª…ë ¹ì„ ë‹¤ì‹œ 입력하십시오. @@ -43,7 +43,7 @@ 훨씬 빠르게 ì´ë™í•  수 ìžˆì„ ê²ƒìž…ë‹ˆë‹¤. ì •ë§ìš”! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: ë¹”ì„ ì‹œìž‘í•˜ê³  ë내기 + Lesson 1.1.2: ë¹”ì„ ì‹œìž‘í•˜ê³  ë내기 !! 주ì˜: 아래 있는 단계를 실행하기 ì „ì—, ì´ lesson 전체를 ì½ìœ¼ì‹­ì‹œì˜¤!! @@ -68,9 +68,9 @@ 주ì˜: :q! 는 ë°”ë€ ë‚´ìš©ì„ ì €ìž¥í•˜ì§€ 않습니다. ì´ í›„ lessonì—ì„œ 어떻게 편집 ë‚´ìš©ì„ ì €ìž¥í•˜ëŠ”ì§€ 배울 수 있습니다. - 5. ê·¸ 후 커서를 아래로 움ì§ì—¬ Lesson 1.3 으로 가십시오. + 5. ê·¸ 후 커서를 아래로 움ì§ì—¬ Lesson 1.1.3 으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: í…스트 편집 - 지우기 + Lesson 1.1.3: í…스트 편집 - 지우기 ** 명령 모드ì—ì„œ x 를 누르면 커서가 위치한 ê³³ì˜ ê¸€ìžë¥¼ 지울 수 있습니다. ** @@ -85,7 +85,7 @@ ---> The ccow jumpedd ovverr thhe mooon. - 5. ë¬¸ìž¥ì´ ì •í™•í•´ì¡Œë‹¤ë©´, Lesson 1.4ë¡œ 가십시오. + 5. ë¬¸ìž¥ì´ ì •í™•í•´ì¡Œë‹¤ë©´, Lesson 1.1.4ë¡œ 가십시오. 주ì˜: ì´ ê¸¸ìž¡ì´ë¥¼ ë³´ë©´ì„œ 외우려고 하지ë§ê³ , ì§ì ‘ 사용해보면서 ìµížˆê¸¸ ë°”ëžë‹ˆë‹¤. @@ -93,7 +93,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: í…스트 편집 - 삽입 (INSERTION) + Lesson 1.1.4: í…스트 편집 - 삽입 (INSERTION) ** 명령 모드ì—ì„œ i 를 누르면 í…스트를 입력할 수 있습니다. ** @@ -111,12 +111,12 @@ ---> There is text misng this . ---> There is some text missing from this line. - 5. í…스트를 삽입하는 ë°ì— ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.5ë¡œ 가십시오. + 5. í…스트를 삽입하는 ë°ì— ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.1.5ë¡œ 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: íƒìŠ¤íŠ¸ 편집 - 추가 (APPENDING) + Lesson 1.1.5: íƒìŠ¤íŠ¸ 편집 - 추가 (APPENDING) ** A 를 입력해 í…스트를 추가할 수 있습니다. ** @@ -136,16 +136,16 @@ ---> There is also some text miss There is also some text missing here. - 5. í…스트를 추가하는 ë° ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.6으로 가십시오. + 5. í…스트를 추가하는 ë° ìµìˆ™í•´ì¡Œë‹¤ë©´, Lesson 1.1.6으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: íŒŒì¼ íŽ¸ì§‘ + Lesson 1.1.6: íŒŒì¼ íŽ¸ì§‘ ** :wq 를 ì´ìš©í•˜ì—¬ 파ì¼ì„ 저장하고 빠져나갈 수 있습니다. ** !! 주ì˜: 아래 있는 단계를 실행하기 ì „ì—, ì´ lesson 전체를 ì½ìœ¼ì‹­ì‹œì˜¤!! - 1. lesson 1.2ì—ì„œ ë°°ì› ë˜ ê²ƒì²˜ëŸ¼ :q!ë¡œ 편집기를 나갈 수 있습니다. + 1. lesson 1.1.2ì—ì„œ ë°°ì› ë˜ ê²ƒì²˜ëŸ¼ :q!ë¡œ 편집기를 나갈 수 있습니다. 만약, 다른 터미ë„ì— ì ‘ê·¼ 가능하다면, ì•„ëž˜ì˜ ë‹¨ê³„ë¥¼ 다른 터미ë„ì—ì„œ 해봅니다. 2. 쉘 í”„ë¡¬í”„íŠ¸ì— ë‹¤ìŒê³¼ ê°™ì´ ìž…ë ¥í•©ë‹ˆë‹¤: vim tutor @@ -161,7 +161,7 @@ 6. 위 모든 단계를 다 ì½ê³  ì´í•´í•œ í›„ì— ì§ì ‘ 해보세요. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 1 요약 + LESSON 1.1 요약 1. 커서를 움ì§ì¼ ë•Œì—는 화살표 키나 hjkl 키를 ì´ìš©í•©ë‹ˆë‹¤. @@ -181,10 +181,10 @@ 참고: 는 명령 모드로 ëŒì•„가는 ë° ì“°ë©°, ì›ì¹˜ 않는 명령ì´ë‚˜ 완전히 ìž…ë ¥ë˜ì§€ ì•Šì€ ëª…ë ¹ì„ ì·¨ì†Œí•˜ëŠ” ë°ì—ë„ ì”니다. -그럼 Lesson 2를 시작합시다. +그럼 Lesson 1.2를 시작합시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: ì‚­ì œ(DELETION) 명령 + Lesson 1.2.1: ì‚­ì œ(DELETION) 명령 ** í•œ 단어를 ë까지 지우려면 dw ë¼ê³  치면 ë©ë‹ˆë‹¤. ** @@ -202,11 +202,11 @@ ---> There are a some words fun that don't belong paper in this sentence. - 5. 3, 4번 ê³¼ì •ì„ ë‹¤ì‹œ 하여 ë¬¸ìž¥ì„ ì •í™•í•˜ê²Œ 만든 ë’¤ Lesson 2.2ë¡œ 가십시오. + 5. 3, 4번 ê³¼ì •ì„ ë‹¤ì‹œ 하여 ë¬¸ìž¥ì„ ì •í™•í•˜ê²Œ 만든 ë’¤ Lesson 1.2.2ë¡œ 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: 다른 ì‚­ì œ 명령 + Lesson 1.2.2: 다른 ì‚­ì œ 명령 ** d$ ë¼ê³  치면 ê·¸ 줄 ë까지 지워집니다. ** @@ -221,14 +221,14 @@ ---> Somebody typed the end of this line twice. end of this line twice. - 5. ì–´ë–¤ ì¼ì´ ì¼ì–´ë‚¬ëŠ”지 ì´í•´í•˜ê¸° 위해 Lesson 2.3 으로 가십시오. + 5. ì–´ë–¤ ì¼ì´ ì¼ì–´ë‚¬ëŠ”지 ì´í•´í•˜ê¸° 위해 Lesson 1.2.3 으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: 명령과 ì ìš© 대ìƒì— 대해 + Lesson 1.2.3: 명령과 ì ìš© 대ìƒì— 대해 ì‚­ì œ 명령 dì˜ í˜•ì‹ì€ 다ìŒê³¼ 같습니다. @@ -250,7 +250,7 @@ 위ì—ì„œ ì´ì•¼ê¸°í•œ 대ìƒì˜ 목ë¡ì— ë”°ë¼ ì»¤ì„œê°€ 움ì§ì´ê²Œ ë©ë‹ˆë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: 대ìƒì— 반복 ì ìš©í•˜ê¸° + Lesson 1.2.4: 대ìƒì— 반복 ì ìš©í•˜ê¸° ** ëŒ€ìƒ ì´ì „ì— ìˆ«ìžë¥¼ 넣어주면 ê·¸ ë§Œí¼ ë°˜ë³µ ë©ë‹ˆë‹¤. ** @@ -267,10 +267,10 @@ ---> This is just a line with words you can move around in. - 6. Lesson 2.5ë¡œ 가십시오. + 6. Lesson 1.2.5ë¡œ 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: ì‚­ì œì— ë°˜ë³µ ì ìš©í•˜ê¸° + Lesson 1.2.5: ì‚­ì œì— ë°˜ë³µ ì ìš©í•˜ê¸° ** 명령과 숫ìžë¥¼ 함께 사용하면 ê·¸ë§Œí¼ ë°˜ë³µ 수행 ë©ë‹ˆë‹¤. ** @@ -287,7 +287,7 @@ ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: 줄 ì „ì²´ 조작하기 + Lesson 1.2.6: 줄 ì „ì²´ 조작하기 @@ -311,7 +311,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: 취소(UNDO) 명령 + Lesson 1.2.7: 취소(UNDO) 명령 ** u 를 누르면 마지막 ëª…ë ¹ì´ ì·¨ì†Œë˜ë©°, U 는 줄 전체를 수정합니다. ** @@ -327,13 +327,13 @@ ---> Fiix the errors oon thhis line and reeplace them witth undo. - 8. ì´ ëª…ë ¹ì€ ë§¤ìš° 유용합니다. 그럼 Lesson 2 요약으로 넘어가ë„ë¡ í•©ì‹œë‹¤. + 8. ì´ ëª…ë ¹ì€ ë§¤ìš° 유용합니다. 그럼 Lesson 1.2 요약으로 넘어가ë„ë¡ í•©ì‹œë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 2 요약 + LESSON 1.2 요약 1. 커서가 위치한 곳부터 ë‹¨ì–´ì˜ ë까지 지우려면: dw @@ -357,7 +357,7 @@ 취소한 ê²ƒì„ ë‹¤ì‹œ 실행하려면: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: 붙ì´ê¸°(PUT) 명령 + Lesson 1.3.1: 붙ì´ê¸°(PUT) 명령 ** p 를 입력하여 마지막으로 지운 ë‚´ìš©ì„ ì»¤ì„œ ë’¤ì— ë¶™ìž…ë‹ˆë‹¤. ** @@ -380,7 +380,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: 치환(REPLACE) 명령 + Lesson 1.3.2: 치환(REPLACE) 명령 ** 커서 ì•„ëž˜ì˜ ê¸€ìž í•˜ë‚˜ë¥¼ 바꾸려면, r ì„ ëˆ„ë¥¸ 후 바꿀 글ìžë¥¼ 입력합니다. ** @@ -396,14 +396,14 @@ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Lesson 3.2 ë¡œ ì´ë™í•©ì‹œë‹¤. + 5. Lesson 1.3.2 ë¡œ ì´ë™í•©ì‹œë‹¤. 주ì˜: 외우지 ë§ê³ , ì§ì ‘ í•´ë³´ë©´ì„œ ìµí˜€ì•¼ 한다는 ê²ƒì„ ìžŠì§€ 마십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: 변환(CHANGE) 명령 + Lesson 1.3.3: 변환(CHANGE) 명령 ** í•œ ë‹¨ì–´ì˜ ì „ì²´ë¥¼ 바꾸려면, ce 를 치십시오. ** @@ -427,7 +427,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: c 를 ì´ìš©í•œ 다른 변환 명령 + Lesson 1.3.4: c 를 ì´ìš©í•œ 다른 변환 명령 ** 변환 ëª…ë ¹ì€ ì‚­ì œí•  ë•Œ ì´ìš©í•œ 대ìƒì— 대해 ì ìš©í•  수 있습니다. ** @@ -451,7 +451,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 참고: 입력하는 ë™ì•ˆì€ 백스페ì´ìŠ¤ë¥¼ ì´ìš©í•  수 있습니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 3 요약 + LESSON 1.3 요약 1. ì´ë¯¸ 지운 ë‚´ìš©ì„ ë˜ëŒë¦¬ë ¤ë©´, p 를 누르십시오. ì´ ëª…ë ¹ì€ ì»¤ì„œ *다ìŒì—* @@ -474,7 +474,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: 위치와 파ì¼ì˜ ìƒíƒœ + Lesson 1.4.1: 위치와 파ì¼ì˜ ìƒíƒœ ** CTRL-G 를 누르면 íŒŒì¼ ë‚´ì—ì„œì˜ í˜„ìž¬ 위치와 파ì¼ì˜ ìƒíƒœë¥¼ ë³¼ 수 있습니다. @@ -501,7 +501,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: 찾기 명령 + Lesson 1.4.2: 찾기 명령 ** / 를 누른 후 검색할 문구를 입력하십시오. ** @@ -525,7 +525,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: ê´„í˜¸ì˜ ì§ ì°¾ê¸° + Lesson 1.4.3: ê´„í˜¸ì˜ ì§ ì°¾ê¸° ** % 를 눌러서 ), ], } ì˜ ì§ì„ 찾습니다. ** @@ -547,7 +547,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: 치환(SUBTITUTE) 명령 + Lesson 1.4.4: 치환(SUBTITUTE) 명령 ** :s/old/new/g 하면 'old' 를 'new' ë¡œ 치환(SUBTITUTE)합니다. ** @@ -569,7 +569,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 할지 프롬프트로 명령합니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 4 요약 + LESSON 1.4 요약 1. CTRL-G 파ì¼ì˜ ìƒíƒœì™€ íŒŒì¼ ë‚´ì—ì„œì˜ í˜„ìž¬ 위치를 표시합니다. G 파ì¼ì˜ ë으로 ì´ë™í•©ë‹ˆë‹¤. @@ -593,7 +593,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: 외부 명령 실행하는 방법 + Lesson 1.5.1: 외부 명령 실행하는 방법 ** :! ì„ ìž…ë ¥í•œ 후 실행하려는 ëª…ë ¹ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤. ** @@ -615,7 +615,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: 보다 ìžì„¸í•œ íŒŒì¼ ì €ìž¥ + Lesson 1.5.2: 보다 ìžì„¸í•œ íŒŒì¼ ì €ìž¥ ** ìˆ˜ì •ëœ ë‚´ìš©ì„ íŒŒì¼ë¡œ 저장하려면, :w FILENAME 하십시오. ** @@ -639,7 +639,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: ì„ íƒì ìœ¼ë¡œ 저장하는 명령 + Lesson 1.5.3: ì„ íƒì ìœ¼ë¡œ 저장하는 명령 ** 파ì¼ì˜ ì¼ë¶€ë¥¼ 저장하려면, v ëŒ€ìƒ :w FILENAME ì„ ìž…ë ¥í•©ë‹ˆë‹¤. ** @@ -660,27 +660,27 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 삭제할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: íŒŒì¼ ì½ì–´ë“¤ì´ê¸°, 합치기 + Lesson 1.5.4: íŒŒì¼ ì½ì–´ë“¤ì´ê¸°, 합치기 ** ì–´ë–¤ 파ì¼ì˜ ë‚´ìš©ì„ ì‚½ìž…í•˜ë ¤ë©´, :r FILENAME 하십시오 ** 1. 커서를 ì´ ë¼ì¸ 바로 위로 옮기십시오. -주ì˜: 3번째 단계를 실행하면, Lesson 5.3 ì„ ë³´ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. 그렇게 ë˜ë©´ +주ì˜: 3번째 단계를 실행하면, Lesson 1.5.3 ì„ ë³´ê²Œ ë  ê²ƒìž…ë‹ˆë‹¤. 그렇게 ë˜ë©´ ì´ lesson으로 다시 내려오십시오. 2. ì´ì œ TEST 파ì¼ì„ ì½ì–´ë“¤ìž…시다. :r TEST ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤. TEST 는 파ì¼ì˜ ì´ë¦„입니다. ì½ì–´ë“¤ì¸ 파ì¼ì€ 커서가 위치한 문장 아래부터 놓ì´ê²Œ ë©ë‹ˆë‹¤. 3. 파ì¼ì´ ì½ì–´ë“¤ì—¬ì§„ ê²ƒì„ í™•ì¸í•˜ê¸° 위해, 뒤로 ì´ë™í•´ì„œ 기존 버전과 파ì¼ì—ì„œ - ì½ì–´ë“¤ì¸ 버전, ì´ë ‡ê²Œ Lesson 5.3 ì´ ë‘번 반복ë˜ì—ˆìŒì„ 확ì¸í•˜ì‹­ì‹œì˜¤. + ì½ì–´ë“¤ì¸ 버전, ì´ë ‡ê²Œ Lesson 1.5.3 ì´ ë‘번 반복ë˜ì—ˆìŒì„ 확ì¸í•˜ì‹­ì‹œì˜¤. 참고: 외부 ëª…ë ¹ì–´ì˜ ê²°ê³¼ê°’ë„ ì½ì„ 수 있습니다. 예를 들어, :r !ls 는 ls ëª…ë ¹ì–´ì— ëŒ€í•œ ê²°ê³¼ê°’ì„ ì½ì–´ 커서 바로 ì•„ëž˜ì— í•©ì¹©ë‹ˆë‹¤. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 5 요약 + LESSON 1.5 요약 1. :!command 를 ì´ìš©í•˜ì—¬ 외부 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤. @@ -702,7 +702,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: 새 줄 열기(OPEN) 명령 + Lesson 1.6.1: 새 줄 열기(OPEN) 명령 ** o 를 누르면 커서 ì•„ëž˜ì— ì¤„ì„ ë§Œë“¤ê³  편집 모드가 ë©ë‹ˆë‹¤. ** @@ -722,7 +722,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: 추가(APPEND) 명령 + Lesson 1.6.2: 추가(APPEND) 명령 ** a 를 누르면 커서 *다ìŒì—* ê¸€ì„ ìž…ë ¥í•  수 있습니다. ** @@ -751,7 +751,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 참고: a, i 그리고 A 는 í…스트가 ìž…ë ¥ë˜ëŠ” 위치 외ì—는 편집 모드와 완전히 같다는 ê²ƒì„ ìœ ë…하십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: 치환(REPLACE) ì˜ ë‹¤ë¥¸ 버전 + Lesson 1.6.3: 치환(REPLACE) ì˜ ë‹¤ë¥¸ 버전 ** ëŒ€ë¬¸ìž R ì„ ìž…ë ¥í•˜ë©´ 하나 ì´ìƒì˜ 글ìžë¥¼ 바꿀 수 있습니다. ** @@ -770,7 +770,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 주ì˜: 치환 모드는 편집 모드와 비슷합니다. 하지만 ìž…ë ¥ëœ ë¬¸ìžë“¤ì´ ì›ëž˜ 문ìžë“¤ì„ 삭제하는 ì ì´ 다릅니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: ë¬¸ìž ë³µì‚¬ 붙여넣기(COPY AND PASTE) + Lesson 1.6.4: ë¬¸ìž ë³µì‚¬ 붙여넣기(COPY AND PASTE) ** y 를 ì´ìš©í•´ 복사하고 p ë¡œ 붙여 넣습니다. ** @@ -794,7 +794,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 참고: y ì—­ì‹œ 명령어로 사용 가능합니다. 예를 들어, yw 는 í•œ 단어를 복사합니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: 옵션 설정(SET) + Lesson 1.6.5: 옵션 설정(SET) ** 찾기나 바꾸기ì—ì„œ ëŒ€ì†Œë¬¸ìž êµ¬ë¶„ì„ ì—†ì• ê¸° 위해 ì˜µì…˜ì„ ì„¤ì •í•©ë‹ˆë‹¤ ** @@ -821,7 +821,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 : /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 6 요약 + LESSON 1.6 요약 1. o 를 입력하면 커서 *아래ì—* í•œ ì¤„ì´ ì—´ë¦¬ë©°, 커서는 편집 모드로 @@ -846,7 +846,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 7. ì•žì— "no"를 붙여 ì˜µì…˜ì„ ëŒ ìˆ˜ 있습니다: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7.1: 온ë¼ì¸ ë„ì›€ë§ ëª…ë ¹ + LESSON 1.7.1: 온ë¼ì¸ ë„ì›€ë§ ëª…ë ¹ ** 온ë¼ì¸ ë„ì›€ë§ ì‹œìŠ¤í…œ 사용하기 ** @@ -870,7 +870,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7.2: 시작 스í¬ë¦½íŠ¸ 만들기 + LESSON 1.7.2: 시작 스í¬ë¦½íŠ¸ 만들기 ** ë¹”ì˜ ê¸°ëŠ¥ 켜기 ** @@ -892,7 +892,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 ë” ìžì„¸í•œ ë‚´ìš©ì€ :help vimrc-intro를 참고 하세요. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: 명령어 완성하기 + Lesson 1.7.3: 명령어 완성하기 ** CTRL-D 와 ì´ìš©í•˜ì—¬ 명령어를 완성할 수 있습니다.** @@ -915,7 +915,7 @@ ce 는 단어를 치환하는 것 ë¿ë§Œ 아니ë¼, ë‚´ìš©ì„ ì‚½ìž…í•  수 있 특히, :help ì—ì„œ 유용할 것입니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 요약 + Lesson 1.7 요약 1. ë„움ë§ì„ 열기 위해 :help í˜¹ì€ í˜¹ì€ ë¥¼ 누릅니다. diff --git a/runtime/tutor/tutor.lt.utf-8 b/runtime/tutor/tutor1.lt.utf-8 similarity index 92% rename from runtime/tutor/tutor.lt.utf-8 rename to runtime/tutor/tutor1.lt.utf-8 index c3b87bb6a7..0e1c29663f 100644 --- a/runtime/tutor/tutor.lt.utf-8 +++ b/runtime/tutor/tutor1.lt.utf-8 @@ -32,11 +32,11 @@ klaviÅ¡as – užraÅ¡u , o klaviÅ¡as – užraÅ¡u <Ä®VESTI>. Dabar įsitikinkite, kad yra iÅ¡jungta didžiųjų raidžių veiksena - („Caps Lock“) ir spauskite klaviÅ¡Ä… j tol, kol 1.1 pamokos tekstas + („Caps Lock“) ir spauskite klaviÅ¡Ä… j tol, kol 1.1.1 pamokos tekstas visiÅ¡kai užpildys ekranÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1 pamoka: ŽYMEKLIO VALDYMAS + 1.1.1 pamoka: ŽYMEKLIO VALDYMAS ** Žymeklis valdomas klavišų h,j,k,l pagalba, kaip pavaizduota. ** @@ -50,7 +50,7 @@ 2. Nuspauskite klaviÅ¡Ä… žemyn (j), kol jo veiksmas ims kartotis. Dabar žinote, kaip nukeliauti iki kitos pamokos. - 3. Naudodami klaviÅ¡Ä… žemyn, keliaukite iki 1.2 pamokos. + 3. Naudodami klaviÅ¡Ä… žemyn, keliaukite iki 1.1.2 pamokos. PASTABA: Jei kada nebÅ«tumÄ—te tikri, kad nuspaudÄ—te reikiamÄ… klaviÅ¡Ä…, spustelÄ—kite klaviÅ¡Ä… – taip sugrįšite į „NormaliÄ…ją“ veiksenÄ…. @@ -61,7 +61,7 @@ PASTABA: Žymeklį paprastai galima valdyti ir rodyklių klaviÅ¡ais, taÄiau, į ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2 pamoka: DARBO SU „VIM“ PABAIGA + 1.1.2 pamoka: DARBO SU „VIM“ PABAIGA !! SVARBU: prieÅ¡ bandydami toliau nurodytas komandas, !! @@ -84,11 +84,11 @@ PASTABA: komanda :q! užbaigia redaktoriaus darbÄ…, atmesdama bet kokius juo atliktus, bet dar neįraÅ¡ytus failo pakeitimus. Kaip pakeitimus įraÅ¡yti, sužinosite paskesnÄ—je pamokoje. - 5. Perkelkite žymeklį žemyn į 1.3 pamokÄ…. + 5. Perkelkite žymeklį žemyn į 1.1.3 pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3 pamoka: TEKSTO REDAGAVIMAS - Å ALINIMAS + 1.1.3 pamoka: TEKSTO REDAGAVIMAS - Å ALINIMAS ** PaÅ¡alinti ties žymekliu esantį raÅ¡menį galite spustelÄ—dami x klaviÅ¡Ä…. ** @@ -104,14 +104,14 @@ PASTABA: komanda :q! užbaigia redaktoriaus darbÄ…, atmesdama bet kokius ---> KKarvÄ— perÅ¡ooko pperr mmmÄ—nullį. - 5. IÅ¡taisÄ™ klaidas sakinyje, eikite į 1.4 pamokÄ…. + 5. IÅ¡taisÄ™ klaidas sakinyje, eikite į 1.1.4 pamokÄ…. PASTABA: Å¡iame pradžiamokslyje komandas stenkitÄ—s įsiminti ne tik skaitydami jų apraÅ¡ymus, bet ir iÅ¡bandydami jas praktiÅ¡kai. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4 pamoka: TEKSTO REDAGAVIMAS – Ä®TERPIMAS + 1.1.4 pamoka: TEKSTO REDAGAVIMAS – Ä®TERPIMAS ** Ä®terpti tekstÄ… galite, prieÅ¡ tai spustelÄ—jÄ™ i raidÄ™. ** @@ -129,11 +129,11 @@ PASTABA: Å¡iame pradžiamokslyje komandas stenkitÄ—s įsiminti ne tik skaitydami ---> Å ioje eiluje trÅ«ksta tiek . ---> Å ioje eilutÄ—je trÅ«ksta Å¡iek tiek teksto. - 5. IÅ¡mokÄ™ įterpti tekstÄ…, keliaukite toliau į 1.5 pamokÄ…. + 5. IÅ¡mokÄ™ įterpti tekstÄ…, keliaukite toliau į 1.1.5 pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.5 pamoka: TEKSTO REDAGAVIMAS – PRIDÄ–JIMAS EILUTÄ–S GALE + 1.1.5 pamoka: TEKSTO REDAGAVIMAS – PRIDÄ–JIMAS EILUTÄ–S GALE ** PridÄ—ti teksto eilutÄ—s gale galite, prieÅ¡ tai spustelÄ—jÄ™ A raidÄ™. ** @@ -154,10 +154,10 @@ PASTABA: Å¡iame pradžiamokslyje komandas stenkitÄ—s įsiminti ne tik skaitydami ---> ÄŒia taip pat trÅ«ks ÄŒia taip pat trÅ«ksta Å¡iek tiek teksto. - 5. IÅ¡mokÄ™ pridÄ—ti teksto eilutÄ—s gale, keliaukite toliau į 1.6 pamokÄ…. + 5. IÅ¡mokÄ™ pridÄ—ti teksto eilutÄ—s gale, keliaukite toliau į 1.1.6 pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.6 pamoka: FAILO REDAGAVIMAS + 1.1.6 pamoka: FAILO REDAGAVIMAS ** Komanda :wq įraÅ¡o atvertÄ… failÄ… ir užbaigia redaktoriaus darbÄ…. ** @@ -166,7 +166,7 @@ PASTABA: Å¡iame pradžiamokslyje komandas stenkitÄ—s įsiminti ne tik skaitydami !! perskaitykite Å¡iÄ… pamokÄ… iki galo !! 1. Jei galite naudotis kitu terminalu, tolesnius veiksmus atlikite jame. - Kitu atveju užverkite šį pradžiamokslį kaip ir 1.2 pamokoje: :q! + Kitu atveju užverkite šį pradžiamokslį kaip ir 1.1.2 pamokoje: :q! 2. Komandų eilutÄ—je įveskite komandÄ…: vim failas.txt ÄŒia „vim“ – komanda „Vim“ redaktoriui paleisti, o „failas.txt“ – norimo @@ -182,7 +182,7 @@ PASTABA: Å¡iame pradžiamokslyje komandas stenkitÄ—s įsiminti ne tik skaitydami 6. PerskaitÄ™ ir įsiminÄ™ visus aukÅ¡Äiau apraÅ¡ytus žingsnius, atlikite juos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1 pamokos SANTRAUKA + 1.1 pamokos SANTRAUKA 1. Žymeklis valdomas rodyklių arba hjkl klaviÅ¡ais. @@ -202,11 +202,11 @@ PASTABA: Å¡iame pradžiamokslyje komandas stenkitÄ—s įsiminti ne tik skaitydami PASTABA: paspaudimas grąžina į „NormaliÄ…ją“ veiksenÄ… arba nutraukia nereikalingos komandos įvedimÄ…. -Dabar keliaukite į 2 pamokÄ…. +Dabar keliaukite į 1.2 pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1 pamoka: Å ALINIMO KOMANDOS + 1.2.1 pamoka: Å ALINIMO KOMANDOS ** Komanda dw Å¡alina žodį. ** @@ -227,11 +227,11 @@ PASTABA: RaidÄ— d pasirodys apatinÄ—je terminalo eilutÄ—je, spustelÄ—jus jos ---> Yra mÄ—lynas žodžių, kurie skÄ—tis nepriklauso juokiasi Å¡iam sakiniui. 5. Kartokite 3 ir 4 punktus tol, kol sakinys bus iÅ¡taisytas. Tuomet - keliaukite į 2.2 pamokÄ…. + keliaukite į 1.2.2 pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2 pamoka: DAUGIAU Å ALINIMO KOMANDŲ + 1.2.2 pamoka: DAUGIAU Å ALINIMO KOMANDŲ ** Komanda d$ paÅ¡alinta tekstÄ… iki eilutÄ—s pabaigos. ** @@ -247,11 +247,11 @@ PASTABA: RaidÄ— d pasirodys apatinÄ—je terminalo eilutÄ—je, spustelÄ—jus jos ---> Kažkas Å¡ios eilutÄ—s pabaigÄ… įvedÄ— dukart. pabaigÄ… įvedÄ— dukart. - 5. Keliaukite į 2.3 pamokÄ…. Ten sužinosite daugiau kaip vyksta Å¡alinimas. + 5. Keliaukite į 1.2.3 pamokÄ…. Ten sužinosite daugiau kaip vyksta Å¡alinimas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3 pamoka: OPERATORIAI IR VEKTORIAI + 1.2.3 pamoka: OPERATORIAI IR VEKTORIAI Daugelį teksto redagavimo komandų sudaro operatorius ir vektorius. @@ -276,7 +276,7 @@ PASTABA: „Normaliojoje“ veiksenoje spustelÄ—jus tik vektoriaus klaviÅ¡Ä…, be ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4 pamoka: VEKTORIAUS NAUDOJIMAS SU SKAITIKLIU + 1.2.4 pamoka: VEKTORIAUS NAUDOJIMAS SU SKAITIKLIU ** PrieÅ¡ vektoriaus ženklÄ… paraÅ¡ius skaiÄių, jis pakartojamas atitinkamÄ… @@ -296,11 +296,11 @@ PASTABA: „Normaliojoje“ veiksenoje spustelÄ—jus tik vektoriaus klaviÅ¡Ä…, be ---> Å ioje eilutÄ—je yra žodžių, po kuriuos galite pakilnoti žymeklį. - 6. Keliaukite toliau į 2.5 pamokÄ…. + 6. Keliaukite toliau į 1.2.5 pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5 pamoka: SKAITIKLIO NAUDOJIMAS Å ALINANT TEKSTÄ„ + 1.2.5 pamoka: SKAITIKLIO NAUDOJIMAS Å ALINANT TEKSTÄ„ ** Kai skaiÄius naudojamas su operatoriumi, komanda pakartojama atitinkamÄ… @@ -324,7 +324,7 @@ PASTABA: „Normaliojoje“ veiksenoje spustelÄ—jus tik vektoriaus klaviÅ¡Ä…, be ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.6 pamoka: OPERAVIMAS VISOMIS EILUTÄ–MIS + 1.2.6 pamoka: OPERAVIMAS VISOMIS EILUTÄ–MIS ** SpustelÄ—kite dd visai eilutei paÅ¡alinti. ** @@ -350,7 +350,7 @@ kitais žemiau paminÄ—tais operatoriais. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.7 pamoka: ATÅ AUKIMO KOMANDA + 1.2.7 pamoka: ATÅ AUKIMO KOMANDA ** SpustelÄ—kite u atÅ¡aukti paskutinÄ—s komandos pakeitimams, @@ -368,11 +368,11 @@ kitais žemiau paminÄ—tais operatoriais. ---> IÅ¡taisyykite klaidas Å¡iioje eilutÄ—je iir atÅ¡aukite paakeitimus. - 8. Å ios komandos labai naudingos. Keliaukite į 2 pamokos santraukÄ…. + 8. Å ios komandos labai naudingos. Keliaukite į 1.2 pamokos santraukÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2 pamokos SANTRAUKA + 1.2 pamokos SANTRAUKA 1. Tekstui paÅ¡alinti nuo žymeklio iki kito žodžio pradžios rinkite: dw @@ -399,7 +399,7 @@ kitais žemiau paminÄ—tais operatoriais. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1 pamoka: PATALPINIMO KOMANDA + 1.3.1 pamoka: PATALPINIMO KOMANDA ** Komanda p už žymeklio patalpina paskiausiai paÅ¡alintÄ… tekstÄ…. ** @@ -423,7 +423,7 @@ kitais žemiau paminÄ—tais operatoriais. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2 pamoka: PAKEITIMO KOMANDA + 1.3.2 pamoka: PAKEITIMO KOMANDA ** RaÅ¡menį, esantį ties žymekliu, galite pakeisti, spustelÄ—dami r ir @@ -440,13 +440,13 @@ kitais žemiau paminÄ—tais operatoriais. ---> Kežkus, rinjdamss šį tekÅ¡tÄ…, pridÄ—rÄ— dauk kleidų! ---> Kažkas, rinkdamas šį tekstÄ…, pridarÄ— daug klaidų! - 5. Tuomet keliaukite į 3.3 pamokÄ…. + 5. Tuomet keliaukite į 1.3.3 pamokÄ…. PASTABA: MokykitÄ—s ne tik skaitydami, bet ir darydami. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3 pamoka: KEITIMO KOMANDA + 1.3.3 pamoka: KEITIMO KOMANDA ** Kai norite pakeisti viskÄ… iki žodžio pabaigos, spustelÄ—kite ce . ** @@ -470,7 +470,7 @@ PASTABA: komanda ce paÅ¡alina žodį ir įjungia įterpimo veiksenÄ…, o ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4 pamoka: KITI KEITIMAI NAUDOJANT c OPERATORIŲ + 1.3.4 pamoka: KITI KEITIMAI NAUDOJANT c OPERATORIŲ ** Keitimo komanda gali bÅ«ti naudojama su tais paÄiais vektoriais, @@ -499,7 +499,7 @@ PASTABA: rinkdami tekstÄ…, klaidas pataisyti galite ir naudodamiesi įprastu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3 pamokos SANTRAUKA + 1.3 pamokos SANTRAUKA 1. NorÄ—dami patalpinti paskiausiai paÅ¡alintÄ… tekstÄ…, spustelÄ—kite p – taip @@ -521,7 +521,7 @@ Dabar keliaukite į kitÄ… pamokÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1 pamoka: ŽYMEKLIO VIETA IR FAILO BŪSENA + 1.4.1 pamoka: ŽYMEKLIO VIETA IR FAILO BŪSENA ** SpustelÄ—jÄ™ CTRL+G, sužinosite žymeklio vietÄ… faile ir failo bÅ«senÄ…. @@ -548,7 +548,7 @@ PASTABA: žymeklio pozicijÄ… faile apatiniame deÅ¡iniajame redaktoriaus kampe ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2 pamoka: PAIEÅ KOS KOMANDA + 1.4.2 pamoka: PAIEÅ KOS KOMANDA ** PaieÅ¡ka vykdoma, spustelint / , tada surenkant ieÅ¡komÄ… frazÄ™. ** @@ -578,7 +578,7 @@ PASTABA: paieÅ¡kai pasiekus failo pabaigÄ…, ji bus pratÄ™sta nuo pradžios, nebe ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3 pamoka: PORINIŲ SKLIAUSTŲ PAIEÅ KA + 1.4.3 pamoka: PORINIŲ SKLIAUSTŲ PAIEÅ KA ** Spauskite % , jei norite surasti porinį ), ] ar } skliaustÄ…. ** @@ -599,7 +599,7 @@ PASTABA: Å i komanda pravers derinant programas su skliaustų maiÅ¡alyne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4 pamoka: PAKAITOS KOMANDA + 1.4.4 pamoka: PAKAITOS KOMANDA ** Pakeisti vienÄ… frazÄ™ kita padÄ—s komanda :s/viena/kita/g . ** @@ -625,7 +625,7 @@ PASTABA: Å i komanda pravers derinant programas su skliaustų maiÅ¡alyne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4 pamokos SANTRAUKA + 1.4 pamokos SANTRAUKA 1. CTRl+G parodo padÄ—tį faile ir failo bÅ«senÄ…. @@ -656,7 +656,7 @@ PASTABA: Å i komanda pravers derinant programas su skliaustų maiÅ¡alyne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1 pamoka: KAIP Ä®VYKDYTI IÅ ORINĘ KOMANDÄ„ + 1.5.1 pamoka: KAIP Ä®VYKDYTI IÅ ORINĘ KOMANDÄ„ ** Surinkite :! ir norimÄ… įvykdyti iÅ¡orinÄ™ komandÄ… – ir ji bus įvykdyta. ** @@ -678,7 +678,7 @@ Pastaba: Visos : komandos pradedamos vykdyti paspaudus ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2 pamoka: DAR APIE FAILŲ RAÅ YMÄ„ + 1.5.2 pamoka: DAR APIE FAILŲ RAÅ YMÄ„ ** Jeigu norite įraÅ¡yti savo pakeitimus į failÄ…, surinkite :w FAILO_VARDAS ** @@ -703,7 +703,7 @@ PASTABA: jei po Å¡io žingsnio baigtumÄ—te „Vim“ darbÄ…, o tada vÄ—l paleist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3 pamoka: Ä®RAÅ YTINO TEKSTO PAŽYMÄ–JIMAS + 1.5.3 pamoka: Ä®RAÅ YTINO TEKSTO PAŽYMÄ–JIMAS ** NorÄ—dami įraÅ¡yti dalį failo, įveskite v vektorius :w FAILO_VARDAS ** @@ -730,23 +730,23 @@ PASTABA: SpustelÄ—jus v , pradedamas Vizualusis pažymÄ—jimas. PažymÄ—to teks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4 pamoka: FAILO Ä®TERPIMAS + 1.5.4 pamoka: FAILO Ä®TERPIMAS ** Jei norite į tekstÄ… įterpti kito failo turinį, surinkite :r FAILO_VARDAS ** 1. Perkelkite žymeklį virÅ¡ Å¡ios eilutÄ—s. -PASTABA: Ä®vykdÄ™ 2 žingsnį, pamatysite 5.3 pamokos turinį. Tuomet grįžkite atgal +PASTABA: Ä®vykdÄ™ 2 žingsnį, pamatysite 1.5.3 pamokos turinį. Tuomet grįžkite atgal į Å¡iÄ… pamokÄ…. 2. Dabar įterpkite failo TESTAS turinį į tekstÄ…, pasinaudodami komanda :r TESTAS , kur TESTAS – tai norimo įterpti failo vardas (šį failÄ… - turÄ—jote sukurti 5.3 pamokoje). Failo turinys bus įterptas iÅ¡kart + turÄ—jote sukurti 1.5.3 pamokoje). Failo turinys bus įterptas iÅ¡kart po eilute, kurioje yra žymeklis. 3. Kad įsitikintumÄ—te, jog komanda buvo įvykdyta, Å¡iek tiek sugrįžkite - aukÅ¡tyn. TurÄ—tumÄ—te matyti dvi 5.3 pamokos kopijas. + aukÅ¡tyn. TurÄ—tumÄ—te matyti dvi 1.5.3 pamokos kopijas. PASTABA: PanaÅ¡iai galite įterpti ir iÅ¡orinÄ—s komandos iÅ¡vestÄ… tekstÄ…. Pavyzdžiui, įvedÄ™ :r !ls , įterpsite ls komandos iÅ¡vestį po eilute, @@ -754,7 +754,7 @@ PASTABA: PanaÅ¡iai galite įterpti ir iÅ¡orinÄ—s komandos iÅ¡vestÄ… tekstÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5 pamokos SANTRAUKA + 1.5 pamokos SANTRAUKA 1. :!komanda įvykdo iÅ¡orinÄ™ komandÄ…. @@ -777,7 +777,7 @@ PASTABA: PanaÅ¡iai galite įterpti ir iÅ¡orinÄ—s komandos iÅ¡vestÄ… tekstÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1 pamoka: NAUJOS EILUTÄ–S Ä®TERPIMO IR REDAGAVIMO KOMANDA („OPEN“) + 1.6.1 pamoka: NAUJOS EILUTÄ–S Ä®TERPIMO IR REDAGAVIMO KOMANDA („OPEN“) ** SpustelÄ—jus o , po žymekliu bus įterpta tuÅ¡Äia eilutÄ— ir persijungta @@ -800,7 +800,7 @@ PASTABA: PanaÅ¡iai galite įterpti ir iÅ¡orinÄ—s komandos iÅ¡vestÄ… tekstÄ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2 pamoka: TEKSTO Ä®TERPIMO UŽ ŽYMEKLIO KOMANDA („APPEND“) + 1.6.2 pamoka: TEKSTO Ä®TERPIMO UŽ ŽYMEKLIO KOMANDA („APPEND“) ** Kai norite raÅ¡yti tekstÄ… už žymeklio, spustelÄ—kite a . ** @@ -825,7 +825,7 @@ PASTABA: komandos a, i ir A visos įjungia Ä®terpimo veiksenÄ…. Skiriasi tik ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3 pamoka: KITAS KEITIMO BŪDAS + 1.6.3 pamoka: KITAS KEITIMO BŪDAS ** SpustelÄ—kite R , jeigu norite pakeisti daugiau nei vienÄ… raÅ¡menį. ** @@ -846,7 +846,7 @@ PASTABA: PerraÅ¡ymo veiksena yra analogiÅ¡ka Ä®terpimo veiksenai, taÄiau ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4 pamoka: TEKSTO KOPIJAVIMAS IR Ä®KLIJAVIMAS + 1.6.4 pamoka: TEKSTO KOPIJAVIMAS IR Ä®KLIJAVIMAS ** Tekstas kopijuojamas y operatoriumi, o įterpiamas p operatoriumi. ** @@ -876,7 +876,7 @@ PASTABA: PerraÅ¡ymo veiksena yra analogiÅ¡ka Ä®terpimo veiksenai, taÄiau ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.5 pamoka: PARINKÄŒIŲ NUSTATYMAS + 1.6.5 pamoka: PARINKÄŒIŲ NUSTATYMAS ** Kad ieÅ¡kant teksto nebÅ«tų paisoma didžiųjų ir mažųjų raidžių skirtumo, @@ -903,7 +903,7 @@ PASTABA: Jei norite raidžių registro nepaisyti tik vienos paieÅ¡kos metu, fraz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6 pamokos SANTRAUKA + 1.6 pamokos SANTRAUKA 1. SpustelÄ—jus o , įterpiama nauja eilutÄ— ŽEMIAU žymeklio, žymeklis @@ -932,7 +932,7 @@ PASTABA: Jei norite raidžių registro nepaisyti tik vienos paieÅ¡kos metu, fraz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7.1 pamoka: VIM ŽINYNO KOMANDOS + 1.7.1 pamoka: VIM ŽINYNO KOMANDOS ** NaudokitÄ—s „Vim“ žinyno sistema. ** @@ -957,7 +957,7 @@ PASTABA: Jei norite raidžių registro nepaisyti tik vienos paieÅ¡kos metu, fraz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7.2 pamoka: PALEISTIES SCENARIJAUS KŪRIMAS + 1.7.2 pamoka: PALEISTIES SCENARIJAUS KŪRIMAS ** IÅ¡naudokite „Vim“ privalumus ** @@ -983,7 +983,7 @@ PASTABA: Jei norite raidžių registro nepaisyti tik vienos paieÅ¡kos metu, fraz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7.3 pamoka: AUTOMATINIS UŽBAIGIMAS + 1.7.3 pamoka: AUTOMATINIS UŽBAIGIMAS ** Komandų užbaigimas naudojant CTRL+D ir ** @@ -1009,7 +1009,7 @@ PASTABA: Automatinis užbaigimas veikia su daugeliu komandų. Jį iÅ¡bandyti gal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7 pamokos SANTRAUKA + 1.7 pamokos SANTRAUKA 1. Ä®veskite :help , arba spustelÄ—kite arba žinynui atverti. diff --git a/runtime/tutor/tutor.lv.utf-8 b/runtime/tutor/tutor1.lv.utf-8 similarity index 91% rename from runtime/tutor/tutor.lv.utf-8 rename to runtime/tutor/tutor1.lv.utf-8 index e1ca778d03..0cbeaae8c4 100644 --- a/runtime/tutor/tutor.lv.utf-8 +++ b/runtime/tutor/tutor1.lv.utf-8 @@ -20,9 +20,9 @@ Tagad pÄrliecinieties, ka tastatÅ«rai nav nospiesti SHIFT vai CAPS-LOCK taustiņi un spiediet j taustiņu, lÄ«dz pilnÄ«bÄ redzat - 1.1 nodarbÄ«bas saturu + 1.1.1 nodarbÄ«bas saturu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1 nodarbÄ«ba: KURSORA PÄ€RVIETOÅ ANA + 1.1.1 nodarbÄ«ba: KURSORA PÄ€RVIETOÅ ANA ** Lai pÄrvietotu kursoru, spiediet taustiņus h, j, k, l ** @@ -45,7 +45,7 @@ PIEZĪME: Kursora vadÄ«bai var izmantot arÄ« bultiņu taustiņus, bet ticiet — iemÄcÄ«ties vadÄ«t ar j, k, l, h taustiņiem ir daudz parocÄ«gÄk! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2 nodarbÄ«ba: IZIEÅ ANA NO VIM + 1.1.2 nodarbÄ«ba: IZIEÅ ANA NO VIM !! PIEZĪME: Pirms izpildÄ«t Å¡Ä«s nodarbÄ«bas soļus, izlasiet visu instrukciju! @@ -63,11 +63,11 @@ PIEZĪME: Kursora vadÄ«bai var izmantot arÄ« bultiņu taustiņus, bet ticiet — PIEZĪME: :q! komanda atceļ visas failÄ radÄ«tÄs izmaiņas. PÄ“c dažÄm nodarbÄ«bÄm jÅ«s uzzinÄsiet, kÄ izmaiņas varat saglabÄt. - 5. PÄrvietojiet kursoru, uz 1.3 nodarbÄ«bu. + 5. PÄrvietojiet kursoru, uz 1.1.3 nodarbÄ«bu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3 nodarbÄ«ba: TEKSTA REDIĢĒŠANA – DZÄ’Å ANA + 1.1.3 nodarbÄ«ba: TEKSTA REDIĢĒŠANA – DZÄ’Å ANA ** Lai izdzÄ“stu zem kursora atrodoÅ¡os burtu, spiediet x ** @@ -81,14 +81,14 @@ PIEZĪME: :q! komanda atceļ visas failÄ radÄ«tÄs izmaiņas. PÄ“c da ---> Hiiipijiiii ÄÄÄauuukstiiina celllofÄnu. - 5. Kad augstÄk parÄdÄ«tÄ rinda ir izlabota, dodieties uz 1.4. nodarbÄ«bu. + 5. Kad augstÄk parÄdÄ«tÄ rinda ir izlabota, dodieties uz 1.1.4. nodarbÄ«bu. PIEZĪME: Izpildot Å¡o pamÄcÄ«bu, centieties mÄcÄ«ties nevis domÄjot, bet gan praktiski trenÄ“jot kustÄ«bu atmiņu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4 nodarbÄ«ba: TEKSTA REDIĢĒŠANA — IEVIETOÅ ANA + 1.1.4 nodarbÄ«ba: TEKSTA REDIĢĒŠANA — IEVIETOÅ ANA ** Lai ievietotu tekstu, spiediet i ** @@ -105,11 +105,11 @@ PIEZĪME: Izpildot Å¡o pamÄcÄ«bu, centieties mÄcÄ«ties nevis domÄjot, ---> Å aÄ lnij no tksta rÅ«kt dai buti. Å ajÄ lÄ«nijÄ no teksta trÅ«kst daži burti. - 5. Kad esat apguvis Å¡Ä«s darbÄ«bas, dodieties uz 1.5. nodarbÄ«bu. + 5. Kad esat apguvis Å¡Ä«s darbÄ«bas, dodieties uz 1.1.5. nodarbÄ«bu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.5 nodarbÄ«ba: TEKSTA REDIĢĒŠANA — PIEVIENOÅ ANA + 1.1.5 nodarbÄ«ba: TEKSTA REDIĢĒŠANA — PIEVIENOÅ ANA ** Lai pievienotu tekstu, spiediet A ** @@ -129,11 +129,11 @@ PIEZĪME: Izpildot Å¡o pamÄcÄ«bu, centieties mÄcÄ«ties nevis domÄjot, ---> Å ajÄ lÄ«nijÄ t Å ajÄ lÄ«nijÄ tekstam pietrÅ«kst beigas. - 5. Kad esat apguvis Å¡Ä«s darbÄ«bas, dodieties uz 1.6. nodarbÄ«bu. + 5. Kad esat apguvis Å¡Ä«s darbÄ«bas, dodieties uz 1.1.6. nodarbÄ«bu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.6 nodarbÄ«ba: FAILA SAGLABĀŠANA + 1.1.6 nodarbÄ«ba: FAILA SAGLABĀŠANA ** Lai saglabÄtu failu un izietu no redaktora, spiediet :wq ** @@ -141,7 +141,7 @@ PIEZĪME: Izpildot Å¡o pamÄcÄ«bu, centieties mÄcÄ«ties nevis domÄjot, 1. PÄrliecinieties, ka esat pareizi izpildÄ«jis visas iepriekÅ¡Ä“jÄs nodarbÄ«bas. - 2. Ja neesat pÄrliecinÄts, izejiet no redaktora, kÄ 1.2. nodarbÄ«bÄ ar komandu: + 2. Ja neesat pÄrliecinÄts, izejiet no redaktora, kÄ 1.1.2. nodarbÄ«bÄ ar komandu: :q! 3. Tad atkal palaidiet pamÄcÄ«bu, un, ja nepiecieÅ¡ams, veiciet failÄ izmaiņas. @@ -156,7 +156,7 @@ PIEZĪME: Izpildot Å¡o pamÄcÄ«bu, centieties mÄcÄ«ties nevis domÄjot, 5. Kad esat sapratis veicamÄs darbÄ«bas, izpildiet tÄs. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. nodarbÄ«bas APKOPOJUMS + 1.1. nodarbÄ«bas APKOPOJUMS 1. Kursoru pÄrvieto ar bultiņu vai arÄ« h,j,k,l taustiņiem: @@ -177,10 +177,10 @@ PIEZĪME: Izpildot Å¡o pamÄcÄ«bu, centieties mÄcÄ«ties nevis domÄjot, PIEZĪME: spieÅ¡ana atgriezÄ«s jÅ«s normÄlajÄ režīmÄ, vai arÄ« atcels nepareizu vai daļēji ievadÄ«tu komandu. -Tagad dodieties uz 2. nodarbÄ«bu. +Tagad dodieties uz 1.2. nodarbÄ«bu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1 nodarbÄ«ba: DZÄ’Å ANAS KOMANDAS + 1.2.1 nodarbÄ«ba: DZÄ’Å ANAS KOMANDAS ** Lai izdzÄ“stu vÄrdu, spiediet dw ** @@ -200,11 +200,11 @@ PIEZĪME: Nospiežot d, ekrÄna labajÄ apakÅ¡Ä“jÄ stÅ«rÄ« parÄdÄ«sies d burts ---> Å ajÄ kuku teikumÄ ir tata daži lala vÄrdi, kuri mumu nav vajadzÄ«gi. - 5. Izpildiet 3. — 4. soļus, lÄ«dz teksts ir pareizs un dodieties uz 2.2. nodarbÄ«bu. + 5. Izpildiet 3. — 4. soļus, lÄ«dz teksts ir pareizs un dodieties uz 1.2.2. nodarbÄ«bu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2 nodarbÄ«ba: CITAS DZÄ’Å ANAS KOMANDAS + 1.2.2 nodarbÄ«ba: CITAS DZÄ’Å ANAS KOMANDAS ** Lai izdzÄ“stu lÄ«dz rindas beigÄm, spiediet d$ ** @@ -220,13 +220,13 @@ PIEZĪME: Nospiežot d, ekrÄna labajÄ apakÅ¡Ä“jÄ stÅ«rÄ« parÄdÄ«sies d burts ---> KÄds ir ievadÄ«jis teikuma beigas divreiz. ievadÄ«jis teikuma beigas divreiz. - 5. Dodieties uz 2.3 nodarbÄ«bu, lai labÄk izprastu, kÄ tas notiek. + 5. Dodieties uz 1.2.3 nodarbÄ«bu, lai labÄk izprastu, kÄ tas notiek. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3 nodarbÄ«ba: OPERATORI UN KOMANDAS + 1.2.3 nodarbÄ«ba: OPERATORI UN KOMANDAS Daudzas tekstu mainoÅ¡Äs komandas sastÄv no operatora un kustÄ«bas. @@ -249,7 +249,7 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor norÄdÄ«to vietu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4 nodarbÄ«ba: KUSTĪBAS SKAITA IZMANTOÅ ANA + 1.2.4 nodarbÄ«ba: KUSTĪBAS SKAITA IZMANTOÅ ANA ** Pirms kustÄ«bas ievadot skaitli, tÄ tiks atkÄrtota norÄdÄs reizes. ** @@ -266,13 +266,13 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor ---> Å Ä« ir rinda ar vÄrdiem, kurÄ jÅ«s varat pÄrvietoties. - 6. Dodieties uz nodarbÄ«bu 2.5. + 6. Dodieties uz nodarbÄ«bu 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5 nodarbÄ«ba: SKAITÄ»A IZMANTOÅ ANA DZÄ’Å ANAI + 1.2.5 nodarbÄ«ba: SKAITÄ»A IZMANTOÅ ANA DZÄ’Å ANAI ** Ievadot skaitli pirms operatora, tas tiks atkÄrtots norÄdÄ«tÄs reizes. ** @@ -295,7 +295,7 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.6 nodarbÄ«ba: DARBĪBAS AR RINDÄ€M + 1.2.6 nodarbÄ«ba: DARBĪBAS AR RINDÄ€M ** Ievadiet dd lai izdzÄ“stu visu teksta rindu. ** @@ -319,7 +319,7 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.7 nodarbÄ«ba: ATCELÅ ANAS KOMANDA + 1.2.7 nodarbÄ«ba: ATCELÅ ANAS KOMANDA ** Lai atceltu darbÄ«bu, spiediet u ** @@ -339,12 +339,12 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor ---> Iizlabojiet kļūudas Å¡aajÄ riindÄ, aatceliet tÄs un aatceliet aatcelÅ¡anu. 8. Å Ä«s ir svarÄ«gas un noderÄ«gas iespÄ“jas. - Tagad pÄrejiet uz 2. nodarbÄ«bas apkopojumu. + Tagad pÄrejiet uz 1.2. nodarbÄ«bas apkopojumu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. nodarbÄ«bas APKOPOJUMS + 1.2. nodarbÄ«bas APKOPOJUMS 1. Lai izdzÄ“stu vÄrdu, uz kura atrodas kursors, ievada: dw @@ -369,7 +369,7 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor Lai atceltu atcelÅ¡anas darbÄ«bas, ievada: CTRL-R (Ctrl+Shift+r) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1 nodarbÄ«ba: IEVIETOÅ ANAS DARBĪBA + 1.3.1 nodarbÄ«ba: IEVIETOÅ ANAS DARBĪBA ** Lai pÄ“c kursora ievietotu iepriekÅ¡ izdzÄ“stu tekstu, spiediet p ** @@ -392,7 +392,7 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2 nodarbÄ«ba: AIZVIETOÅ ANAS KOMANDA + 1.3.2 nodarbÄ«ba: AIZVIETOÅ ANAS KOMANDA ** Lai aizvietotu burtu ar citu, ievadiet r un nepiecieÅ¡amo burtu. ** @@ -408,7 +408,7 @@ PIEZĪME: Ievadot kustÄ«bas komandu normÄlajÄ režīmÄ, tÄ pÄrvietos kursor ---> Iavadut Å¡o rixdu, kuds ar nuspeedis napariizus teusteņus! ---> Ievadot Å¡o rindu, kÄds ir nospiedis nepareizus taustiņus! - 5. Tagad dodieties uz 3.3. nodarbÄ«bu. + 5. Tagad dodieties uz 1.3.3. nodarbÄ«bu. PIEZĪME: Atcerieties, ka jums ir jÄmÄcÄs darbojoties, nevis vienkÄrÅ¡i mÄ“Ä£inot atcerÄ“ties! @@ -416,7 +416,7 @@ PIEZĪME: Atcerieties, ka jums ir jÄmÄcÄs darbojoties, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3 nodarbÄ«ba: IZMAIÅ…U DARBĪBA + 1.3.3 nodarbÄ«ba: IZMAIÅ…U DARBĪBA ** Lai izmainÄ«tu tekstu lÄ«dz vÄrda beigÄm, spiediet ce ** @@ -439,7 +439,7 @@ IevÄ“rojiet, ka pÄ“c ce un vÄrda ievades jÅ«s paliekat ievietoÅ¡anas režīm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4 nodarbÄ«ba: CITAS MAINĪŠANAS DARBĪBAS AR c + 1.3.4 nodarbÄ«ba: CITAS MAINĪŠANAS DARBĪBAS AR c ** Izmaiņu kustÄ«bas operatoru lieto tieÅ¡i tÄpat kÄ dzÄ“Å¡anai. ** @@ -462,7 +462,7 @@ IevÄ“rojiet, ka pÄ“c ce un vÄrda ievades jÅ«s paliekat ievietoÅ¡anas režīm PIEZĪME: Lai labotu nepareizi ievadÄ«tu tekstu, spiediet taustiņu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. NODARBĪBAS APKOPOJUMS + 1.3. NODARBĪBAS APKOPOJUMS 1. Lai ievietotu izdzÄ“sto tekstu, spiediet p taustiņu. Ar to ievietosiet @@ -486,7 +486,7 @@ Tagad dodieties uz nÄkamo nodarbÄ«bu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1 nodarbÄ«ba: KURSORA VIETA FAILÄ€ UN FAILA STATUSS + 1.4.1 nodarbÄ«ba: KURSORA VIETA FAILÄ€ UN FAILA STATUSS ** Lai noteiktu kursora atraÅ¡anÄs vietu failÄ un faila statusu, spiediet CTRL-g Lai pÄrvietotu kursoru uz noteiktu faila rindu, spiediet G ** @@ -512,7 +512,7 @@ PIEZĪME: JÅ«s varat redzÄ“t kursora atraÅ¡anÄs vietu failÄ vienmÄ“r ekrÄna 4. AtkÄrtojiet darbÄ«bas 1. — 3. tik ilgi, kamÄ“r droÅ¡i atceraties Å¡Ä«s komandas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2 nodarbÄ«ba: MEKLÄ’Å ANAS KOMANDA + 1.4.2 nodarbÄ«ba: MEKLÄ’Å ANAS KOMANDA ** Lai meklÄ“tu tekstÄ, spiediet / un ievadiet meklÄ“jamo frÄzi. ** @@ -545,7 +545,7 @@ PIEZĪME: Ja vairs nevÄ“laties izgaismot meklÄ“jamo tekstu, spiediet / piekÄrto savu taustiņu kombinÄciju Å¡ai darbÄ«bai.) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3 nodarbÄ«ba: SAISTĪTO IEKAVU MEKLÄ’Å ANA + 1.4.3 nodarbÄ«ba: SAISTĪTO IEKAVU MEKLÄ’Å ANA ** Lai atrastu saistÄ«to ),], vai } iekavu, ievadiet % ** @@ -569,7 +569,7 @@ PIEZĪME: Å Ä« iespÄ“ja ir ļoti noderÄ«ga, lai pÄrbaudÄ«tu nelÄ«dzsvarotas iek ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4 nodarbÄ«ba: AIZVIETOÅ ANAS KOMANDA + 1.4.4 nodarbÄ«ba: AIZVIETOÅ ANAS KOMANDA ** Ievadiet :s/vecais/jaunais/g lai aizvietotu 'vecais' ar 'jaunais'. ** @@ -592,7 +592,7 @@ PIEZĪME: Å Ä« iespÄ“ja ir ļoti noderÄ«ga, lai pÄrbaudÄ«tu nelÄ«dzsvarotas iek apstiprinÄt katru aizvietoÅ¡anu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.5 nodarbÄ«ba: DARBĪBAS ATKÄ€RTOÅ ANA + 1.4.5 nodarbÄ«ba: DARBĪBAS ATKÄ€RTOÅ ANA ** Lai atkÄrtotu iepriekÅ¡Ä“jo darbÄ«bu, spiediet . ** @@ -612,7 +612,7 @@ PIEZĪME: Å Ä« iespÄ“ja ir ļoti noderÄ«ga, lai pÄrbaudÄ«tu nelÄ«dzsvarotas iek ---> ba11e ce11e ha11e le11e ka11a mu11a nu11e ra11ijs Å¡te11e ti11s ze11is ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. nodarbÄ«bas APKOPOJUMS + 1.4. nodarbÄ«bas APKOPOJUMS 1. CTRL-G statusa rindÄ parÄda faila nosaukumu, statusu un kursora atraÅ¡anÄs vietu @@ -637,7 +637,7 @@ PIEZĪME: Å Ä« iespÄ“ja ir ļoti noderÄ«ga, lai pÄrbaudÄ«tu nelÄ«dzsvarotas iek Lai aizvietotu visas frÄzes failÄ ar apstiprinÄjumu: :%s/vecais/jaunais/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1 nodarbÄ«ba: KÄ€ IZPILDĪT Ä€RÄ’JU KOMANDU + 1.5.1 nodarbÄ«ba: KÄ€ IZPILDĪT Ä€RÄ’JU KOMANDU ** Ievadiet :! un pÄ“c tam sekojoÅ¡o ÄrÄ“jo komandu. ** @@ -657,7 +657,7 @@ PIEZĪME: IzsaucamÄs komandas izpilda nospiežot taustiņu, kopÅ¡ Å¡Ä« ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2 nodarbÄ«ba: VAIRÄ€K PAR FAILU SAGLABĀŠANU + 1.5.2 nodarbÄ«ba: VAIRÄ€K PAR FAILU SAGLABĀŠANU ** Lai saglabÄtu failu ar noteiktu nosaukumu, ievadiet :w NOSAUKUMS ** @@ -678,7 +678,7 @@ PIEZĪME: Ja jÅ«s iziesiet no vim un palaidÄ«siet to ar komandu vim test Vai, ja lietojat Windows, komandu: :!del test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3 nodarbÄ«ba: TEKSTA DAĻĒJA SAGLABĀŠANA + 1.5.3 nodarbÄ«ba: TEKSTA DAĻĒJA SAGLABĀŠANA ** Lai saglabÄtu tikai daļu no faila, ievadiet: v kustÄ«ba :w fails ** @@ -701,13 +701,13 @@ PIEZĪME: Spiežot v VIM pÄrslÄ“dzas vizuÄlÄ iezÄ«mÄ“Å¡anas režīmÄ. JÅ«s v iezÄ«mÄ“to tekstu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4 nodarbÄ«ba: FAILU SATURA IEGŪŠANA UN APVIENOÅ ANA + 1.5.4 nodarbÄ«ba: FAILU SATURA IEGŪŠANA UN APVIENOÅ ANA ** Lai ievietotu faila saturu, ievadiet :r fails ** 1. Novietojiet kursoru tieÅ¡i virs Å¡Ä«s rindas. -PIEZĪME: PÄ“c 2. soļa izpildes, jÅ«s redzÄ“siet tekstu no 5.3 nodarbÄ«bas. +PIEZĪME: PÄ“c 2. soļa izpildes, jÅ«s redzÄ“siet tekstu no 1.5.3 nodarbÄ«bas. PÄ“c tam pÄrvietojiet kursoru uz leju, lai lasÄ«tu tÄlÄk Å¡Ä«s nodarbÄ«bas saturu. @@ -715,8 +715,8 @@ PIEZĪME: PÄ“c 2. soļa izpildes, jÅ«s redzÄ“siet tekstu no 5.3 nodarbÄ«bas. kur test ir jÅ«su iepriekÅ¡Ä“jÄ nodarbÄ«bÄ saglabÄtais fails. IelasÄ«tÄ faila saturs tiek ievietots zem kursora. - 3. Lai pÄrbaudÄ«tu, ka darbÄ«ba ir izdevusies, pÄrliecinieties, ka 5.4 - nodarbÄ«bas aprakstÄ ir saturs no 5.3 nodarbÄ«bas. + 3. Lai pÄrbaudÄ«tu, ka darbÄ«ba ir izdevusies, pÄrliecinieties, ka 1.5.4 + nodarbÄ«bas aprakstÄ ir saturs no 1.5.3 nodarbÄ«bas. PIEZĪME: JÅ«s varat ievadÄ«t saturu failÄ, izpildot ÄrÄ“ju komandu. PiemÄ“ram, ar komandu :r !ls @@ -724,7 +724,7 @@ PIEZĪME: JÅ«s varat ievadÄ«t saturu failÄ, izpildot ÄrÄ“ju komandu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. nodarbÄ«bas APKOPOJUMS + 1.5. nodarbÄ«bas APKOPOJUMS 1. :!komanda izpilda ÄrÄ“ju komandu @@ -743,7 +743,7 @@ PIEZĪME: JÅ«s varat ievadÄ«t saturu failÄ, izpildot ÄrÄ“ju komandu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1 nodarbÄ«ba: ATVÄ’RÅ ANAS KOMANDA + 1.6.1 nodarbÄ«ba: ATVÄ’RÅ ANAS KOMANDA ** Ievadiet o lai ievadÄ«tu jaunu rindu virs kursora un pÄrietu ievades režīmÄ. ** @@ -761,7 +761,7 @@ PIEZĪME: JÅ«s varat ievadÄ«t saturu failÄ, izpildot ÄrÄ“ju komandu. ---> Ievadot O izveidosiet rindu zem Å¡Ä«s un pÄriesiet ievades režīmÄ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2 nodarbÄ«ba: PIEVIENOÅ ANAS KOMANDA + 1.6.2 nodarbÄ«ba: PIEVIENOÅ ANAS KOMANDA ** Ievadiet a lai ievietotu jaunu tekstu PÄ’C kursora. ** @@ -785,7 +785,7 @@ PIEZĪME: No normÄlÄ režīma pÄriet uz ievades režīmu ievadot a, i, A un i — pirms kursora, A — rindas beigÄs, I — rindas sÄkumÄ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3 nodarbÄ«ba: VÄ’L VIENS AIZVIETOÅ ANAS VEIDS + 1.6.3 nodarbÄ«ba: VÄ’L VIENS AIZVIETOÅ ANAS VEIDS ** Lai aizvietotu vairÄk kÄ vienu rakstzÄ«mi, spiediet R ** @@ -808,7 +808,7 @@ PIEZĪME: AizvietoÅ¡anas režīms darbojas lÄ«dzÄ«gi ievietoÅ¡anas režīmam, ar tikai ievadÄ«tÄs rakstzÄ«mes aizvieto esoÅ¡Äs. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4 nodarbÄ«ba: TEKSTA KOPÄ’Å ANA UN IEVIETOÅ ANA + 1.6.4 nodarbÄ«ba: TEKSTA KOPÄ’Å ANA UN IEVIETOÅ ANA ** Lai kopÄ“tu tekstu, izmantojiet y, bet lai ievietotu — p ** @@ -835,7 +835,7 @@ PIEZĪME: AizvietoÅ¡anas režīms darbojas lÄ«dzÄ«gi ievietoÅ¡anas režīmam, ar PIEZĪME: y var lietot kopÄ ar pÄrvietoÅ¡anÄs operatoru, piemÄ“ram, spiežot yw var nokopÄ“t izvÄ“lÄ“to vÄrdu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.5 nodarbÄ«ba: IESTATĪJUMU MAIÅ…A + 1.6.5 nodarbÄ«ba: IESTATĪJUMU MAIÅ…A ** Iestatiet meklÄ“Å¡ana un aizstÄÅ¡ana, neievÄ“rojot lielos/mazos burtus ** @@ -858,7 +858,7 @@ PIEZĪME: Ja vÄ“laties meklÄ“t gan lielos, gan mazos burtus vienÄ meklÄ“jumÄ, ievadiet papildu komandu \c PiemÄ“ram: /neievÄ“rot\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. nodarbÄ«bas APKOPOJUMS + 1.6. nodarbÄ«bas APKOPOJUMS Lai pÄrietu uz ievietoÅ¡anas režīmu un: @@ -885,7 +885,7 @@ PIEZĪME: Ja vÄ“laties meklÄ“t gan lielos, gan mazos burtus vienÄ meklÄ“jumÄ, 7. Lai opciju izslÄ“gtu, pievieno priedÄ“kli "no". PiemÄ“ram, :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7.1 nodarbÄ«ba: PALĪDZĪBAS IEGŪŠANA + 1.7.1 nodarbÄ«ba: PALĪDZĪBAS IEGŪŠANA ** IebÅ«vÄ“tÄs palÄ«dzÄ«bas izmantoÅ¡ana ** @@ -908,7 +908,7 @@ PIEZĪME: Ja vÄ“laties meklÄ“t gan lielos, gan mazos burtus vienÄ meklÄ“jumÄ, :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7.2 nodarbÄ«ba: IZVEIDOJIET SÄ€KÅ ANAS SKRIPTU + 1.7.2 nodarbÄ«ba: IZVEIDOJIET SÄ€KÅ ANAS SKRIPTU ** IeslÄ“dziet Vim iespÄ“jas ** @@ -930,7 +930,7 @@ PIEZĪME: Ja vÄ“laties meklÄ“t gan lielos, gan mazos burtus vienÄ meklÄ“jumÄ, Papildu informÄcijai ievadiet :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7.3 nodarbÄ«ba: AUTOMÄ€TISKÄ€ PABEIGÅ ANA + 1.7.3 nodarbÄ«ba: AUTOMÄ€TISKÄ€ PABEIGÅ ANA ** AutomÄtisko pabeigÅ¡anu komandrindÄ izsauc ar CTRL-D un ** @@ -955,7 +955,7 @@ PIEZĪME: PabeigÅ¡ana strÄdÄ dažÄdÄm komandÄm. Å Ä« iespÄ“ja var bÅ«t Ä«paÅ¡i noderÄ«ga, ievadot :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. nodarbÄ«bas APKOPOJUMS + 1.7. nodarbÄ«bas APKOPOJUMS 1. Lai atvÄ“rtu palÄ«dzÄ«bas logu, ievadiet :help vai spiediet vai diff --git a/runtime/tutor/tutor.no b/runtime/tutor/tutor1.nb similarity index 93% rename from runtime/tutor/tutor.no rename to runtime/tutor/tutor1.nb index 9eb6dfa93a..a6be694792 100644 --- a/runtime/tutor/tutor.no +++ b/runtime/tutor/tutor1.nb @@ -20,9 +20,9 @@ Hvis du bare leser teksten, vil du glemme kommandoene! Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - å flytte markøren helt til leksjon 1.1 fyller skjermen. + å flytte markøren helt til leksjon 1.1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN + Leksjon 1.1.1: FLYTTING AV MARKØREN ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** @@ -36,7 +36,7 @@ 2. Hold inne nedovertasten (j) til den repeterer. Nå vet du hvordan du beveger deg til neste leksjon. - 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + 3. Gå til leksjon 1.1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til normalmodus. Skriv deretter kommandoen du ønsket på nytt. @@ -45,7 +45,7 @@ Merk: Piltastene skal ogs å bevege markøren mye raskere når du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM + Leksjon 1.1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! @@ -64,11 +64,11 @@ Merk: Piltastene skal ogs MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen få leksjoner vil du lære hvordan du lagrer forandringene til en fil. - 5. Flytt markøren ned til leksjon 1.3. + 5. Flytt markøren ned til leksjon 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + Leksjon 1.1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for å slette tegnet under markøren. ** @@ -85,13 +85,13 @@ MERK: :q! forkaster alle forandringer som du gjorde. I l ---> Hessstennnn brrråsnudddde ii gaaata. ---> Hesten bråsnudde i gata. - 5. Nå som linjen er korrekt, gå til leksjon 1.4. + 5. Nå som linjen er korrekt, gå til leksjon 1.1.4. MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + Leksjon 1.1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for å sette inn tekst. ** @@ -114,7 +114,7 @@ MERK: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + Leksjon 1.1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for å legge til tekst. ** @@ -134,17 +134,17 @@ MERK: N ---> Det mangler også litt tek Det mangler også litt tekst på denne linjen. - 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL + Leksjon 1.1.6: REDIGERE EN FIL ** Bruk :wq for å lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + 1. Avslutt denne innføringen som du gjorde i leksjon 1.1.2: :q! 2. Skriv denne kommandoen på kommandolinja: vim tutor «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila @@ -160,7 +160,7 @@ MERK: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 + OPPSUMMERING AV LEKSJON 1.1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. @@ -180,10 +180,10 @@ MERK: N MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. - Nå kan du gå videre til leksjon 2. + Nå kan du gå videre til leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER + Leksjon 1.2.1: SLETTEKOMMANDOER ** Trykk dw for å slette et ord. ** @@ -204,9 +204,9 @@ MERK: Bokstaven d vil komme til syne p ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå - deretter til leksjon 2.2. + deretter til leksjon 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER + Leksjon 1.2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for å slette til slutten av linjen. ** @@ -221,7 +221,7 @@ MERK: Bokstaven d vil komme til syne p ---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. - 5. Gå til leksjon 2.3 for å forstå hva som skjer. + 5. Gå til leksjon 1.2.3 for å forstå hva som skjer. @@ -229,7 +229,7 @@ MERK: Bokstaven d vil komme til syne p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER + Leksjon 1.2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en @@ -252,7 +252,7 @@ MERK: Bokstaven d vil komme til syne p MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + LEKSJON 1.2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** @@ -270,12 +270,12 @@ MERK: Ved ---> Dette er en linje med noen ord som du kan bevege deg rundt på. - 6. Gå videre til leksjon 2.5. + 6. Gå videre til leksjon 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + Leksjon 1.2.5: BRUK AV ANTALL FOR Å SLETTE MER ** Et tall sammen med en operator repeterer den så mange ganger. ** @@ -298,7 +298,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÅ LINJER + Leksjon 1.2.6: OPERERE PÅ LINJER ** Trykk dd for å slette en hel linje. ** @@ -321,7 +321,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN + Leksjon 1.2.7: ANGRE-KOMMANDOEN ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** @@ -340,11 +340,11 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av - leksjon 2. + leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 + OPPSUMMERING AV LEKSJON 1.2 1. For å slette fra markøren fram til det neste ordet, trykk: dw @@ -367,7 +367,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p For å omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN + Leksjon 1.3.1: «LIM INN»-KOMMANDOEN ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** @@ -390,7 +390,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN + Leksjon 1.3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for å erstatte tegnet under markøren med x. ** @@ -406,14 +406,14 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! - 5. Gå videre til leksjon 3.2. + 5. Gå videre til leksjon 1.3.2. MERK: Husk at du bør lære ved å BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN + Leksjon 1.3.3: «FORANDRE»-OPERATOREN ** For å forandre til slutten av et ord, trykk ce . ** @@ -436,7 +436,7 @@ V ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + Leksjon 1.3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** @@ -459,7 +459,7 @@ V MERK: Du kan bruke slettetasten for å rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 + OPPSUMMERING AV LEKSJON 1.3 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette @@ -482,7 +482,7 @@ N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + Leksjon 1.4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. Trykk G for å gå til en spesifikk linje i filen. ** @@ -505,7 +505,7 @@ Merk: Du kan se mark 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN + Leksjon 1.4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** @@ -528,7 +528,7 @@ Merk: Du kan se mark Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER + Leksjon 1.4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for å finne en samsvarende ), ] eller } . ** @@ -551,7 +551,7 @@ Merk: Dette er veldig nyttig til feils ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN + Leksjon 1.4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** @@ -574,7 +574,7 @@ Merk: Dette er veldig nyttig til feils deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 + OPPSUMMERING AV LEKSJON 1.4 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. @@ -597,7 +597,7 @@ Merk: Dette er veldig nyttig til feils Erstatte alle forekomster i en fil: :%s/gammel/ny/g For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + Leksjon 1.5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** @@ -620,7 +620,7 @@ MERK: Alle ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER + Leksjon 1.5.2: MER OM LAGRING AV FILER ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** @@ -643,7 +643,7 @@ Merk: Hvis du n operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + Leksjon 1.5.3: VELGE TEKST SOM SKAL LAGRES ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** @@ -666,21 +666,21 @@ MERK: Ved operator for å gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + Leksjon 1.5.4: HENTING OG SAMMENSLÅING AV FILER ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. -MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 1.5.3. Gå deretter NED for å se denne leksjonen igjen. 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. + leksjon 1.5.3, originalen og denne versjonen. MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. @@ -689,7 +689,7 @@ MERK: Du kan ogs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 + OPPSUMMERING AV LEKSJON 1.5 1. :!kommando utfører en ekstern kommandio. @@ -712,7 +712,7 @@ MERK: Du kan ogs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + Leksjon 1.6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til @@ -735,7 +735,7 @@ MERK: Du kan ogs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + Leksjon 1.6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for å legge til tekst ETTER markøren. ** @@ -758,7 +758,7 @@ MERK: Du kan ogs Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + Leksjon 1.6.3: EN ANNEN MÅTE Å ERSTATTE PÅ ** Skriv en stor R for å erstatte mer enn ett tegn. ** @@ -781,7 +781,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST + Leksjon 1.6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** @@ -804,7 +804,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives Merk: Du kan også bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG + Leksjon 1.6.5: SETT VALG ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** @@ -827,7 +827,7 @@ Merk: For Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 + OPPSUMMERING AV LEKSJON 1.6 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i innsettingsmodus. @@ -850,7 +850,7 @@ Merk: Hvis du vil ignorere store/sm 7. Legg til «no» foran valget for å slå det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÅ HJELP + Leksjon 1.7.1: FÅ HJELP ** Bruk det innebygde hjelpesystemet. ** @@ -873,7 +873,7 @@ Merk: Hvis du vil ignorere store/sm :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + Leksjon 1.7.2: LAG ET OPPSTARTSSKRIPT ** Slå på funksjoner i Vim ** @@ -896,7 +896,7 @@ Merk: Hvis du vil ignorere store/sm alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING + Leksjon 1.7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** @@ -919,7 +919,7 @@ Merk: Hvis du vil ignorere store/sm MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 + OPPSUMMERING AV LEKSJON 1.7 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. diff --git a/runtime/tutor/tutor.no.utf-8 b/runtime/tutor/tutor1.nb.utf-8 similarity index 93% rename from runtime/tutor/tutor.no.utf-8 rename to runtime/tutor/tutor1.nb.utf-8 index 6a8a4e9463..4459f17b66 100644 --- a/runtime/tutor/tutor.no.utf-8 +++ b/runtime/tutor/tutor1.nb.utf-8 @@ -20,9 +20,9 @@ Hvis du bare leser teksten, vil du glemme kommandoene! Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - Ã¥ flytte markøren helt til leksjon 1.1 fyller skjermen. + Ã¥ flytte markøren helt til leksjon 1.1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN + Leksjon 1.1.1: FLYTTING AV MARKØREN ** For Ã¥ flytte markøren, trykk tastene h, j, k, l som vist. ** @@ -36,7 +36,7 @@ 2. Hold inne nedovertasten (j) til den repeterer. NÃ¥ vet du hvordan du beveger deg til neste leksjon. - 3. GÃ¥ til leksjon 1.2 ved hjelp av nedovertasten. + 3. GÃ¥ til leksjon 1.1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker pÃ¥ noe du har skrevet, trykk for Ã¥ gÃ¥ til normalmodus. Skriv deretter kommandoen du ønsket pÃ¥ nytt. @@ -45,7 +45,7 @@ Merk: Piltastene skal ogsÃ¥ virke. Men ved Ã¥ bruke hjkl vil du være i stand ti Ã¥ bevege markøren mye raskere nÃ¥r du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM + Leksjon 1.1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! @@ -64,11 +64,11 @@ Merk: Piltastene skal ogsÃ¥ virke. Men ved Ã¥ bruke hjkl vil du være i stand ti MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen fÃ¥ leksjoner vil du lære hvordan du lagrer forandringene til en fil. - 5. Flytt markøren ned til leksjon 1.3. + 5. Flytt markøren ned til leksjon 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + Leksjon 1.1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for Ã¥ slette tegnet under markøren. ** @@ -85,13 +85,13 @@ MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen ---> Hessstennnn brrrÃ¥snudddde ii gaaata. ---> Hesten brÃ¥snudde i gata. - 5. NÃ¥ som linjen er korrekt, gÃ¥ til leksjon 1.4. + 5. NÃ¥ som linjen er korrekt, gÃ¥ til leksjon 1.1.4. MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + Leksjon 1.1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for Ã¥ sette inn tekst. ** @@ -114,7 +114,7 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + Leksjon 1.1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for Ã¥ legge til tekst. ** @@ -134,17 +134,17 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m ---> Det mangler ogsÃ¥ litt tek Det mangler ogsÃ¥ litt tekst pÃ¥ denne linjen. - 5. NÃ¥r du føler at du behersker Ã¥ legge til tekst, gÃ¥ til leksjon 1.6. + 5. NÃ¥r du føler at du behersker Ã¥ legge til tekst, gÃ¥ til leksjon 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL + Leksjon 1.1.6: REDIGERE EN FIL ** Bruk :wq for Ã¥ lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + 1. Avslutt denne innføringen som du gjorde i leksjon 1.1.2: :q! 2. Skriv denne kommandoen pÃ¥ kommandolinja: vim tutor «vim» er kommandoen for Ã¥ starte Vim-editoren, «tutor» er navnet pÃ¥ fila @@ -160,7 +160,7 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 + OPPSUMMERING AV LEKSJON 1.1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. @@ -180,10 +180,10 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m MERK: NÃ¥r du trykker gÃ¥r du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. - NÃ¥ kan du gÃ¥ videre til leksjon 2. + NÃ¥ kan du gÃ¥ videre til leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER + Leksjon 1.2.1: SLETTEKOMMANDOER ** Trykk dw for Ã¥ slette et ord. ** @@ -204,9 +204,9 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. GÃ¥ - deretter til leksjon 2.2. + deretter til leksjon 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER + Leksjon 1.2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for Ã¥ slette til slutten av linjen. ** @@ -221,7 +221,7 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r ---> Noen skrev slutten pÃ¥ linjen en gang for mye. linjen en gang for mye. - 5. GÃ¥ til leksjon 2.3 for Ã¥ forstÃ¥ hva som skjer. + 5. GÃ¥ til leksjon 1.2.3 for Ã¥ forstÃ¥ hva som skjer. @@ -229,7 +229,7 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER + Leksjon 1.2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en @@ -252,7 +252,7 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r MERK: Ved Ã¥ skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + LEKSJON 1.2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved Ã¥ skrive et tall foran en bevegelse repeterer den sÃ¥ mange ganger. ** @@ -270,12 +270,12 @@ MERK: Ved Ã¥ skrive kun bevegelsen i normalmodusen uten en operator vil ---> Dette er en linje med noen ord som du kan bevege deg rundt pÃ¥. - 6. GÃ¥ videre til leksjon 2.5. + 6. GÃ¥ videre til leksjon 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Ã… SLETTE MER + Leksjon 1.2.5: BRUK AV ANTALL FOR Ã… SLETTE MER ** Et tall sammen med en operator repeterer den sÃ¥ mange ganger. ** @@ -298,7 +298,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÃ… LINJER + Leksjon 1.2.6: OPERERE PÃ… LINJER ** Trykk dd for Ã¥ slette en hel linje. ** @@ -321,7 +321,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN + Leksjon 1.2.7: ANGRE-KOMMANDOEN ** Trykk u for Ã¥ angre siste kommando, U for Ã¥ fikse en hel linje. ** @@ -340,11 +340,11 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. NÃ¥ kan du gÃ¥ til oppsummeringen av - leksjon 2. + leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 + OPPSUMMERING AV LEKSJON 1.2 1. For Ã¥ slette fra markøren fram til det neste ordet, trykk: dw @@ -367,7 +367,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som For Ã¥ omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN + Leksjon 1.3.1: «LIM INN»-KOMMANDOEN ** Trykk p for Ã¥ lime inn tidligere slettet tekst etter markøren ** @@ -390,7 +390,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN + Leksjon 1.3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for Ã¥ erstatte tegnet under markøren med x. ** @@ -406,14 +406,14 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! - 5. GÃ¥ videre til leksjon 3.2. + 5. GÃ¥ videre til leksjon 1.3.2. MERK: Husk at du bør lære ved Ã¥ BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN + Leksjon 1.3.3: «FORANDRE»-OPERATOREN ** For Ã¥ forandre til slutten av et ord, trykk ce . ** @@ -436,7 +436,7 @@ Vær oppmerksom pÃ¥ at ce sletter ordet og gÃ¥r inn i innsettingsmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + Leksjon 1.3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** @@ -459,7 +459,7 @@ Vær oppmerksom pÃ¥ at ce sletter ordet og gÃ¥r inn i innsettingsmodus. MERK: Du kan bruke slettetasten for Ã¥ rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 + OPPSUMMERING AV LEKSJON 1.3 1. For Ã¥ legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette @@ -482,7 +482,7 @@ NÃ¥ kan du gÃ¥ til neste leksjon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + Leksjon 1.4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for Ã¥ vise posisjonen i filen og filstatusen. Trykk G for Ã¥ gÃ¥ til en spesifikk linje i filen. ** @@ -505,7 +505,7 @@ Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette 4. Utfør steg 1 til 3 hvis du føler deg sikker pÃ¥ prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN + Leksjon 1.4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** @@ -528,7 +528,7 @@ Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette Merk: NÃ¥r søkingen nÃ¥r slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER + Leksjon 1.4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for Ã¥ finne en samsvarende ), ] eller } . ** @@ -551,7 +551,7 @@ Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN + Leksjon 1.4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for Ã¥ erstatte «gammel» med «ny». ** @@ -574,7 +574,7 @@ Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 + OPPSUMMERING AV LEKSJON 1.4 1. Ctrl-G viser nÃ¥værende posisjon i filen og filstatusen. @@ -597,7 +597,7 @@ Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert Erstatte alle forekomster i en fil: :%s/gammel/ny/g For Ã¥ godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + Leksjon 1.5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for Ã¥ utføre denne. ** @@ -620,7 +620,7 @@ MERK: Alle «:»-kommandoer mÃ¥ avsluttes med . Fra dette punktet er det ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER + Leksjon 1.5.2: MER OM LAGRING AV FILER ** For Ã¥ lagre endringene gjort i en tekst, skriv :w FILNAVN. ** @@ -643,7 +643,7 @@ Merk: Hvis du nÃ¥ hadde avsluttet Vim og startet pÃ¥ nytt igjen med «vim TEST» operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + Leksjon 1.5.3: VELGE TEKST SOM SKAL LAGRES ** For Ã¥ lagre en del av en fil, skriv v bevegelse :w FILNAVN ** @@ -666,21 +666,21 @@ MERK: Ved Ã¥ trykke v startes visuelt valg. Du kan flytte markøren rundt for operator for Ã¥ gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÃ…ING AV FILER + Leksjon 1.5.4: HENTING OG SAMMENSLÃ…ING AV FILER ** For Ã¥ lese inn en annen fil inn i nÃ¥værende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. -MERK: Etter Ã¥ ha utført steg 2 vil du se teksten fra leksjon 5.3. GÃ¥ deretter +MERK: Etter Ã¥ ha utført steg 2 vil du se teksten fra leksjon 1.5.3. GÃ¥ deretter NED for Ã¥ se denne leksjonen igjen. 2. Hent TEST-filen ved Ã¥ bruke kommandoen :r TEST der TEST er navnet pÃ¥ filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For Ã¥ sjekke at filen ble hentet, gÃ¥ tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. + leksjon 1.5.3, originalen og denne versjonen. MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. @@ -689,7 +689,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 + OPPSUMMERING AV LEKSJON 1.5 1. :!kommando utfører en ekstern kommandio. @@ -712,7 +712,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + Leksjon 1.6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for Ã¥ «åpne opp» for en ny linje etter markøren og gÃ¥ til @@ -735,7 +735,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + Leksjon 1.6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for Ã¥ legge til tekst ETTER markøren. ** @@ -758,7 +758,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls Merk: a, i og A gÃ¥r alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÃ…TE Ã… ERSTATTE PÃ… + Leksjon 1.6.3: EN ANNEN MÃ…TE Ã… ERSTATTE PÃ… ** Skriv en stor R for Ã¥ erstatte mer enn ett tegn. ** @@ -781,7 +781,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST + Leksjon 1.6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for Ã¥ kopiere tekst og p for Ã¥ lime den inn ** @@ -804,7 +804,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives Merk: Du kan ogsÃ¥ bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG + Leksjon 1.6.5: SETT VALG ** Sett et valg sÃ¥ søk eller erstatning ignorerer store/smÃ¥ bokstaver. ** @@ -827,7 +827,7 @@ Merk: For Ã¥ fjerne uthevingen av treff, skriv: :nohlsearch Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 + OPPSUMMERING AV LEKSJON 1.6 1. Trykk o for Ã¥ legge til en linje NEDENFOR markøren og gÃ¥ inn i innsettingsmodus. @@ -850,7 +850,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk 7. Legg til «no» foran valget for Ã¥ slÃ¥ det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÃ… HJELP + Leksjon 1.7.1: FÃ… HJELP ** Bruk det innebygde hjelpesystemet. ** @@ -873,7 +873,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + Leksjon 1.7.2: LAG ET OPPSTARTSSKRIPT ** SlÃ¥ pÃ¥ funksjoner i Vim ** @@ -896,7 +896,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING + Leksjon 1.7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** @@ -919,7 +919,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk MERK: Fullføring fungerer for mange kommandoer. Prøv ved Ã¥ trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 + OPPSUMMERING AV LEKSJON 1.7 1. Skriv :help eller trykk eller for Ã¥ Ã¥pne et hjelpevindu. diff --git a/runtime/tutor/tutor.nl b/runtime/tutor/tutor1.nl similarity index 92% rename from runtime/tutor/tutor.nl rename to runtime/tutor/tutor1.nl index d07cd9836e..a4c8a12775 100644 --- a/runtime/tutor/tutor.nl +++ b/runtime/tutor/tutor1.nl @@ -20,7 +20,7 @@ alleen maar doorleest, zal je de commando's niet leren! Zorg ervoor dat de toets NIET is ingedrukt en druk vaak genoeg - op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het + op de j-toets om de cursor zo te bewegen dat les 1.1.1 volledig op het scherm staat. LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties @@ -28,7 +28,7 @@ Tik deze spaties echter NIET. Ze verstoren de werking. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.1: VERPLAATS DE CURSOR + Les 1.1.1: VERPLAATS DE CURSOR ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. ** ^ @@ -42,7 +42,7 @@ 2. Druk de omlaag-toets (j) tot hij repeteert. Nu weet je hoe je de volgende les bereikt. - 3. Gebruik de omlaag-toets om naar les 1.2 te gaan. + 3. Gebruik de omlaag-toets om naar les 1.1.2 te gaan. OPMERKING: Als je twijfelt aan wat je tikte, druk om in de opdracht- modus te komen. Tik daarna het commando dat bedoeld wordt. @@ -51,7 +51,7 @@ rondbewegen, als je er eenmaal aan gewend bent. Echt waar! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.2: VIM AFSLUITEN + Les 1.1.2: VIM AFSLUITEN !! LET OP: Lees deze les goed door voordat je iets uitvoert!! @@ -70,10 +70,10 @@ lessen verder zal je leren hoe veranderingen worden opgeslagen in een bestand. - 5. Beweeg de cursor omlaag naar les 1.3. + 5. Beweeg de cursor omlaag naar les 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.3: TEKST BEWERKEN - WISSEN + Les 1.1.3: TEKST BEWERKEN - WISSEN ** Tik x om het teken onder de cursor te wissen. ** @@ -88,12 +88,12 @@ ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus. - 5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan. + 5. Nu de regel gecorrigeerd is kan je naar les 1.1.4 gaan. LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.4: TEKST BEWERKEN - INVOEGEN + Les 1.1.4: TEKST BEWERKEN - INVOEGEN ** Tik i ('insert') om tekst in te voegen. ** @@ -110,10 +110,10 @@ ---> Aan regel ontekt wat . ---> Aan deze regel ontbreekt wat tekst. - 5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst. + 5. Ga naar les 1.1.5 als je gewend bent aan het invoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.5: TEKST BEWERKEN - TOEVOEGEN + Les 1.1.5: TEKST BEWERKEN - TOEVOEGEN ** Tik A ('append') om tekst toe te voegen. ** @@ -133,18 +133,18 @@ ---> Hier ontbreekt ook w Hier ontbreekt ook wat tekst. - 5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen + 5. Ga naar les 1.1.6 als je vertrouwd bent geraakt aan het toevoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.6: EEN BESTAND EDITTEN + Les 1.1.6: EEN BESTAND EDITTEN ** Gebruik :wq om een bestand op te slaan en de editor te verlaten. ** !! LET OP: Lees deze les helemaal door voordat je een van de volgende stappen uitvoert!! - 1. Verlaat deze les zoals je in les 1.2 deed: :q! + 1. Verlaat deze les zoals je in les 1.1.2 deed: :q! Of gebruik een andere terminal als je daar de beschikking over hebt. Doe daar het volgende. @@ -163,7 +163,7 @@ 6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 1 + SAMENVATTING Les 1.1 1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen. h (links) j (omlaag) k (omhoog) l (rechts) @@ -182,10 +182,10 @@ OPMERKING: Met kom je terug in opdrachtmodus en wordt een ongewenst of gedeeltelijk uitgevoerd commando afgebroken. - Ga nu verder met les 2.1. + Ga nu verder met les 1.2.1. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.1: WIS-COMMANDO'S + Les 1.2.1: WIS-COMMANDO'S ** Tik dw ('delete word') om een woord te wissen. ** @@ -207,10 +207,10 @@ ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren. - 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2. + 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.2: MEER WIS-COMMANDO'S + Les 1.2.2: MEER WIS-COMMANDO'S ** Tik d$ om te wissen tot het einde van de regel. ** @@ -224,10 +224,10 @@ ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt. - 5. Ga naar les 2.3 voor uitleg. + 5. Ga naar les 1.2.3 voor uitleg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.3: OVER OPERATOREN EN BEWEGINGEN + Les 1.2.3: OVER OPERATOREN EN BEWEGINGEN Veel commando's die de tekst veranderen, bestaan uit een operator en een beweging. De samenstelling van een wis-commando met de operator d is: @@ -250,7 +250,7 @@ eind van de regel). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING + Les 1.2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING ** Een getal voor een beweging herhaalt het zoveel keer. ** @@ -266,10 +266,10 @@ ---> Dit is een regel met woorden waarin je heen en weer kan bewegen. - 6. Ga verder met les 2.5. + 6. Ga verder met les 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN + Les 1.2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. ** @@ -289,7 +289,7 @@ OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.6: BEWERKING VAN HELE REGELS + Les 1.2.6: BEWERKING VAN HELE REGELS ** Tik dd om een hele regel te wissen. ** @@ -313,7 +313,7 @@ ---> 7) En dat ben jij ook. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.7: HET COMMANDO HERSTEL + Les 1.2.7: HET COMMANDO HERSTEL ** u maakt het laatste commando ongedaan, U herstelt een hele regel. ** @@ -336,10 +336,10 @@ ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo. - 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2. + 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 2 + SAMENVATTING Les 1.2 1. Wis van de cursor tot het volgende woord met dw @@ -364,7 +364,7 @@ Undo de undo's met CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.1: HET COMMANDO PLAK + Les 1.3.1: HET COMMANDO PLAK ** Tik p ('put') en plak daarmee zojuist gewiste tekst na de cursor. ** @@ -384,7 +384,7 @@ ---> a) Rozen zijn rood, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.2: HET COMMANDO VERVANG + Les 1.3.2: HET COMMANDO VERVANG ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. ** @@ -399,12 +399,12 @@ ---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt. ---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt. - 5. Ga nu naar les 3.3. + 5. Ga nu naar les 1.3.3. LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.3: HET COMMANDO VERANDER + Les 1.3.3: HET COMMANDO VERANDER ** Tik ce om te veranderen tot het einde van een woord. ** @@ -425,7 +425,7 @@ in de invoegmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.4: MEER VERANDERINGEN MET c + Les 1.3.4: MEER VERANDERINGEN MET c 1. Het commando verander ('change') werkt op dezelfde manier als wis. De opbouw is: @@ -446,7 +446,7 @@ OPMERKING: Je kan de toets gebruiken om tikfouten te herstellen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 3 + SAMENVATTING Les 1.3 1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze @@ -466,7 +466,7 @@ Ga nu naar de volgende les. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND + Les 1.4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van het bestand is. Met [nummer] G ga je naar een bepaalde regel. ** @@ -492,7 +492,7 @@ 4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.2: HET COMMANDO ZOEKEN + Les 1.4.2: HET COMMANDO ZOEKEN ** Met /ZOEK wordt naar de zoekterm (één of meer woorden) gezocht. ** @@ -515,7 +515,7 @@ begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES + Les 1.4.3: GA NAAR CORRESPONDERENDE HAAKJES ** Tik % om naar corresponderende ), ] of } te gaan. ** @@ -537,7 +537,7 @@ (blijvend) verplaatst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.4: HET VERVANG COMMANDO + Les 1.4.4: HET VERVANG COMMANDO ** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. ** @@ -559,7 +559,7 @@ en te vragen of er vervangen moet worden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 4 + SAMENVATTING Les 1.4 1. CTRL-G laat positie in het bestand zien en de status van het bestand. G verplaatst je naar het einde van het bestand. @@ -583,7 +583,7 @@ ('confirmation') te vragen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD + Les 1.5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD ** Tik :! gevolgd door een extern commando om dat uit te voeren. ** @@ -604,7 +604,7 @@ Vanaf nu zullen we dat niet meer altijd vermelden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN + Les 1.5.2: MEER OVER HET OPSLAAN VAN BESTANDEN ** Tik :w BESTANDSNAAM om de tekst mèt veranderingen op te slaan. ** @@ -625,7 +625,7 @@ of (Unix) :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN + Les 1.5.3: EEN DEEL VAN DE TEKST OPSLAAN ** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM ** @@ -649,20 +649,20 @@ de tekst te doen. Met d bijvoorbeeld wis je de tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN + Les 1.5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN ** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. ** 1. Zet de cursor precies boven deze regel. - OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol + OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 1.5.3. Scrol daarna naar beneden om deze les weer te zien. 2. Haal nu het bestand TEST op met het commando :r TEST . Het bestand dat je ophaalt komt onder de regel waarin de cursor staat. 3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog. - Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit + Dan zie je de tekst van les 1.5.3 dubbel, het origineel en de versie uit het bestand. OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een @@ -670,7 +670,7 @@ ls en zet dat onder de regel waarin de cursor staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 5 + SAMENVATTING Les 1.5 1. :!COMMANDO voert een extern commando uit. Enkele bruikbare voorbeelden zijn: @@ -691,7 +691,7 @@ de cursor-positie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.1: HET COMMANDO OPEN + Les 1.6.1: HET COMMANDO OPEN ** Tik o om een regel onder de cursor te openen in invoegmodus. ** @@ -711,7 +711,7 @@ ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.2: HET COMMANDO TOEVOEGEN + Les 1.6.2: HET COMMANDO TOEVOEGEN ** Tik a om tekst toe te voegen ACHTER de cursor. ** @@ -734,7 +734,7 @@ verschil is waar tekens worden ingevoegd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.3: VERVANGEN OP EEN ANDERE MANIER + Les 1.6.3: VERVANGEN OP EEN ANDERE MANIER ** Tik een hoofdletter R om meer dan één teken te vervangen. ** @@ -756,7 +756,7 @@ vervangt een bestaand teken. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.4: TEKST KOPIËREN EN PLAKKEN + Les 1.6.4: TEKST KOPIËREN EN PLAKKEN ** Gebruik y om tekst te kopiëren en p om te plakken. ** @@ -781,7 +781,7 @@ yy een hele regel. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.5: OPTIES GEBRUIKEN + Les 1.6.5: OPTIES GEBRUIKEN ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. ** @@ -808,7 +808,7 @@ /hoofdlettergevoelig\c . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 6 + SAMENVATTING Les 1.6 1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten. Tik O om een regel te openen BOVEN de cursor. @@ -832,7 +832,7 @@ schakelt 'ic' uit. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 7.1: HULP INROEPEN + Les 1.7.1: HULP INROEPEN ** Het gebruik van ingebouwde hulp. ** @@ -854,7 +854,7 @@ :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND + Les 1.7.2: SCHRIJF EEN CONFIGURATIEBESTAND ** Mogelijkheden van Vim uitbreiden. ** @@ -876,7 +876,7 @@ Tik :help vimrc-intro voor meer informatie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 7.3: AANVULLEN + Les 1.7.3: AANVULLEN ** Aanvullen van de 'command line' met CTRL-D en . ** @@ -900,7 +900,7 @@ en . Het is bijzonder nuttig bij :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 7 + SAMENVATTING Les 1.7 1. Tik :help of druk of om een help-venster te openen. diff --git a/runtime/tutor/tutor.nl.utf-8 b/runtime/tutor/tutor1.nl.utf-8 similarity index 92% rename from runtime/tutor/tutor.nl.utf-8 rename to runtime/tutor/tutor1.nl.utf-8 index d6a1c7f1e1..a5893241e7 100644 --- a/runtime/tutor/tutor.nl.utf-8 +++ b/runtime/tutor/tutor1.nl.utf-8 @@ -20,7 +20,7 @@ alleen maar doorleest, zal je de commando's niet leren! Zorg ervoor dat de toets NIET is ingedrukt en druk vaak genoeg - op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het + op de j-toets om de cursor zo te bewegen dat les 1.1.1 volledig op het scherm staat. LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties @@ -28,7 +28,7 @@ Tik deze spaties echter NIET. Ze verstoren de werking. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.1: VERPLAATS DE CURSOR + Les 1.1.1: VERPLAATS DE CURSOR ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. ** ^ @@ -42,7 +42,7 @@ 2. Druk de omlaag-toets (j) tot hij repeteert. Nu weet je hoe je de volgende les bereikt. - 3. Gebruik de omlaag-toets om naar les 1.2 te gaan. + 3. Gebruik de omlaag-toets om naar les 1.1.2 te gaan. OPMERKING: Als je twijfelt aan wat je tikte, druk om in de opdracht- modus te komen. Tik daarna het commando dat bedoeld wordt. @@ -51,7 +51,7 @@ rondbewegen, als je er eenmaal aan gewend bent. Echt waar! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.2: VIM AFSLUITEN + Les 1.1.2: VIM AFSLUITEN !! LET OP: Lees deze les goed door voordat je iets uitvoert!! @@ -70,10 +70,10 @@ lessen verder zal je leren hoe veranderingen worden opgeslagen in een bestand. - 5. Beweeg de cursor omlaag naar les 1.3. + 5. Beweeg de cursor omlaag naar les 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.3: TEKST BEWERKEN - WISSEN + Les 1.1.3: TEKST BEWERKEN - WISSEN ** Tik x om het teken onder de cursor te wissen. ** @@ -88,12 +88,12 @@ ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus. - 5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan. + 5. Nu de regel gecorrigeerd is kan je naar les 1.1.4 gaan. LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.4: TEKST BEWERKEN - INVOEGEN + Les 1.1.4: TEKST BEWERKEN - INVOEGEN ** Tik i ('insert') om tekst in te voegen. ** @@ -110,10 +110,10 @@ ---> Aan regel ontekt wat . ---> Aan deze regel ontbreekt wat tekst. - 5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst. + 5. Ga naar les 1.1.5 als je gewend bent aan het invoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.5: TEKST BEWERKEN - TOEVOEGEN + Les 1.1.5: TEKST BEWERKEN - TOEVOEGEN ** Tik A ('append') om tekst toe te voegen. ** @@ -133,18 +133,18 @@ ---> Hier ontbreekt ook w Hier ontbreekt ook wat tekst. - 5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen + 5. Ga naar les 1.1.6 als je vertrouwd bent geraakt aan het toevoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 1.6: EEN BESTAND EDITTEN + Les 1.1.6: EEN BESTAND EDITTEN ** Gebruik :wq om een bestand op te slaan en de editor te verlaten. ** !! LET OP: Lees deze les helemaal door voordat je een van de volgende stappen uitvoert!! - 1. Verlaat deze les zoals je in les 1.2 deed: :q! + 1. Verlaat deze les zoals je in les 1.1.2 deed: :q! Of gebruik een andere terminal als je daar de beschikking over hebt. Doe daar het volgende. @@ -163,7 +163,7 @@ 6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 1 + SAMENVATTING Les 1.1 1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen. h (links) j (omlaag) k (omhoog) l (rechts) @@ -182,10 +182,10 @@ OPMERKING: Met kom je terug in opdrachtmodus en wordt een ongewenst of gedeeltelijk uitgevoerd commando afgebroken. - Ga nu verder met les 2.1. + Ga nu verder met les 1.2.1. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.1: WIS-COMMANDO'S + Les 1.2.1: WIS-COMMANDO'S ** Tik dw ('delete word') om een woord te wissen. ** @@ -207,10 +207,10 @@ ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren. - 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2. + 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.2: MEER WIS-COMMANDO'S + Les 1.2.2: MEER WIS-COMMANDO'S ** Tik d$ om te wissen tot het einde van de regel. ** @@ -224,10 +224,10 @@ ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt. - 5. Ga naar les 2.3 voor uitleg. + 5. Ga naar les 1.2.3 voor uitleg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.3: OVER OPERATOREN EN BEWEGINGEN + Les 1.2.3: OVER OPERATOREN EN BEWEGINGEN Veel commando's die de tekst veranderen, bestaan uit een operator en een beweging. De samenstelling van een wis-commando met de operator d is: @@ -250,7 +250,7 @@ eind van de regel). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING + Les 1.2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING ** Een getal voor een beweging herhaalt het zoveel keer. ** @@ -266,10 +266,10 @@ ---> Dit is een regel met woorden waarin je heen en weer kan bewegen. - 6. Ga verder met les 2.5. + 6. Ga verder met les 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN + Les 1.2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. ** @@ -289,7 +289,7 @@ OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.6: BEWERKING VAN HELE REGELS + Les 1.2.6: BEWERKING VAN HELE REGELS ** Tik dd om een hele regel te wissen. ** @@ -313,7 +313,7 @@ ---> 7) En dat ben jij ook. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 2.7: HET COMMANDO HERSTEL + Les 1.2.7: HET COMMANDO HERSTEL ** u maakt het laatste commando ongedaan, U herstelt een hele regel. ** @@ -336,10 +336,10 @@ ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo. - 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2. + 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 2 + SAMENVATTING Les 1.2 1. Wis van de cursor tot het volgende woord met dw @@ -364,7 +364,7 @@ Undo de undo's met CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.1: HET COMMANDO PLAK + Les 1.3.1: HET COMMANDO PLAK ** Tik p ('put') en plak daarmee zojuist gewiste tekst na de cursor. ** @@ -384,7 +384,7 @@ ---> a) Rozen zijn rood, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.2: HET COMMANDO VERVANG + Les 1.3.2: HET COMMANDO VERVANG ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. ** @@ -399,12 +399,12 @@ ---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt. ---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt. - 5. Ga nu naar les 3.3. + 5. Ga nu naar les 1.3.3. LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.3: HET COMMANDO VERANDER + Les 1.3.3: HET COMMANDO VERANDER ** Tik ce om te veranderen tot het einde van een woord. ** @@ -425,7 +425,7 @@ in de invoegmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 3.4: MEER VERANDERINGEN MET c + Les 1.3.4: MEER VERANDERINGEN MET c 1. Het commando verander ('change') werkt op dezelfde manier als wis. De opbouw is: @@ -446,7 +446,7 @@ OPMERKING: Je kan de toets gebruiken om tikfouten te herstellen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 3 + SAMENVATTING Les 1.3 1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze @@ -466,7 +466,7 @@ Ga nu naar de volgende les. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND + Les 1.4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van het bestand is. Met [nummer] G ga je naar een bepaalde regel. ** @@ -492,7 +492,7 @@ 4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.2: HET COMMANDO ZOEKEN + Les 1.4.2: HET COMMANDO ZOEKEN ** Met /ZOEK wordt naar de zoekterm (één of meer woorden) gezocht. ** @@ -515,7 +515,7 @@ begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES + Les 1.4.3: GA NAAR CORRESPONDERENDE HAAKJES ** Tik % om naar corresponderende ), ] of } te gaan. ** @@ -537,7 +537,7 @@ (blijvend) verplaatst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 4.4: HET VERVANG COMMANDO + Les 1.4.4: HET VERVANG COMMANDO ** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. ** @@ -559,7 +559,7 @@ en te vragen of er vervangen moet worden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 4 + SAMENVATTING Les 1.4 1. CTRL-G laat positie in het bestand zien en de status van het bestand. G verplaatst je naar het einde van het bestand. @@ -583,7 +583,7 @@ ('confirmation') te vragen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD + Les 1.5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD ** Tik :! gevolgd door een extern commando om dat uit te voeren. ** @@ -604,7 +604,7 @@ Vanaf nu zullen we dat niet meer altijd vermelden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN + Les 1.5.2: MEER OVER HET OPSLAAN VAN BESTANDEN ** Tik :w BESTANDSNAAM om de tekst mèt veranderingen op te slaan. ** @@ -625,7 +625,7 @@ of (Unix) :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN + Les 1.5.3: EEN DEEL VAN DE TEKST OPSLAAN ** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM ** @@ -649,20 +649,20 @@ de tekst te doen. Met d bijvoorbeeld wis je de tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN + Les 1.5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN ** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. ** 1. Zet de cursor precies boven deze regel. - OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol + OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 1.5.3. Scrol daarna naar beneden om deze les weer te zien. 2. Haal nu het bestand TEST op met het commando :r TEST . Het bestand dat je ophaalt komt onder de regel waarin de cursor staat. 3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog. - Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit + Dan zie je de tekst van les 1.5.3 dubbel, het origineel en de versie uit het bestand. OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een @@ -670,7 +670,7 @@ ls en zet dat onder de regel waarin de cursor staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 5 + SAMENVATTING Les 1.5 1. :!COMMANDO voert een extern commando uit. Enkele bruikbare voorbeelden zijn: @@ -691,7 +691,7 @@ de cursor-positie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.1: HET COMMANDO OPEN + Les 1.6.1: HET COMMANDO OPEN ** Tik o om een regel onder de cursor te openen in invoegmodus. ** @@ -711,7 +711,7 @@ ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.2: HET COMMANDO TOEVOEGEN + Les 1.6.2: HET COMMANDO TOEVOEGEN ** Tik a om tekst toe te voegen ACHTER de cursor. ** @@ -734,7 +734,7 @@ verschil is waar tekens worden ingevoegd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.3: VERVANGEN OP EEN ANDERE MANIER + Les 1.6.3: VERVANGEN OP EEN ANDERE MANIER ** Tik een hoofdletter R om meer dan één teken te vervangen. ** @@ -756,7 +756,7 @@ vervangt een bestaand teken. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.4: TEKST KOPIËREN EN PLAKKEN + Les 1.6.4: TEKST KOPIËREN EN PLAKKEN ** Gebruik y om tekst te kopiëren en p om te plakken. ** @@ -781,7 +781,7 @@ yy een hele regel. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 6.5: OPTIES GEBRUIKEN + Les 1.6.5: OPTIES GEBRUIKEN ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. ** @@ -808,7 +808,7 @@ /hoofdlettergevoelig\c . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 6 + SAMENVATTING Les 1.6 1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten. Tik O om een regel te openen BOVEN de cursor. @@ -832,7 +832,7 @@ schakelt 'ic' uit. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 7.1: HULP INROEPEN + Les 1.7.1: HULP INROEPEN ** Het gebruik van ingebouwde hulp. ** @@ -854,7 +854,7 @@ :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND + Les 1.7.2: SCHRIJF EEN CONFIGURATIEBESTAND ** Mogelijkheden van Vim uitbreiden. ** @@ -876,7 +876,7 @@ Tik :help vimrc-intro voor meer informatie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Les 7.3: AANVULLEN + Les 1.7.3: AANVULLEN ** Aanvullen van de 'command line' met CTRL-D en . ** @@ -900,7 +900,7 @@ en . Het is bijzonder nuttig bij :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - SAMENVATTING Les 7 + SAMENVATTING Les 1.7 1. Tik :help of druk of om een help-venster te openen. diff --git a/runtime/tutor/tutor.nb b/runtime/tutor/tutor1.no similarity index 93% rename from runtime/tutor/tutor.nb rename to runtime/tutor/tutor1.no index 9eb6dfa93a..a6be694792 100644 --- a/runtime/tutor/tutor.nb +++ b/runtime/tutor/tutor1.no @@ -20,9 +20,9 @@ Hvis du bare leser teksten, vil du glemme kommandoene! Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - å flytte markøren helt til leksjon 1.1 fyller skjermen. + å flytte markøren helt til leksjon 1.1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN + Leksjon 1.1.1: FLYTTING AV MARKØREN ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** @@ -36,7 +36,7 @@ 2. Hold inne nedovertasten (j) til den repeterer. Nå vet du hvordan du beveger deg til neste leksjon. - 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + 3. Gå til leksjon 1.1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til normalmodus. Skriv deretter kommandoen du ønsket på nytt. @@ -45,7 +45,7 @@ Merk: Piltastene skal ogs å bevege markøren mye raskere når du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM + Leksjon 1.1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! @@ -64,11 +64,11 @@ Merk: Piltastene skal ogs MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen få leksjoner vil du lære hvordan du lagrer forandringene til en fil. - 5. Flytt markøren ned til leksjon 1.3. + 5. Flytt markøren ned til leksjon 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + Leksjon 1.1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for å slette tegnet under markøren. ** @@ -85,13 +85,13 @@ MERK: :q! forkaster alle forandringer som du gjorde. I l ---> Hessstennnn brrråsnudddde ii gaaata. ---> Hesten bråsnudde i gata. - 5. Nå som linjen er korrekt, gå til leksjon 1.4. + 5. Nå som linjen er korrekt, gå til leksjon 1.1.4. MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + Leksjon 1.1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for å sette inn tekst. ** @@ -114,7 +114,7 @@ MERK: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + Leksjon 1.1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for å legge til tekst. ** @@ -134,17 +134,17 @@ MERK: N ---> Det mangler også litt tek Det mangler også litt tekst på denne linjen. - 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL + Leksjon 1.1.6: REDIGERE EN FIL ** Bruk :wq for å lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + 1. Avslutt denne innføringen som du gjorde i leksjon 1.1.2: :q! 2. Skriv denne kommandoen på kommandolinja: vim tutor «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila @@ -160,7 +160,7 @@ MERK: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 + OPPSUMMERING AV LEKSJON 1.1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. @@ -180,10 +180,10 @@ MERK: N MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. - Nå kan du gå videre til leksjon 2. + Nå kan du gå videre til leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER + Leksjon 1.2.1: SLETTEKOMMANDOER ** Trykk dw for å slette et ord. ** @@ -204,9 +204,9 @@ MERK: Bokstaven d vil komme til syne p ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå - deretter til leksjon 2.2. + deretter til leksjon 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER + Leksjon 1.2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for å slette til slutten av linjen. ** @@ -221,7 +221,7 @@ MERK: Bokstaven d vil komme til syne p ---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. - 5. Gå til leksjon 2.3 for å forstå hva som skjer. + 5. Gå til leksjon 1.2.3 for å forstå hva som skjer. @@ -229,7 +229,7 @@ MERK: Bokstaven d vil komme til syne p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER + Leksjon 1.2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en @@ -252,7 +252,7 @@ MERK: Bokstaven d vil komme til syne p MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + LEKSJON 1.2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** @@ -270,12 +270,12 @@ MERK: Ved ---> Dette er en linje med noen ord som du kan bevege deg rundt på. - 6. Gå videre til leksjon 2.5. + 6. Gå videre til leksjon 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + Leksjon 1.2.5: BRUK AV ANTALL FOR Å SLETTE MER ** Et tall sammen med en operator repeterer den så mange ganger. ** @@ -298,7 +298,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÅ LINJER + Leksjon 1.2.6: OPERERE PÅ LINJER ** Trykk dd for å slette en hel linje. ** @@ -321,7 +321,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN + Leksjon 1.2.7: ANGRE-KOMMANDOEN ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** @@ -340,11 +340,11 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av - leksjon 2. + leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 + OPPSUMMERING AV LEKSJON 1.2 1. For å slette fra markøren fram til det neste ordet, trykk: dw @@ -367,7 +367,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p For å omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN + Leksjon 1.3.1: «LIM INN»-KOMMANDOEN ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** @@ -390,7 +390,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN + Leksjon 1.3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for å erstatte tegnet under markøren med x. ** @@ -406,14 +406,14 @@ MERK: Et antall mellom operatoren d og bevegelsen virker p ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! - 5. Gå videre til leksjon 3.2. + 5. Gå videre til leksjon 1.3.2. MERK: Husk at du bør lære ved å BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN + Leksjon 1.3.3: «FORANDRE»-OPERATOREN ** For å forandre til slutten av et ord, trykk ce . ** @@ -436,7 +436,7 @@ V ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + Leksjon 1.3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** @@ -459,7 +459,7 @@ V MERK: Du kan bruke slettetasten for å rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 + OPPSUMMERING AV LEKSJON 1.3 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette @@ -482,7 +482,7 @@ N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + Leksjon 1.4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. Trykk G for å gå til en spesifikk linje i filen. ** @@ -505,7 +505,7 @@ Merk: Du kan se mark 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN + Leksjon 1.4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** @@ -528,7 +528,7 @@ Merk: Du kan se mark Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER + Leksjon 1.4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for å finne en samsvarende ), ] eller } . ** @@ -551,7 +551,7 @@ Merk: Dette er veldig nyttig til feils ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN + Leksjon 1.4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** @@ -574,7 +574,7 @@ Merk: Dette er veldig nyttig til feils deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 + OPPSUMMERING AV LEKSJON 1.4 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. @@ -597,7 +597,7 @@ Merk: Dette er veldig nyttig til feils Erstatte alle forekomster i en fil: :%s/gammel/ny/g For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + Leksjon 1.5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** @@ -620,7 +620,7 @@ MERK: Alle ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER + Leksjon 1.5.2: MER OM LAGRING AV FILER ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** @@ -643,7 +643,7 @@ Merk: Hvis du n operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + Leksjon 1.5.3: VELGE TEKST SOM SKAL LAGRES ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** @@ -666,21 +666,21 @@ MERK: Ved operator for å gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + Leksjon 1.5.4: HENTING OG SAMMENSLÅING AV FILER ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. -MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 1.5.3. Gå deretter NED for å se denne leksjonen igjen. 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. + leksjon 1.5.3, originalen og denne versjonen. MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. @@ -689,7 +689,7 @@ MERK: Du kan ogs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 + OPPSUMMERING AV LEKSJON 1.5 1. :!kommando utfører en ekstern kommandio. @@ -712,7 +712,7 @@ MERK: Du kan ogs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + Leksjon 1.6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til @@ -735,7 +735,7 @@ MERK: Du kan ogs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + Leksjon 1.6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for å legge til tekst ETTER markøren. ** @@ -758,7 +758,7 @@ MERK: Du kan ogs Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + Leksjon 1.6.3: EN ANNEN MÅTE Å ERSTATTE PÅ ** Skriv en stor R for å erstatte mer enn ett tegn. ** @@ -781,7 +781,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST + Leksjon 1.6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** @@ -804,7 +804,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives Merk: Du kan også bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG + Leksjon 1.6.5: SETT VALG ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** @@ -827,7 +827,7 @@ Merk: For Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 + OPPSUMMERING AV LEKSJON 1.6 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i innsettingsmodus. @@ -850,7 +850,7 @@ Merk: Hvis du vil ignorere store/sm 7. Legg til «no» foran valget for å slå det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÅ HJELP + Leksjon 1.7.1: FÅ HJELP ** Bruk det innebygde hjelpesystemet. ** @@ -873,7 +873,7 @@ Merk: Hvis du vil ignorere store/sm :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + Leksjon 1.7.2: LAG ET OPPSTARTSSKRIPT ** Slå på funksjoner i Vim ** @@ -896,7 +896,7 @@ Merk: Hvis du vil ignorere store/sm alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING + Leksjon 1.7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** @@ -919,7 +919,7 @@ Merk: Hvis du vil ignorere store/sm MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 + OPPSUMMERING AV LEKSJON 1.7 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. diff --git a/runtime/tutor/tutor.nb.utf-8 b/runtime/tutor/tutor1.no.utf-8 similarity index 93% rename from runtime/tutor/tutor.nb.utf-8 rename to runtime/tutor/tutor1.no.utf-8 index 6a8a4e9463..4459f17b66 100644 --- a/runtime/tutor/tutor.nb.utf-8 +++ b/runtime/tutor/tutor1.no.utf-8 @@ -20,9 +20,9 @@ Hvis du bare leser teksten, vil du glemme kommandoene! Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - Ã¥ flytte markøren helt til leksjon 1.1 fyller skjermen. + Ã¥ flytte markøren helt til leksjon 1.1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN + Leksjon 1.1.1: FLYTTING AV MARKØREN ** For Ã¥ flytte markøren, trykk tastene h, j, k, l som vist. ** @@ -36,7 +36,7 @@ 2. Hold inne nedovertasten (j) til den repeterer. NÃ¥ vet du hvordan du beveger deg til neste leksjon. - 3. GÃ¥ til leksjon 1.2 ved hjelp av nedovertasten. + 3. GÃ¥ til leksjon 1.1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker pÃ¥ noe du har skrevet, trykk for Ã¥ gÃ¥ til normalmodus. Skriv deretter kommandoen du ønsket pÃ¥ nytt. @@ -45,7 +45,7 @@ Merk: Piltastene skal ogsÃ¥ virke. Men ved Ã¥ bruke hjkl vil du være i stand ti Ã¥ bevege markøren mye raskere nÃ¥r du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM + Leksjon 1.1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! @@ -64,11 +64,11 @@ Merk: Piltastene skal ogsÃ¥ virke. Men ved Ã¥ bruke hjkl vil du være i stand ti MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen fÃ¥ leksjoner vil du lære hvordan du lagrer forandringene til en fil. - 5. Flytt markøren ned til leksjon 1.3. + 5. Flytt markøren ned til leksjon 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + Leksjon 1.1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for Ã¥ slette tegnet under markøren. ** @@ -85,13 +85,13 @@ MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen ---> Hessstennnn brrrÃ¥snudddde ii gaaata. ---> Hesten brÃ¥snudde i gata. - 5. NÃ¥ som linjen er korrekt, gÃ¥ til leksjon 1.4. + 5. NÃ¥ som linjen er korrekt, gÃ¥ til leksjon 1.1.4. MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + Leksjon 1.1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for Ã¥ sette inn tekst. ** @@ -114,7 +114,7 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + Leksjon 1.1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for Ã¥ legge til tekst. ** @@ -134,17 +134,17 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m ---> Det mangler ogsÃ¥ litt tek Det mangler ogsÃ¥ litt tekst pÃ¥ denne linjen. - 5. NÃ¥r du føler at du behersker Ã¥ legge til tekst, gÃ¥ til leksjon 1.6. + 5. NÃ¥r du føler at du behersker Ã¥ legge til tekst, gÃ¥ til leksjon 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL + Leksjon 1.1.6: REDIGERE EN FIL ** Bruk :wq for Ã¥ lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + 1. Avslutt denne innføringen som du gjorde i leksjon 1.1.2: :q! 2. Skriv denne kommandoen pÃ¥ kommandolinja: vim tutor «vim» er kommandoen for Ã¥ starte Vim-editoren, «tutor» er navnet pÃ¥ fila @@ -160,7 +160,7 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 + OPPSUMMERING AV LEKSJON 1.1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. @@ -180,10 +180,10 @@ MERK: NÃ¥r du gÃ¥r gjennom innføringen, ikke bare prøv Ã¥ huske kommandoene, m MERK: NÃ¥r du trykker gÃ¥r du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. - NÃ¥ kan du gÃ¥ videre til leksjon 2. + NÃ¥ kan du gÃ¥ videre til leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER + Leksjon 1.2.1: SLETTEKOMMANDOER ** Trykk dw for Ã¥ slette et ord. ** @@ -204,9 +204,9 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. GÃ¥ - deretter til leksjon 2.2. + deretter til leksjon 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER + Leksjon 1.2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for Ã¥ slette til slutten av linjen. ** @@ -221,7 +221,7 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r ---> Noen skrev slutten pÃ¥ linjen en gang for mye. linjen en gang for mye. - 5. GÃ¥ til leksjon 2.3 for Ã¥ forstÃ¥ hva som skjer. + 5. GÃ¥ til leksjon 1.2.3 for Ã¥ forstÃ¥ hva som skjer. @@ -229,7 +229,7 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER + Leksjon 1.2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en @@ -252,7 +252,7 @@ MERK: Bokstaven d vil komme til syne pÃ¥ den nederste linjen pÃ¥ skjermen nÃ¥r MERK: Ved Ã¥ skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + LEKSJON 1.2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved Ã¥ skrive et tall foran en bevegelse repeterer den sÃ¥ mange ganger. ** @@ -270,12 +270,12 @@ MERK: Ved Ã¥ skrive kun bevegelsen i normalmodusen uten en operator vil ---> Dette er en linje med noen ord som du kan bevege deg rundt pÃ¥. - 6. GÃ¥ videre til leksjon 2.5. + 6. GÃ¥ videre til leksjon 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Ã… SLETTE MER + Leksjon 1.2.5: BRUK AV ANTALL FOR Ã… SLETTE MER ** Et tall sammen med en operator repeterer den sÃ¥ mange ganger. ** @@ -298,7 +298,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÃ… LINJER + Leksjon 1.2.6: OPERERE PÃ… LINJER ** Trykk dd for Ã¥ slette en hel linje. ** @@ -321,7 +321,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN + Leksjon 1.2.7: ANGRE-KOMMANDOEN ** Trykk u for Ã¥ angre siste kommando, U for Ã¥ fikse en hel linje. ** @@ -340,11 +340,11 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. NÃ¥ kan du gÃ¥ til oppsummeringen av - leksjon 2. + leksjon 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 + OPPSUMMERING AV LEKSJON 1.2 1. For Ã¥ slette fra markøren fram til det neste ordet, trykk: dw @@ -367,7 +367,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som For Ã¥ omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN + Leksjon 1.3.1: «LIM INN»-KOMMANDOEN ** Trykk p for Ã¥ lime inn tidligere slettet tekst etter markøren ** @@ -390,7 +390,7 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN + Leksjon 1.3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for Ã¥ erstatte tegnet under markøren med x. ** @@ -406,14 +406,14 @@ MERK: Et antall mellom operatoren d og bevegelsen virker pÃ¥ samme mÃ¥te som ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! - 5. GÃ¥ videre til leksjon 3.2. + 5. GÃ¥ videre til leksjon 1.3.2. MERK: Husk at du bør lære ved Ã¥ BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN + Leksjon 1.3.3: «FORANDRE»-OPERATOREN ** For Ã¥ forandre til slutten av et ord, trykk ce . ** @@ -436,7 +436,7 @@ Vær oppmerksom pÃ¥ at ce sletter ordet og gÃ¥r inn i innsettingsmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + Leksjon 1.3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** @@ -459,7 +459,7 @@ Vær oppmerksom pÃ¥ at ce sletter ordet og gÃ¥r inn i innsettingsmodus. MERK: Du kan bruke slettetasten for Ã¥ rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 + OPPSUMMERING AV LEKSJON 1.3 1. For Ã¥ legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette @@ -482,7 +482,7 @@ NÃ¥ kan du gÃ¥ til neste leksjon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + Leksjon 1.4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for Ã¥ vise posisjonen i filen og filstatusen. Trykk G for Ã¥ gÃ¥ til en spesifikk linje i filen. ** @@ -505,7 +505,7 @@ Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette 4. Utfør steg 1 til 3 hvis du føler deg sikker pÃ¥ prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN + Leksjon 1.4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** @@ -528,7 +528,7 @@ Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette Merk: NÃ¥r søkingen nÃ¥r slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER + Leksjon 1.4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for Ã¥ finne en samsvarende ), ] eller } . ** @@ -551,7 +551,7 @@ Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN + Leksjon 1.4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for Ã¥ erstatte «gammel» med «ny». ** @@ -574,7 +574,7 @@ Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 + OPPSUMMERING AV LEKSJON 1.4 1. Ctrl-G viser nÃ¥værende posisjon i filen og filstatusen. @@ -597,7 +597,7 @@ Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert Erstatte alle forekomster i en fil: :%s/gammel/ny/g For Ã¥ godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + Leksjon 1.5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for Ã¥ utføre denne. ** @@ -620,7 +620,7 @@ MERK: Alle «:»-kommandoer mÃ¥ avsluttes med . Fra dette punktet er det ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER + Leksjon 1.5.2: MER OM LAGRING AV FILER ** For Ã¥ lagre endringene gjort i en tekst, skriv :w FILNAVN. ** @@ -643,7 +643,7 @@ Merk: Hvis du nÃ¥ hadde avsluttet Vim og startet pÃ¥ nytt igjen med «vim TEST» operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + Leksjon 1.5.3: VELGE TEKST SOM SKAL LAGRES ** For Ã¥ lagre en del av en fil, skriv v bevegelse :w FILNAVN ** @@ -666,21 +666,21 @@ MERK: Ved Ã¥ trykke v startes visuelt valg. Du kan flytte markøren rundt for operator for Ã¥ gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÃ…ING AV FILER + Leksjon 1.5.4: HENTING OG SAMMENSLÃ…ING AV FILER ** For Ã¥ lese inn en annen fil inn i nÃ¥værende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. -MERK: Etter Ã¥ ha utført steg 2 vil du se teksten fra leksjon 5.3. GÃ¥ deretter +MERK: Etter Ã¥ ha utført steg 2 vil du se teksten fra leksjon 1.5.3. GÃ¥ deretter NED for Ã¥ se denne leksjonen igjen. 2. Hent TEST-filen ved Ã¥ bruke kommandoen :r TEST der TEST er navnet pÃ¥ filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For Ã¥ sjekke at filen ble hentet, gÃ¥ tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. + leksjon 1.5.3, originalen og denne versjonen. MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. @@ -689,7 +689,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 + OPPSUMMERING AV LEKSJON 1.5 1. :!kommando utfører en ekstern kommandio. @@ -712,7 +712,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + Leksjon 1.6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for Ã¥ «åpne opp» for en ny linje etter markøren og gÃ¥ til @@ -735,7 +735,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + Leksjon 1.6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for Ã¥ legge til tekst ETTER markøren. ** @@ -758,7 +758,7 @@ MERK: Du kan ogsÃ¥ lese utdataene av en ekstern kommando. For eksempel, :r !ls Merk: a, i og A gÃ¥r alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÃ…TE Ã… ERSTATTE PÃ… + Leksjon 1.6.3: EN ANNEN MÃ…TE Ã… ERSTATTE PÃ… ** Skriv en stor R for Ã¥ erstatte mer enn ett tegn. ** @@ -781,7 +781,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST + Leksjon 1.6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for Ã¥ kopiere tekst og p for Ã¥ lime den inn ** @@ -804,7 +804,7 @@ MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives Merk: Du kan ogsÃ¥ bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG + Leksjon 1.6.5: SETT VALG ** Sett et valg sÃ¥ søk eller erstatning ignorerer store/smÃ¥ bokstaver. ** @@ -827,7 +827,7 @@ Merk: For Ã¥ fjerne uthevingen av treff, skriv: :nohlsearch Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 + OPPSUMMERING AV LEKSJON 1.6 1. Trykk o for Ã¥ legge til en linje NEDENFOR markøren og gÃ¥ inn i innsettingsmodus. @@ -850,7 +850,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk 7. Legg til «no» foran valget for Ã¥ slÃ¥ det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÃ… HJELP + Leksjon 1.7.1: FÃ… HJELP ** Bruk det innebygde hjelpesystemet. ** @@ -873,7 +873,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + Leksjon 1.7.2: LAG ET OPPSTARTSSKRIPT ** SlÃ¥ pÃ¥ funksjoner i Vim ** @@ -896,7 +896,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING + Leksjon 1.7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** @@ -919,7 +919,7 @@ Merk: Hvis du vil ignorere store/smÃ¥ bokstaver for kun en søkekommando, bruk MERK: Fullføring fungerer for mange kommandoer. Prøv ved Ã¥ trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 + OPPSUMMERING AV LEKSJON 1.7 1. Skriv :help eller trykk eller for Ã¥ Ã¥pne et hjelpevindu. diff --git a/runtime/tutor/tutor.pl b/runtime/tutor/tutor1.pl similarity index 92% rename from runtime/tutor/tutor.pl rename to runtime/tutor/tutor1.pl index e683431568..5d75bdeac7 100644 --- a/runtime/tutor/tutor.pl +++ b/runtime/tutor/tutor1.pl @@ -21,10 +21,10 @@ poleceñ! Teraz upewnij siê, ¿e nie masz wci¶niêtego Caps Locka i wciskaj j - tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu. + tak d³ugo dopóki Lekcja 1.1.1. nie wype³ni ca³kowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.1.: PORUSZANIE SIÊ KURSOREM + Lekcja 1.1.1.: PORUSZANIE SIÊ KURSOREM ** By wykonaæ ruch kursorem, wci¶nij h, j, k, l jak pokazano. ** @@ -48,7 +48,7 @@ Naprawdê! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.2.: WYCHODZENIE Z VIM-a + Lekcja 1.1.2.: WYCHODZENIE Z VIM-a !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca³± lekcjê !! @@ -67,11 +67,11 @@ UWAGA: :q! porzuca wszelkie zmiany jakie zrobi³e¶. W nastêpnych lekcjach dowiesz siê jak je zapamiêtywaæ. - 5. Przenie¶ kursor do lekcji 1.3. + 5. Przenie¶ kursor do lekcji 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE + Lekcja 1.1.3.: EDYCJA TEKSTU - KASOWANIE ** Wci¶nij x aby usun±æ znak pod kursorem. ** @@ -85,7 +85,7 @@ ---> Kkrowa prrzeskoczy³a prrzez ksiiê¿ycc. - 5. Teraz, kiedy zdanie jest poprawione, przejd¼ do Lekcji 1.4. + 5. Teraz, kiedy zdanie jest poprawione, przejd¼ do Lekcji 1.1.4. UWAGA: Ucz siê przez æwiczenie, nie wkuwanie. @@ -94,7 +94,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) + Lekcja 1.1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) ** Wci¶nij i aby wstawiæ tekst. ** @@ -117,7 +117,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) + Lekcja 1.1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) ** Wci¶nij A by dodaæ tekst. ** @@ -137,16 +137,16 @@ ---> Tu te¿ trochê bra Tu te¿ trochê brakuje. - 5. Kiedy ju¿ utrwali³e¶ æwiczenie, przejd¼ do lekcji 1.6. + 5. Kiedy ju¿ utrwali³e¶ æwiczenie, przejd¼ do lekcji 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.6.: EDYCJA PLIKU + Lekcja 1.1.6.: EDYCJA PLIKU ** U¿yj :wq aby zapisaæ plik i wyj¶æ. ** !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca³± lekcjê !! - 1. Zakoñcz tutorial tak jak w lekcji 1.2.: :q! + 1. Zakoñcz tutorial tak jak w lekcji 1.1.2.: :q! lub, je¶li masz dostêp do innego terminala, wykonaj kolejne kroki tam. 2. W pow³oce wydaj polecenie: vim tutor @@ -163,7 +163,7 @@ 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 1. PODSUMOWANIE + LEKCJA 1.1. PODSUMOWANIE 1. Poruszasz kursorem u¿ywaj±c "strza³ek" i klawiszy hjkl . h (w lewo) j (w dó³) k (do góry) l (w prawo) @@ -184,9 +184,9 @@ UWAGA: Wci¶niêcie przeniesie Ciê z powrotem do trybu Normal lub odwo³a niechciane lub czê¶ciowo wprowadzone polecenia. -Teraz mo¿emy kontynuowaæ i przej¶æ do Lekcji 2. +Teraz mo¿emy kontynuowaæ i przej¶æ do Lekcji 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.1.: POLECENIE DELETE (usuwanie) + Lekcja 1.2.1.: POLECENIE DELETE (usuwanie) ** Wpisz dw by usun±æ wyraz. ** @@ -206,10 +206,10 @@ ---> Jest tu parê papier wyrazów, które kamieñ nie nale¿± do no¿yce tego zdania. 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie bêdzie poprawne, potem - przejd¼ do Lekcji 2.2. + przejd¼ do Lekcji 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.2.: WIÊCEJ POLECEÑ USUWAJ¡CYCH + Lekcja 1.2.2.: WIÊCEJ POLECEÑ USUWAJ¡CYCH ** Wpisz d$ aby usun±æ tekst do koñca linii. ** @@ -225,14 +225,14 @@ ---> Kto¶ wpisa³ koniec tego zdania dwukrotnie. zdania dwukrotnie. - 5. Przejd¼ do Lekcji 2.3., by zrozumieæ co siê sta³o. + 5. Przejd¼ do Lekcji 1.2.3., by zrozumieæ co siê sta³o. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.3.: O OPERATORACH I RUCHACH + Lekcja 1.2.3.: O OPERATORACH I RUCHACH Wiele poleceñ zmieniaj±cych tekst jest z³o¿onych z operatora i ruchu. @@ -255,7 +255,7 @@ tak, jak to okre¶lono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.4.: U¯YCIE MNO¯NIKA DLA RUCHU + Lekcja 1.2.4.: U¯YCIE MNO¯NIKA DLA RUCHU ** Wpisanie liczby przed ruchem powtarza ruch odpowiedni± ilo¶æ razy. ** @@ -273,12 +273,12 @@ ---> To jest zwyk³y wiersz z wyrazami, po których mo¿esz siê poruszaæ. - 6. Przejd¼ do lekcji 2.5. + 6. Przejd¼ do lekcji 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.5.: U¯YCIE MNO¯NIKA, BY WIÊCEJ USUN¡Æ + Lekcja 1.2.5.: U¯YCIE MNO¯NIKA, BY WIÊCEJ USUN¡Æ ** Wpisanie liczby z operatorem powtarza go odpowiedni± ilo¶æ razy. ** @@ -301,7 +301,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.6.: OPEROWANIE NA LINIACH + Lekcja 1.2.6.: OPEROWANIE NA LINIACH ** Wpisz dd aby usun±æ ca³± liniê. ** @@ -324,7 +324,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.7.: POLECENIE UNDO (cofnij) + Lekcja 1.2.7.: POLECENIE UNDO (cofnij) ** Wci¶nij u aby cofn±æ skutki ostatniego polecenia. @@ -344,10 +344,10 @@ 8. To s± bardzo po¿yteczne polecenia. - Przejd¼ teraz do podsumowania Lekcji 2. + Przejd¼ teraz do podsumowania Lekcji 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 2. PODSUMOWANIE + LEKCJA 1.2. PODSUMOWANIE 1. By usun±æ znaki od kursora do nastêpnego wyrazu, wpisz: dw @@ -370,7 +370,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.1.: POLECENIE PUT (wstaw) + Lekcja 1.3.1.: POLECENIE PUT (wstaw) ** Wpisz p by wstawiæ ostatnie usuniêcia za kursorem. ** @@ -393,7 +393,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.2.: POLECENIE REPLACE (zast±p) + Lekcja 1.3.2.: POLECENIE REPLACE (zast±p) ** Wpisz rx aby zast±piæ znak pod kursorem na x . ** @@ -409,14 +409,14 @@ ---> Kjedy ten wiersz bi³ wstókiwany, kto¶ wcizn±³ perê z³ych klawirzy! ---> Kiedy ten wiersz by³ wstukiwany, kto¶ wcisn±³ parê z³ych klawiszy! - 5. Teraz czas na Lekcjê 3.3. + 5. Teraz czas na Lekcjê 1.3.3. UWAGA: Pamiêtaj, by uczyæ siê æwicz±c, a nie pamiêciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.3.: OPERATOR CHANGE (zmieñ) + Lekcja 1.3.3.: OPERATOR CHANGE (zmieñ) ** By zmieniæ do koñca wyrazu, wpisz ce . ** @@ -439,7 +439,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.4.: WIÊCEJ ZMIAN U¯YWAJ¡C c + Lekcja 1.3.4.: WIÊCEJ ZMIAN U¯YWAJ¡C c ** Polecenie change u¿ywa takich samych ruchów, jak delete. ** @@ -462,7 +462,7 @@ UWAGA: Mo¿esz u¿ywaæ aby poprawiaæ b³êdy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 3. PODSUMOWANIE + LEKCJA 1.3. PODSUMOWANIE 1. Aby wstawiæ tekst, który zosta³ wcze¶niej usuniêty wci¶nij p . To @@ -485,7 +485,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.1.: PO£O¯ENIE KURSORA ORAZ STATUS PLIKU + Lekcja 1.4.1.: PO£O¯ENIE KURSORA ORAZ STATUS PLIKU ** Naci¶nij CTRL-G aby zobaczyæ swoje po³o¿enie w pliku i status pliku. Naci¶nij G aby przej¶æ do linii w pliku. ** @@ -508,7 +508,7 @@ 4. Je¶li czujesz siê wystarczaj±co pewnie, wykonaj kroki 1-3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.2.: POLECENIE SZUKAJ + Lekcja 1.4.2.: POLECENIE SZUKAJ ** Wpisz / a nastêpnie wyra¿enie, aby je znale¼æ. ** @@ -531,7 +531,7 @@ o ile opcja 'wrapscan' nie zosta³a przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.3.: W POSZUKIWANIU PARUJ¡CYCH NAWIASÓW + Lekcja 1.4.3.: W POSZUKIWANIU PARUJ¡CYCH NAWIASÓW ** Wpisz % by znale¼æ paruj±cy ), ], lub } . ** @@ -554,7 +554,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) + Lekcja 1.4.4.: POLECENIE SUBSTITUTE (zamiana) ** Wpisz :s/stary/nowy/g aby zamieniæ 'stary' na 'nowy'. ** @@ -577,7 +577,7 @@ pliku, prosz±c o potwierdzenie za ka¿dym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 4. PODSUMOWANIE + LEKCJA 1.4. PODSUMOWANIE 1. CTRL-G poka¿e Twoj± pozycjê w pliku i status pliku. SHIFT-G przenosi Ciê do koñca pliku. @@ -600,7 +600,7 @@ By zamieniæ wszystkie wyst±pienia w pliku, wpisz :%s/stary/nowy/g By Vim prosi³ Ciê o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE? + Lekcja 1.5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE? ** Wpisz :! a nastêpnie zewnêtrzne polecenie, by je wykonaæ. ** @@ -623,7 +623,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW + Lekcja 1.5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW ** By zachowaæ zmiany w tek¶cie, wpisz :w NAZWA_PLIKU . ** @@ -646,7 +646,7 @@ lub (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU + Lekcja 1.5.3.: WYBRANIE TEKSTU DO ZAPISU ** By zachowaæ czê¶æ pliku, wpisz v ruch :w NAZWA_PLIKU ** @@ -669,14 +669,14 @@ z tekstem. Na przyk³ad d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.4.: WSTAWIANIE I £¡CZENIE PLIKÓW + Lekcja 1.5.4.: WSTAWIANIE I £¡CZENIE PLIKÓW ** By wstawiæ zawarto¶æ pliku, wpisz :r NAZWA_PLIKU ** 1. Umie¶æ kursor tu¿ powy¿ej tej linii. -UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd¼ +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 1.5.3. Potem przejd¼ do DO£U, by zobaczyæ ponownie tê lekcjê. 2. Teraz wczytaj plik TEST u¿ywaj±c polecenia :r TEST , gdzie TEST @@ -684,7 +684,7 @@ Wczytany plik jest umieszczony poni¿ej linii z kursorem. 3. By sprawdziæ czy plik zosta³ wczytany, cofnij kursor i zobacz, ¿e - teraz s± dwie kopie Lekcji 5.3., orygina³ i kopia z pliku. + teraz s± dwie kopie Lekcji 1.5.3., orygina³ i kopia z pliku. UWAGA: Mo¿esz te¿ wczytaæ wyj¶cie zewnêtrznego polecenia. Na przyk³ad :r !ls wczytuje wyj¶cie polecenia ls i umieszcza je pod poni¿ej @@ -692,7 +692,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 5. PODSUMOWANIE + LEKCJA 1.5. PODSUMOWANIE 1. :!polecenie wykonuje polecenie zewnêtrzne. @@ -715,7 +715,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.1.: POLECENIE OPEN (otwórz) + Lekcja 1.6.1.: POLECENIE OPEN (otwórz) ** Wpisz o by otworzyæ liniê poni¿ej kursora i przenie¶æ siê do @@ -738,7 +738,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.2.: POLECENIE APPEND (dodaj) + Lekcja 1.6.2.: POLECENIE APPEND (dodaj) ** Wpisz a by dodaæ tekst ZA kursorem. ** @@ -761,7 +761,7 @@ Uwaga: a , i oraz A prowadz± do trybu Insert, jedyn± ró¿nic± jest miejsce, gdzie nowe znaki bêd± dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) + Lekcja 1.6.3.: INNA WERSJA REPLACE (zamiana) ** Wpisz wielkie R by zamieniæ wiêcej ni¿ jeden znak. ** @@ -784,7 +784,7 @@ znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU + Lekcja 1.6.4.: KOPIOWANIE I WKLEJANIE TEKSTU ** u¿yj operatora y aby skopiowaæ tekst i p aby go wkleiæ ** @@ -807,7 +807,7 @@ Uwaga: mo¿esz u¿yæ y jako operatora; yw kopiuje jeden wyraz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.5.: USTAWIANIE OPCJI + Lekcja 1.6.5.: USTAWIANIE OPCJI ** Ustawianie opcji tak, by szukaj lub substytucja ignorowa³y wielko¶æ liter ** @@ -831,7 +831,7 @@ Uwaga: Aby usun±æ pod¶wietlanie dopasowañ, wpisz: :nohlsearch Uwaga: Aby ignorowaæ wielko¶æ liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 6. PODSUMOWANIE + LEKCJA 1.6. PODSUMOWANIE 1. Wpisanie o otwiera liniê PONI¯EJ kursora. @@ -856,7 +856,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.1. JAK UZYSKAÆ POMOC? + LEKCJA 1.7.1.: JAK UZYSKAÆ POMOC? ** U¿ycie systemu pomocy on-line ** @@ -878,7 +878,7 @@ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO + LEKCJA 1.7.2.: TWORZENIE SKRYPTU STARTOWEGO ** W³±cz mo¿liwo¶ci Vima ** @@ -900,7 +900,7 @@ Aby uzyskaæ wiêcej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 7.3.: UZUPE£NIANIE + Lekcja 1.7.3.: UZUPE£NIANIE ** Uzupe³nianie linii poleceñ z CTRL-D i ** @@ -922,7 +922,7 @@ UWAGA: Uzupe³nianie dzia³a dla wielu poleceñ. Spróbuj wcisn±æ CTRL-D i . U¿yteczne zw³aszcza przy :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 7. PODSUMOWANIE + Lekcja 1.7. PODSUMOWANIE 1. Wpisz :help albo wci¶nij lub aby otworzyæ okno pomocy. diff --git a/runtime/tutor/tutor1.pl.cp1250 b/runtime/tutor/tutor1.pl.cp1250 new file mode 100644 index 0000000000..869f837b28 --- /dev/null +++ b/runtime/tutor/tutor1.pl.cp1250 @@ -0,0 +1,995 @@ +=============================================================================== += W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = +=============================================================================== + + Vim to potezny edytor, który posiada wiele polecen, zbyt duzo, by + wyjasnic je wszystkie w tym tutorialu. Ten przewodnik ma nauczyc + Cie poslugiwac sie wystarczajaco wieloma komendami, bys mógl latwo + uzywac Vima jako edytora ogólnego przeznaczenia. + + Czas potrzebny na ukonczenie tutoriala to 25 do 30 minut i zalezy + od tego jak wiele czasu spedzisz na eksperymentowaniu. + + UWAGA: + Polecenia wykonywane w czasie lekcji zmodyfikuja tekst. Zrób + wczesniej kopie tego pliku do cwiczen (jesli zaczales komenda + "vimtutor", to juz pracujesz na kopii). + + Pamietaj, ze przewodnik ten zostal zaprojektowany do nauki poprzez + cwiczenia. Oznacza to, ze musisz wykonywac polecenia, by nauczyc sie ich + prawidlowo. Jesli bedziesz jedynie czytal tekst, szybko zapomnisz wiele + polecen! + + Teraz upewnij sie, ze nie masz wcisnietego Caps Locka i wciskaj j + tak dlugo dopóki Lekcja 1.1.1. nie wypelni calkowicie ekranu. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.1.1.: PORUSZANIE SIE KURSOREM + + ** By wykonac ruch kursorem, wcisnij h, j, k, l jak pokazano. ** + + ^ + k Wskazówka: h jest po lewej + < h l > l jest po prawej + j j wyglada jak strzalka w dól + v + 1. Poruszaj kursorem dopóki nie bedziesz pewien, ze pamietasz polecenia. + + 2. Trzymaj j tak dlugo az bedzie sie powtarzal. + Teraz wiesz jak dojsc do nastepnej lekcji. + + 3. Uzywajac strzalki w dól przejdz do nastepnej lekcji. + +Uwaga: Jesli nie jestes pewien czegos co wpisales, wcisnij , by wrócic do + trybu Normal. Wtedy powtórz polecenie. + +Uwaga: Klawisze kursora takze powinny dzialac, ale uzywajac hjkl bedziesz + w stanie poruszac sie o wiele szybciej, jak sie tylko przyzwyczaisz. + Naprawde! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.1.2.: WYCHODZENIE Z VIM-a + + !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj cala lekcje !! + + 1. Wcisnij (aby upewnic sie, ze jestes w trybie Normal). + 2. Wpisz: :q!. + To spowoduje wyjscie z edytora PORZUCAJAC wszelkie zmiany, jakie + zdazyles zrobic. Jesli chcesz zapamietac zmiany i wyjsc, + wpisz: :wq + + 3. Kiedy widzisz znak zachety powloki wpisz komende, zeby wrócic + do tutoriala. Czyli: vimtutor + + 4. Jesli chcesz zapamietac polecenia, wykonaj kroki 1. do 3., aby + wyjsc i wrócic do edytora. + +UWAGA: :q! porzuca wszelkie zmiany jakie zrobiles. W nastepnych + lekcjach dowiesz sie jak je zapamietywac. + + 5. Przenies kursor do lekcji 1.1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.1.3.: EDYCJA TEKSTU - KASOWANIE + + ** Wcisnij x aby usunac znak pod kursorem. ** + + 1. Przenies kursor do linii ponizej oznaczonej --->. + + 2. By poprawic bledy, naprowadz kursor na znak do usuniecia. + + 3. Wcisnij x aby usunac niechciany znak. + + 4. Powtarzaj kroki 2. do 4. dopóki zdanie nie jest poprawne. + +---> Kkrowa prrzeskoczyla prrzez ksiiezycc. + + 5. Teraz, kiedy zdanie jest poprawione, przejdz do Lekcji 1.1.4. + +UWAGA: Ucz sie przez cwiczenie, nie wkuwanie. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) + + + ** Wcisnij i aby wstawic tekst. ** + + 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. + + 2. Aby poprawic pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, + gdzie tekst ma byc wstawiony. + + 3. Wcisnij i a nastepnie wpisz konieczne poprawki. + + 4. Po poprawieniu bledu wcisnij , by wrócic do trybu Normal. + Powtarzaj kroki 2. do 4., aby poprawic cale zdanie. + +---> W tej brkje troche . +---> W tej linii brakuje troche tekstu. + + 5. Kiedy czujesz sie swobodnie wstawiajac tekst, przejdz do + podsumowania ponizej. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) + + + ** Wcisnij A by dodac tekst. ** + + 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. + Nie ma znaczenia, który to bedzie znak. + + 2. Wcisnij A i wpisz odpowiednie dodatki. + + 3. Kiedy tekst zostal dodany, wcisnij i wróc do trybu Normalnego. + + 4. Przenies kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., + aby poprawic zdanie. + +---> Brakuje tu tro + Brakuje tu troche tekstu. +---> Tu tez troche bra + Tu tez troche brakuje. + + 5. Kiedy juz utrwaliles cwiczenie, przejdz do lekcji 1.1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.1.6.: EDYCJA PLIKU + + ** Uzyj :wq aby zapisac plik i wyjsc. ** + + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj cala lekcje !! + + 1. Zakoncz tutorial tak jak w lekcji 1.1.2.: :q! + lub, jesli masz dostep do innego terminala, wykonaj kolejne kroki tam. + + 2. W powloce wydaj polecenie: vim tutor + "vim" jest poleceniem uruchamiajacym edytor Vim. 'tutor' to nazwa pliku, + jaki chcesz edytowac. Uzyj pliku, który moze zostac zmieniony. + + 3. Dodaj i usun tekst tak, jak sie nauczyles w poprzednich lekcjach. + + 4. Zapisz plik ze zmianami i opusc Vima: :wq + + 5. Jesli zakonczyles vimtutor w kroku 1., uruchom go ponownie i przejdz + do podsumowania ponizej. + + 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.1. PODSUMOWANIE + + 1. Poruszasz kursorem uzywajac "strzalek" i klawiszy hjkl . + h (w lewo) j (w dól) k (do góry) l (w prawo) + + 2. By wejsc do Vima, (z powloki) wpisz: + vim NAZWA_PLIKU + + 3. By wyjsc z Vima, wpisz: + :q! by usunac wszystkie zmiany. + LUB: :wq by zmiany zachowac. + + 4. By usunac znak pod kursorem, wcisnij: x + + 5. By wstawic tekst przed kursorem lub dodac: + i wpisz tekst wstawi przed kursorem + A wpisz tekst doda na koncu linii + +UWAGA: Wcisniecie przeniesie Cie z powrotem do trybu Normal + lub odwola niechciane lub czesciowo wprowadzone polecenia. + +Teraz mozemy kontynuowac i przejsc do Lekcji 1.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.1.: POLECENIE DELETE (usuwanie) + + + ** Wpisz dw by usunac wyraz. ** + + 1. Wcisnij , by upewnic sie, ze jestes w trybie Normal. + + 2. Przenies kursor do linii ponizej oznaczonej --->. + + 3. Przesun kursor na poczatek wyrazu, który chcesz usunac. + + 4. Wpisz dw by usunac wyraz. + + UWAGA: Litera d pojawi sie na dole ekranu. Vim czeka na wpisanie w . + Jesli zobaczysz inny znak, oznacza to, ze wpisales cos zle; wcisnij + i zacznij od poczatku. + +---> Jest tu pare papier wyrazów, które kamien nie naleza do nozyce tego zdania. + + 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie bedzie poprawne, potem + przejdz do Lekcji 1.2.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.2.: WIECEJ POLECEN USUWAJACYCH + + + ** Wpisz d$ aby usunac tekst do konca linii. ** + + 1. Wcisnij aby sie upewnic, ze jestes w trybie Normal. + + 2. Przenies kursor do linii ponizej oznaczonej --->. + + 3. Przenies kursor do konca poprawnego zdania (PO pierwszej . ). + + 4. Wpisz d$ aby usunac reszte linii. + +---> Ktos wpisal koniec tego zdania dwukrotnie. zdania dwukrotnie. + + + 5. Przejdz do Lekcji 1.2.3., by zrozumiec co sie stalo. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.3.: O OPERATORACH I RUCHACH + + + Wiele polecen zmieniajacych tekst jest zlozonych z operatora i ruchu. + Format dla polecenia usuwajacego z operatorem d jest nastepujacy: + + d ruch + + gdzie: + d - operator usuwania. + ruch - na czym polecenie bedzie wykonywane (lista ponizej). + + Krótka lista ruchów: + w - do poczatku nastepnego wyrazu WYLACZAJAC pierwszy znak. + e - do konca biezacego wyrazu, WLACZAJAC ostatni znak. + $ - do konca linii, WLACZAJAC ostatni znak. + +W ten sposób wpisanie de usunie znaki od kursora do konca wyrazu. + +UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor + tak, jak to okreslono. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.4.: UZYCIE MNOZNIKA DLA RUCHU + + + ** Wpisanie liczby przed ruchem powtarza ruch odpowiednia ilosc razy. ** + + 1. Przenies kursor na poczatek linii ponizej zaznaczonej --->. + + 2. Wpisz 2w aby przeniesc kursor o dwa wyrazy do przodu. + + 3. Wpisz 3e aby przeniesc kursor do konca trzeciego wyrazu w przód. + + 4. Wpisz 0 (zero), aby przeniesc kursor na poczatek linii. + + 5. Powtórz kroki 2. i 3. z innymi liczbami. + + + ---> To jest zwykly wiersz z wyrazami, po których mozesz sie poruszac. + + 6. Przejdz do lekcji 1.2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.5.: UZYCIE MNOZNIKA, BY WIECEJ USUNAC + + + ** Wpisanie liczby z operatorem powtarza go odpowiednia ilosc razy. ** + + W wyzej wspomnianej kombinacji operatora usuwania i ruchu podaj mnoznik + przed ruchem, by wiecej usunac: + d liczba ruch + + 1. Przenies kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. + + 2. Wpisz 2dw aby usunac dwa wyrazy KAPITALIKAMI. + + 3. Powtarzaj kroki 1. i 2. z innymi mnoznikami, aby usunac kolejne wyrazy + KAPITALIKAMI jednym poleceniem + +---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów zostala ERT FGH CF oczyszczona. + +UWAGA: Mnoznik pomiedzy operatorem d i ruchem dziala podobnie do ruchu bez + operatora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.6.: OPEROWANIE NA LINIACH + + + ** Wpisz dd aby usunac cala linie. ** + + Z powodu czestosci usuwania calych linii, projektanci Vi zdecydowali, ze + bedzie latwiej wpisac dwa razy d aby usunac linie. + + 1. Przenies kursor do drugiego zdania z wierszyka ponizej. + 2. Wpisz dd aby usunac wiersz. + 3. Teraz przenies sie do czwartego wiersza. + 4. Wpisz 2dd aby usunac dwa wiersze. + +---> 1) Róze sa czerwone, +---> 2) Bloto jest fajne, +---> 3) Fiolki sa niebieskie, +---> 4) Mam samochód, +---> 5) Zegar podaje czas, +---> 6) Cukier jest slodki, +---> 7) I ty tez. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.2.7.: POLECENIE UNDO (cofnij) + + + ** Wcisnij u aby cofnac skutki ostatniego polecenia. + U zas, by cofnac skutki dla calej linii. ** + + 1. Przenies kursor do zdania ponizej oznaczonego ---> i umiesc go na + pierwszym bledzie. + 2. Wpisz x aby usunac pierwszy niechciany znak. + 3. Teraz wcisnij u aby cofnac skutki ostatniego polecenia. + 4. Tym razem popraw wszystkie bledy w linii uzywajac polecenia x . + 5. Teraz wcisnij wielkie U aby przywrócic linie do oryginalnego stanu. + 6. Teraz wcisnij u kilka razy, by cofnac U i poprzednie polecenia. + 7. Teraz wpisz CTRL-R (trzymaj równoczesnie wcisniete klawisze CTRL i R) + kilka razy, by cofnac cofniecia. + +---> Poopraw bledyyy w teej liniii i zaamiien je prrzez coofnij. + + 8. To sa bardzo pozyteczne polecenia. + + Przejdz teraz do podsumowania Lekcji 1.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.2. PODSUMOWANIE + + + 1. By usunac znaki od kursora do nastepnego wyrazu, wpisz: dw + 2. By usunac znaki od kursora do konca linii, wpisz: d$ + 3. By usunac cala linie: dd + 4. By powtórzyc ruch, poprzedz go liczba: 2w + 5. Format polecenia zmiany to: + operator [liczba] ruch + gdzie: + operator - to, co trzeba zrobic (np. d dla usuwania) + [liczba] - opcjonalne, ile razy powtórzyc ruch + ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), + $ (do konca linii) etc. + + 6. By przejsc do poczatku linii, uzyj zera: 0 + 7. By cofnac poprzednie polecenie, wpisz: u (male u) + By cofnac wszystkie zmiany w linii, wpisz: U (wielkie U) + By cofnac cofniecie, wpisz: CTRL-R + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.3.1.: POLECENIE PUT (wstaw) + + + ** Wpisz p by wstawic ostatnie usuniecia za kursorem. ** + + 1. Przenies kursor do pierwszej linii ---> ponizej. + + 2. Wpisz dd aby usunac linie i przechowac ja w rejestrze Vima. + + 3. Przenies kursor do linii c), POWYZEJ tej, gdzie usunieta linia powinna + sie znajdowac. + + 4. Wcisnij p by wstawic linie ponizej kursora. + + 5. Powtarzaj kroki 2. do 4. az znajda sie w odpowiednim porzadku. + +---> d) Jak dwa aniolki. +---> b) Na dole fiolki, +---> c) A my sie kochamy, +---> a) Na górze róze, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.3.2.: POLECENIE REPLACE (zastap) + + + ** Wpisz rx aby zastapic znak pod kursorem na x . ** + + 1. Przenies kursor do pierwszej linii ponizej oznaczonej ---> + + 2. Ustaw kursor na pierwszym bledzie. + + 3. Wpisz r a potem znak jaki powinien go zastapic. + + 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bedzie taka, jak druga. + +---> Kjedy ten wiersz bil wstókiwany, ktos wciznal pere zlych klawirzy! +---> Kiedy ten wiersz byl wstukiwany, ktos wcisnal pare zlych klawiszy! + + 5. Teraz czas na Lekcje 1.3.3. + + +UWAGA: Pamietaj, by uczyc sie cwiczac, a nie pamieciowo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.3.3.: OPERATOR CHANGE (zmien) + + ** By zmienic do konca wyrazu, wpisz ce . ** + + 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. + + 2. Umiesc kursor na u w lunos. + + 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). + + 4. Wcisnij i przejdz do nastepnej planowanej zmiany. + + 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie bedzie takie same, + jak drugie. + +---> Ta lunos ma pire slów, które tzina zbnic uzifajonc pcmazu zmien. +---> Ta linia ma pare slów, które trzeba zmienic uzywajac polecenia zmien. + + Zauwaz, ze ce nie tylko zamienia wyraz, ale takze zmienia tryb na + Insert (wprowadzanie). + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.3.4.: WIECEJ ZMIAN UZYWAJAC c + + + ** Polecenie change uzywa takich samych ruchów, jak delete. ** + + 1. Operator change dziala tak samo, jak delete. Format wyglada tak: + + c [liczba] ruch + + 2. Ruchy sa takze takie same, np.: w (wyraz), $ (koniec linii) etc. + + 3. Przenies sie do pierwszej linii ponizej oznaczonej ---> + + 4. Ustaw kursor na pierwszym bledzie. + + 5. Wpisz c$ , popraw koniec wiersza i wcisnij . + +---> Koniec tego wiersza musi byc poprawiony, aby wygladal tak, jak drugi. +---> Koniec tego wiersza musi byc poprawiony uzywajac polecenia c$ . + +UWAGA: Mozesz uzywac aby poprawiac bledy w czasie pisania. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.3. PODSUMOWANIE + + + 1. Aby wstawic tekst, który zostal wczesniej usuniety wcisnij p . To + polecenie wstawia skasowany tekst PO kursorze (jesli cala linia + zostala usunieta, zostanie ona umieszczona w linii ponizej kursora). + + 2. By zamienic znak pod kursorem, wcisnij r a potem znak, który ma zastapic + oryginalny. + + 3. Operator change pozwala Ci na zastapienie od kursora do miejsca, gdzie + zabralby Cie ruch. Np. wpisz ce aby zamienic tekst od kursora do konca + wyrazu, c$ aby zmienic tekst do konca linii. + + 4. Format do polecenia change (zmien): + + c [liczba] obiekt + + Teraz przejdz do nastepnej lekcji. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.4.1.: POLOZENIE KURSORA ORAZ STATUS PLIKU + + ** Nacisnij CTRL-G aby zobaczyc swoje polozenie w pliku i status + pliku. Nacisnij G aby przejsc do linii w pliku. ** + + UWAGA: Przeczytaj cala lekcje zanim wykonasz jakies polecenia!!! + + 1. Przytrzymaj klawisz CTRL i wcisnij g . Uzywamy notacji CTRL-G. + Na dole strony pojawi sie pasek statusu z nazwa pliku i pozycja w pliku. + Zapamietaj numer linii dla potrzeb kroku 3. + +UWAGA: Mozesz tez zobaczyc pozycje kursora w prawym, dolnym rogu ekranu. + Dzieje sie tak kiedy ustawiona jest opcja 'ruler' (wiecej w lekcji 6.). + + 2. Wcisnij G aby przejsc na koniec pliku. + Wcisnij gg aby przejsc do poczatku pliku. + + 3. Wpisz numer linii, w której byles a potem G . To przeniesie Cie + z powrotem do linii, w której byles kiedy wcisnales CTRL-G. + + 4. Jesli czujesz sie wystarczajaco pewnie, wykonaj kroki 1-3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.4.2.: POLECENIE SZUKAJ + + + ** Wpisz / a nastepnie wyrazenie, aby je znalezc. ** + + 1. W trybie Normal wpisz / . Zauwaz, ze znak ten oraz kursor pojawia + sie na dole ekranu tak samo, jak polecenie : . + + 2. Teraz wpisz blond . To jest slowo, którego chcesz szukac. + + 3. By szukac tej samej frazy ponownie, po prostu wcisnij n . + Aby szukac tej frazy w przeciwnym, kierunku wcisnij N . + + 4. Jesli chcesz szukac frazy do tylu, uzyj polecenia ? zamiast / . + + 5. Aby wrócic gdzie byles, wcisnij CTRL-O. Powtarzaj, by wrócic dalej. CTRL-I + idzie do przodu. + +Uwaga: 'blond' to nie jest metoda, by przeliterowac blad; 'blond' to blad. +Uwaga: Kiedy szukanie osiagnie koniec pliku, bedzie kontynuowane od poczatku + o ile opcja 'wrapscan' nie zostala przestawiona. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.4.3.: W POSZUKIWANIU PARUJACYCH NAWIASÓW + + + ** Wpisz % by znalezc parujacy ), ], lub } . ** + + 1. Umiesc kursor na któryms z (, [, lub { w linii ponizej oznaczonej --->. + + 2. Teraz wpisz znak % . + + 3. Kursor powinien sie znalezc na parujacym nawiasie. + + 4. Wcisnij % aby przeniesc kursor z powrotem do parujacego nawiasu. + + 5. Przenies kursor do innego (,),[,],{ lub } i zobacz co robi % . + +---> To ( jest linia testowa z (, [, ] i {, } . )) + +Uwaga: Ta funkcja jest bardzo uzyteczna w debuggowaniu programu + z niesparowanymi nawiasami! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.4.4.: POLECENIE SUBSTITUTE (zamiana) + + + ** Wpisz :s/stary/nowy/g aby zamienic 'stary' na 'nowy'. ** + + 1. Przenies kursor do linii ponizej oznaczonej --->. + + 2. Wpisz :s/czaas/czas . Zauwaz, ze to polecenie zmienia + tylko pierwsze wystapienie 'czaas' w linii. + + 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamiane (substytucje) + globalnie w calej linii. Zmienia wszystkie wystapienia 'czaas' w linii. + +---> Najlepszy czaas na zobaczenie najladniejszych kwiatów to czaas wiosny. + + 4. Aby zmienic wszystkie wystapienia lancucha znaków pomiedzy dwoma liniami, + wpisz: :#,#s/stare/nowe/g gdzie #,# sa numerami linii ograniczajacych + region, gdzie ma nastapic zamiana. + wpisz :%s/stare/nowe/g by zmienic wszystkie wystapienia w calym pliku. + wpisz :%s/stare/nowe/gc by zmienic wszystkie wystapienia w calym + pliku, proszac o potwierdzenie za kazdym razem. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.4. PODSUMOWANIE + + 1. CTRL-G pokaze Twoja pozycje w pliku i status pliku. SHIFT-G przenosi + Cie do konca pliku. + G przenosi do konca pliku. + liczba G przenosi do linii [liczba]. + gg przenosi do pierwszej linii. + + 2. Wpisanie / a nastepnie lancucha znaków szuka lancucha DO PRZODU. + Wpisanie ? a nastepnie lancucha znaków szuka lancucha DO TYLU. + Po wyszukiwaniu wcisnij n by znalezc nastepne wystapienie szukanej + frazy w tym samym kierunku lub N by szukac w kierunku przeciwnym. + CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. + + 3. Wpisanie % gdy kursor znajduje sie na (,),[,],{, lub } lokalizuje + parujacy znak. + + 4. By zamienic pierwszy stary na nowy w linii, wpisz :s/stary/nowy + By zamienic wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g + By zamienic frazy pomiedzy dwoma liniami # wpisz :#,#s/stary/nowy/g + By zamienic wszystkie wystapienia w pliku, wpisz :%s/stary/nowy/g + By Vim prosil Cie o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.5.1.: JAK WYKONAC POLECENIA ZEWNETRZNE? + + + ** Wpisz :! a nastepnie zewnetrzne polecenie, by je wykonac. ** + + 1. Wpisz znajome polecenie : by ustawic kursor na dole ekranu. To pozwala + na wprowadzenie komendy linii polecen. + + 2. Teraz wstaw ! (wykrzyknik). To umozliwi Ci wykonanie dowolnego + zewnetrznego polecenia powloki. + + 3. Jako przyklad wpisz ls za ! a nastepnie wcisnij . To polecenie + pokaze spis plików w Twoim katalogu, tak jakbys byl przy znaku zachety + powloki. Mozesz tez uzyc :!dir jesli ls nie dziala. + +Uwaga: W ten sposób mozna wykonac wszystkie polecenia powloki. +Uwaga: Wszystkie polecenia : musza byc zakonczone . + Od tego momentu nie zawsze bedziemy o tym wspominac. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.5.2.: WIECEJ O ZAPISYWANIU PLIKÓW + + + ** By zachowac zmiany w tekscie, wpisz :w NAZWA_PLIKU . ** + + 1. Wpisz :!dir lub :!ls by zobaczyc spis plików w katalogu. + Juz wiesz, ze musisz po tym wcisnac . + + 2. Wybierz nazwe pliku, jaka jeszcze nie istnieje, np. TEST. + + 3. Teraz wpisz: :w TEST (gdzie TEST jest nazwa pliku jaka wybrales.) + + 4. To polecenie zapamieta caly plik (Vim Tutor) pod nazwa TEST. + By to sprawdzic, wpisz :!dir lub :!ls zeby znowu zobaczyc liste plików. + +Uwaga: Zauwaz, ze gdybys teraz wyszedl z Vima, a nastepnie wszedl ponownie + poleceniem vim TEST , plik bylby dokladna kopia tutoriala, kiedy go + zapisywales. + + 5. Teraz usun plik wpisujac (MS-DOS): :!del TEST + lub (Unix): :!rm TEST + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.5.3.: WYBRANIE TEKSTU DO ZAPISU + + + ** By zachowac czesc pliku, wpisz v ruch :w NAZWA_PLIKU ** + + 1. Przenies kursor do tego wiersza. + + 2. Wcisnij v i przenies kursor do punktu 5. Zauwaz, ze tekst zostal + podswietlony. + + 3. Wcisnij znak : . Na dole ekranu pojawi sie :'<,'> . + + 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. + Upewnij sie, ze widzisz :'<,'>w TEST zanim wcisniesz Enter. + + 5. Vim zapisze wybrane linie do pliku TEST. Uzyj :!dir lub :!ls , zeby to + zobaczyc. Jeszcze go nie usuwaj! Uzyjemy go w nastepnej lekcji. + +UWAGA: Wcisniecie v zaczyna tryb Wizualny. Mozesz poruszac kursorem, by + zmienic rozmiary zaznaczenia. Mozesz tez uzyc operatora, by zrobic cos + z tekstem. Na przyklad d usuwa tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.5.4.: WSTAWIANIE I LACZENIE PLIKÓW + + + ** By wstawic zawartosc pliku, wpisz :r NAZWA_PLIKU ** + + 1. Umiesc kursor tuz powyzej tej linii. + +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 1.5.3. Potem przejdz + do DOLU, by zobaczyc ponownie te lekcje. + + 2. Teraz wczytaj plik TEST uzywajac polecenia :r TEST , gdzie TEST + jest nazwa pliku. + Wczytany plik jest umieszczony ponizej linii z kursorem. + + 3. By sprawdzic czy plik zostal wczytany, cofnij kursor i zobacz, ze + teraz sa dwie kopie Lekcji 1.5.3., oryginal i kopia z pliku. + +UWAGA: Mozesz tez wczytac wyjscie zewnetrznego polecenia. Na przyklad + :r !ls wczytuje wyjscie polecenia ls i umieszcza je pod ponizej + kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.5. PODSUMOWANIE + + + 1. :!polecenie wykonuje polecenie zewnetrzne. + + Uzytecznymi przykladami sa: + + :!dir - pokazuje spis plików w katalogu. + + :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. + + 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazwa NAZWA_PLIKU. + + 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. + + 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do + biezacego pliku ponizej kursora. + + 5. :r !dir wczytuje wyjscie polecenia dir i umieszcza je ponizej kursora. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.6.1.: POLECENIE OPEN (otwórz) + + + ** Wpisz o by otworzyc linie ponizej kursora i przeniesc sie do + trybu Insert (wprowadzanie). ** + + 1. Przenies kursor do linii ponizej oznaczonej --->. + + 2. Wpisz o (male), by otworzyc linie PONIZEJ kursora i przeniesc sie + do trybu Insert (wprowadzanie). + + 3. Wpisz troche tekstu i wcisnij by wyjsc z trybu Insert (wprowadzanie). + +---> Po wcisnieciu o kursor znajdzie sie w otwartej linii w trybie Insert. + + 4. By otworzyc linie POWYZEJ kursora, wcisnij wielkie O zamiast malego + o . Wypróbuj to na linii ponizej. + +---> Otwórz linie powyzej wciskajac SHIFT-O gdy kursor bedzie na tej linii. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.6.2.: POLECENIE APPEND (dodaj) + + + ** Wpisz a by dodac tekst ZA kursorem. ** + + 1. Przenies kursor do poczatku pierwszej linii ponizej oznaczonej ---> + + 2. Wciskaj e dopóki kursor nie bedzie na koncu li . + + 3. Wpisz a (male), aby dodac tekst ZA znakiem pod kursorem. + + 4. Dokoncz wyraz tak, jak w linii ponizej. Wcisnij aby opuscic tryb + Insert. + + 5. Uzyj e by przejsc do kolejnego niedokonczonego wyrazu i powtarzaj kroki + 3. i 4. + +---> Ta li poz Ci cwi dodaw teks do kon lin +---> Ta linia pozwoli Ci cwiczyc dodawanie tekstu do konca linii. + +Uwaga: a , i oraz A prowadza do trybu Insert, jedyna róznica jest miejsce, + gdzie nowe znaki beda dodawane. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.6.3.: INNA WERSJA REPLACE (zamiana) + + + ** Wpisz wielkie R by zamienic wiecej niz jeden znak. ** + + 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. Przenies + kursor do pierwszego xxx . + + 2. Wcisnij R i wpisz numer ponizej w drugiej linii, tak, ze zastapi on + xxx. + + 3. Wcisnij by opuscic tryb Replace. Zauwaz, ze reszta linii pozostaje + niezmieniona. + + 5. Powtarzaj kroki by wymienic wszystkie xxx. + +---> Dodanie 123 do xxx daje xxx. +---> Dodanie 123 do 456 daje 579. + +UWAGA: Tryb Replace jest jak tryb Insert, ale kazdy znak usuwa istniejacy + znak. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.6.4.: KOPIOWANIE I WKLEJANIE TEKSTU + + + ** uzyj operatora y aby skopiowac tekst i p aby go wkleic ** + + 1. Przejdz do linii oznaczonej ---> i umiesc kursor za "a)". + + 2. Wejdz w tryb Wizualny v i przenies kursor na poczatek "pierwszy". + + 3. Wcisnij y aby kopiowac (yankowac) podswietlony tekst. + + 4. Przenies kursor do konca nastepnej linii: j$ + + 5. Wcisnij p aby wkleic (wpakowac) tekst. Dodaj: a drugi . + + 6. Uzyj trybu Wizualnego, aby wybrac " element.", yankuj go y , przejdz do + konca nastepnej linii j$ i upakuj tam tekst z p . + +---> a) to jest pierwszy element. + b) +Uwaga: mozesz uzyc y jako operatora; yw kopiuje jeden wyraz. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.6.5.: USTAWIANIE OPCJI + + +** Ustawianie opcji tak, by szukaj lub substytucja ignorowaly wielkosc liter ** + + 1. Szukaj 'ignore' wpisujac: /ignore + Powtórz szukanie kilka razy naciskajac klawisz n . + + 2. Ustaw opcje 'ic' (Ignore case -- ignoruj wielkosc liter) poprzez + wpisanie: :set ic + + 3. Teraz szukaj 'ignore' ponownie wciskajac: n + Zauwaz, ze Ignore i IGNORE takze sa teraz znalezione. + + 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is + + 5. Teraz wprowadz polecenie szukaj ponownie i zobacz co sie zdarzy: + /ignore + + 6. Aby wylaczyc ignorowanie wielkosci liter: :set noic + +Uwaga: Aby usunac podswietlanie dopasowan, wpisz: :nohlsearch +Uwaga: Aby ignorowac wielkosc liter dla jednego wyszukiwania: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.6. PODSUMOWANIE + + + 1. Wpisanie o otwiera linie PONIZEJ kursora. + Wpisanie O otwiera linie POWYZEJ kursora. + + 2. Wpisanie a wstawia tekst ZA znakiem, na którym jest kursor. + Wpisanie A dodaje tekst na koncu linii. + + 3. Polecenie e przenosi do konca wyrazu. + 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. + 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki + nie zostanie wcisniety . + 6. Wpisanie ":set xxx" ustawia opcje "xxx". Niektóre opcje: + 'ic' 'ignorecase' ignoruj wielkosc znaków + 'is' 'incsearch' pokaz czesciowe dopasowania + 'hls' 'hlsearch' podswietl wszystkie dopasowania + Mozesz uzyc zarówno dlugiej, jak i krótkiej formy. + 7. Dodaj "no", aby wylaczyc opcje: :set noic + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.7.1.: JAK UZYSKAC POMOC? + + ** Uzycie systemu pomocy on-line ** + + Vim posiada bardzo dobry system pomocy on-line. By zaczac, spróbuj jednej + z trzech mozliwosci: + - wcisnij klawisz (jesli taki masz) + - wcisnij klawisz (jesli taki masz) + - wpisz :help + + Przeczytaj tekst w oknie pomocy, aby dowiedziec sie jak dziala pomoc. + wpisz CTRL-W CTRL-W aby przeskoczyc z jednego okna do innego + wpisz :q aby zamknac okno pomocy. + + Mozesz tez znalezc pomoc na kazdy temat podajac argument polecenia ":help". + Spróbuj tych (nie zapomnij wcisnac ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCJA 1.7.2.: TWORZENIE SKRYPTU STARTOWEGO + + ** Wlacz mozliwosci Vima ** + + Vim ma o wiele wiecej mozliwosci niz Vi, ale wiekszosc z nich jest domyslnie + wylaczona. Jesli chcesz wlaczyc te mozliwosci na starcie musisz utworzyc + plik "vimrc". + + 1. Poczatek edycji pliku "vimrc" zalezy od Twojego systemu: + :edit ~/.vimrc dla Uniksa + :edit ~/_vimrc dla MS-Windows + 2. Teraz wczytaj przykladowy plik "vimrc": + :read $VIMRUNTIME/vimrc_example.vim + 3. Zapisz plik: + :w + + Nastepnym razem, gdy zaczniesz prace w Vimie bedzie on uzywac podswietlania + skladni. Mozesz dodac wszystkie swoje ulubione ustawienia do tego pliku + "vimrc". + Aby uzyskac wiecej informacji, wpisz :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.7.3.: UZUPELNIANIE + + + ** Uzupelnianie linii polecen z CTRL-D i ** + + 1. Upewnij sie, ze Vim nie jest w trybie kompatybilnosci: :set nocp + + 2. Zerknij, jakie pliki sa w biezacym katalogu: :!ls lub :!dir + + 3. Wpisz poczatek polecenia: :e + + 4. Wcisnij CTRL-D i Vim pokaze liste polecen, jakie zaczynaja sie na "e". + + 5. Wcisnij i Vim uzupelni polecenie do ":edit". + + 6. Dodaj spacje i zacznij wpisywac nazwe istniejacego pliku: :edit FIL + + 7. Wcisnij . Vim uzupelni nazwe (jesli jest niepowtarzalna). + +UWAGA: Uzupelnianie dziala dla wielu polecen. Spróbuj wcisnac CTRL-D i . + Uzyteczne zwlaszcza przy :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcja 1.7. PODSUMOWANIE + + + 1. Wpisz :help albo wcisnij lub aby otworzyc okno pomocy. + + 2. Wpisz :help cmd aby uzyskac pomoc o cmd . + + 3. Wpisz CTRL-W CTRL-W aby przeskoczyc do innego okna. + + 4. Wpisz :q aby zamknac okno pomocy. + + 5. Utwórz plik startowy vimrc aby zachowac wybrane ustawienia. + + 6. Po poleceniu : , wcisnij CTRL-D aby zobaczyc mozliwe uzupelnienia. + Wcisnij aby uzyc jednego z nich. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Tutaj sie konczy tutorial Vima. Zostal on pomyslany tak, aby dac krótki + przeglad jego mozliwosci, wystarczajacy bys mógl go uzywac. Jest on + daleki od kompletnosci, poniewaz Vim ma o wiele, wiele wiecej polecen. + + Dla dalszej nauki rekomendujemy ksiazke: + Vim - Vi Improved - autor Steve Oualline + Wydawca: New Riders + Pierwsza ksiazka calkowicie poswiecona Vimowi. Uzyteczna zwlaszcza dla + poczatkujacych. Zawiera wiele przykladów i ilustracji. + Zobacz https://iccf-holland.org./click5.html + + Starsza pozycja i bardziej o Vi niz o Vimie, ale takze warta + polecenia: + Learning the Vi Editor - autor Linda Lamb + Wydawca: O'Reilly & Associates Inc. + To dobra ksiazka, by dowiedziec sie niemal wszystkiego, co chcialbys zrobic + z Vi. Szósta edycja zawiera tez informacje o Vimie. + + Po polsku wydano: + Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins + Wydawca: Helion 2001 (O'Reilly). + ISBN: 83-7197-472-8 + http://helion.pl/ksiazki/vilek.htm + Jest to ksiazeczka zawierajaca spis polecen vi i jego najwazniejszych + klonów (miedzy innymi Vima). + + Edytor vi - autorzy Linda Lamb i Arnold Robbins + Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania + ISBN: 83-7197-539-2 + http://helion.pl/ksiazki/viedyt.htm + Rozszerzona wersja Learning the Vi Editor w polskim tlumaczeniu. + + Ten tutorial zostal napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, + Colorado School of Mines korzystajac z pomocy Charlesa Smitha, + Colorado State University. + E-mail: bware@mines.colorado.edu. + + Zmodyfikowane dla Vima przez Brama Moolenaara. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Przetlumaczone przez Mikolaja Machowskiego, + Sierpien 2001, + rev. Marzec 2002 + 2nd rev. Wrzesien 2004 + 3rd rev. Marzec 2006 + 4th rev. Grudzien 2008 + Wszelkie uwagi prosze kierowac na: mikmach@wp.pl diff --git a/runtime/tutor/tutor.pl.utf-8 b/runtime/tutor/tutor1.pl.utf-8 similarity index 92% rename from runtime/tutor/tutor.pl.utf-8 rename to runtime/tutor/tutor1.pl.utf-8 index 7856837b65..cd3d5bd354 100644 --- a/runtime/tutor/tutor.pl.utf-8 +++ b/runtime/tutor/tutor1.pl.utf-8 @@ -21,10 +21,10 @@ poleceÅ„! Teraz upewnij siÄ™, że nie masz wciÅ›niÄ™tego Caps Locka i wciskaj j - tak dÅ‚ugo dopóki Lekcja 1.1. nie wypeÅ‚ni caÅ‚kowicie ekranu. + tak dÅ‚ugo dopóki Lekcja 1.1.1. nie wypeÅ‚ni caÅ‚kowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.1.: PORUSZANIE SIĘ KURSOREM + Lekcja 1.1.1.: PORUSZANIE SIĘ KURSOREM ** By wykonać ruch kursorem, wciÅ›nij h, j, k, l jak pokazano. ** @@ -48,7 +48,7 @@ Uwaga: Klawisze kursora także powinny dziaÅ‚ać, ale używajÄ…c hjkl bÄ™dzies NaprawdÄ™! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.2.: WYCHODZENIE Z VIM-a + Lekcja 1.1.2.: WYCHODZENIE Z VIM-a !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj caÅ‚Ä… lekcjÄ™ !! @@ -67,11 +67,11 @@ Uwaga: Klawisze kursora także powinny dziaÅ‚ać, ale używajÄ…c hjkl bÄ™dzies UWAGA: :q! porzuca wszelkie zmiany jakie zrobiÅ‚eÅ›. W nastÄ™pnych lekcjach dowiesz siÄ™ jak je zapamiÄ™tywać. - 5. PrzenieÅ› kursor do lekcji 1.3. + 5. PrzenieÅ› kursor do lekcji 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE + Lekcja 1.1.3.: EDYCJA TEKSTU - KASOWANIE ** WciÅ›nij x aby usunąć znak pod kursorem. ** @@ -85,7 +85,7 @@ UWAGA: :q! porzuca wszelkie zmiany jakie zrobiÅ‚eÅ›. W nastÄ™pnych ---> Kkrowa prrzeskoczyÅ‚a prrzez ksiiężycc. - 5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.4. + 5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.1.4. UWAGA: Ucz siÄ™ przez ćwiczenie, nie wkuwanie. @@ -94,7 +94,7 @@ UWAGA: Ucz siÄ™ przez ćwiczenie, nie wkuwanie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) + Lekcja 1.1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) ** WciÅ›nij i aby wstawić tekst. ** @@ -117,7 +117,7 @@ UWAGA: Ucz siÄ™ przez ćwiczenie, nie wkuwanie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) + Lekcja 1.1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) ** WciÅ›nij A by dodać tekst. ** @@ -137,16 +137,16 @@ UWAGA: Ucz siÄ™ przez ćwiczenie, nie wkuwanie. ---> Tu też trochÄ™ bra Tu też trochÄ™ brakuje. - 5. Kiedy już utrwaliÅ‚eÅ› ćwiczenie, przejdź do lekcji 1.6. + 5. Kiedy już utrwaliÅ‚eÅ› ćwiczenie, przejdź do lekcji 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.6.: EDYCJA PLIKU + Lekcja 1.1.6.: EDYCJA PLIKU ** Użyj :wq aby zapisać plik i wyjść. ** !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj caÅ‚Ä… lekcjÄ™ !! - 1. ZakoÅ„cz tutorial tak jak w lekcji 1.2.: :q! + 1. ZakoÅ„cz tutorial tak jak w lekcji 1.1.2.: :q! lub, jeÅ›li masz dostÄ™p do innego terminala, wykonaj kolejne kroki tam. 2. W powÅ‚oce wydaj polecenie: vim tutor @@ -163,7 +163,7 @@ UWAGA: Ucz siÄ™ przez ćwiczenie, nie wkuwanie. 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 1. PODSUMOWANIE + LEKCJA 1.1. PODSUMOWANIE 1. Poruszasz kursorem używajÄ…c "strzaÅ‚ek" i klawiszy hjkl . h (w lewo) j (w dół) k (do góry) l (w prawo) @@ -184,9 +184,9 @@ UWAGA: Ucz siÄ™ przez ćwiczenie, nie wkuwanie. UWAGA: WciÅ›niÄ™cie przeniesie CiÄ™ z powrotem do trybu Normal lub odwoÅ‚a niechciane lub częściowo wprowadzone polecenia. -Teraz możemy kontynuować i przejść do Lekcji 2. +Teraz możemy kontynuować i przejść do Lekcji 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.1.: POLECENIE DELETE (usuwanie) + Lekcja 1.2.1.: POLECENIE DELETE (usuwanie) ** Wpisz dw by usunąć wyraz. ** @@ -206,10 +206,10 @@ Teraz możemy kontynuować i przejść do Lekcji 2. ---> Jest tu parÄ™ papier wyrazów, które kamieÅ„ nie należą do nożyce tego zdania. 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie bÄ™dzie poprawne, potem - przejdź do Lekcji 2.2. + przejdź do Lekcji 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.2.: WIĘCEJ POLECEŃ USUWAJÄ„CYCH + Lekcja 1.2.2.: WIĘCEJ POLECEŃ USUWAJÄ„CYCH ** Wpisz d$ aby usunąć tekst do koÅ„ca linii. ** @@ -225,14 +225,14 @@ Teraz możemy kontynuować i przejść do Lekcji 2. ---> KtoÅ› wpisaÅ‚ koniec tego zdania dwukrotnie. zdania dwukrotnie. - 5. Przejdź do Lekcji 2.3., by zrozumieć co siÄ™ staÅ‚o. + 5. Przejdź do Lekcji 1.2.3., by zrozumieć co siÄ™ staÅ‚o. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.3.: O OPERATORACH I RUCHACH + Lekcja 1.2.3.: O OPERATORACH I RUCHACH Wiele poleceÅ„ zmieniajÄ…cych tekst jest zÅ‚ożonych z operatora i ruchu. @@ -255,7 +255,7 @@ UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor tak, jak to okreÅ›lono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.4.: UÅ»YCIE MNOÅ»NIKA DLA RUCHU + Lekcja 1.2.4.: UÅ»YCIE MNOÅ»NIKA DLA RUCHU ** Wpisanie liczby przed ruchem powtarza ruch odpowiedniÄ… ilość razy. ** @@ -273,12 +273,12 @@ UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor ---> To jest zwykÅ‚y wiersz z wyrazami, po których możesz siÄ™ poruszać. - 6. Przejdź do lekcji 2.5. + 6. Przejdź do lekcji 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.5.: UÅ»YCIE MNOÅ»NIKA, BY WIĘCEJ USUNĄĆ + Lekcja 1.2.5.: UÅ»YCIE MNOÅ»NIKA, BY WIĘCEJ USUNĄĆ ** Wpisanie liczby z operatorem powtarza go odpowiedniÄ… ilość razy. ** @@ -301,7 +301,7 @@ UWAGA: Mnożnik pomiÄ™dzy operatorem d i ruchem dziaÅ‚a podobnie do ruchu bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.6.: OPEROWANIE NA LINIACH + Lekcja 1.2.6.: OPEROWANIE NA LINIACH ** Wpisz dd aby usunąć caÅ‚Ä… liniÄ™. ** @@ -324,7 +324,7 @@ UWAGA: Mnożnik pomiÄ™dzy operatorem d i ruchem dziaÅ‚a podobnie do ruchu bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.7.: POLECENIE UNDO (cofnij) + Lekcja 1.2.7.: POLECENIE UNDO (cofnij) ** WciÅ›nij u aby cofnąć skutki ostatniego polecenia. @@ -344,10 +344,10 @@ UWAGA: Mnożnik pomiÄ™dzy operatorem d i ruchem dziaÅ‚a podobnie do ruchu bez 8. To sÄ… bardzo pożyteczne polecenia. - Przejdź teraz do podsumowania Lekcji 2. + Przejdź teraz do podsumowania Lekcji 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 2. PODSUMOWANIE + LEKCJA 1.2. PODSUMOWANIE 1. By usunąć znaki od kursora do nastÄ™pnego wyrazu, wpisz: dw @@ -370,7 +370,7 @@ UWAGA: Mnożnik pomiÄ™dzy operatorem d i ruchem dziaÅ‚a podobnie do ruchu bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.1.: POLECENIE PUT (wstaw) + Lekcja 1.3.1.: POLECENIE PUT (wstaw) ** Wpisz p by wstawić ostatnie usuniÄ™cia za kursorem. ** @@ -393,7 +393,7 @@ UWAGA: Mnożnik pomiÄ™dzy operatorem d i ruchem dziaÅ‚a podobnie do ruchu bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.2.: POLECENIE REPLACE (zastÄ…p) + Lekcja 1.3.2.: POLECENIE REPLACE (zastÄ…p) ** Wpisz rx aby zastÄ…pić znak pod kursorem na x . ** @@ -409,14 +409,14 @@ UWAGA: Mnożnik pomiÄ™dzy operatorem d i ruchem dziaÅ‚a podobnie do ruchu bez ---> Kjedy ten wiersz biÅ‚ wstókiwany, ktoÅ› wciznÄ…Å‚ perÄ™ zÅ‚ych klawirzy! ---> Kiedy ten wiersz byÅ‚ wstukiwany, ktoÅ› wcisnÄ…Å‚ parÄ™ zÅ‚ych klawiszy! - 5. Teraz czas na LekcjÄ™ 3.3. + 5. Teraz czas na LekcjÄ™ 1.3.3. UWAGA: PamiÄ™taj, by uczyć siÄ™ ćwiczÄ…c, a nie pamiÄ™ciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.3.: OPERATOR CHANGE (zmieÅ„) + Lekcja 1.3.3.: OPERATOR CHANGE (zmieÅ„) ** By zmienić do koÅ„ca wyrazu, wpisz ce . ** @@ -439,7 +439,7 @@ UWAGA: PamiÄ™taj, by uczyć siÄ™ ćwiczÄ…c, a nie pamiÄ™ciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 3.4.: WIĘCEJ ZMIAN UÅ»YWAJÄ„C c + Lekcja 1.3.4.: WIĘCEJ ZMIAN UÅ»YWAJÄ„C c ** Polecenie change używa takich samych ruchów, jak delete. ** @@ -462,7 +462,7 @@ UWAGA: PamiÄ™taj, by uczyć siÄ™ ćwiczÄ…c, a nie pamiÄ™ciowo. UWAGA: Możesz używać aby poprawiać bÅ‚Ä™dy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 3. PODSUMOWANIE + LEKCJA 1.3. PODSUMOWANIE 1. Aby wstawić tekst, który zostaÅ‚ wczeÅ›niej usuniÄ™ty wciÅ›nij p . To @@ -485,7 +485,7 @@ UWAGA: Możesz używać aby poprawiać bÅ‚Ä™dy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.1.: POÅOÅ»ENIE KURSORA ORAZ STATUS PLIKU + Lekcja 1.4.1.: POÅOÅ»ENIE KURSORA ORAZ STATUS PLIKU ** NaciÅ›nij CTRL-G aby zobaczyć swoje poÅ‚ożenie w pliku i status pliku. NaciÅ›nij G aby przejść do linii w pliku. ** @@ -508,7 +508,7 @@ UWAGA: Możesz też zobaczyć pozycjÄ™ kursora w prawym, dolnym rogu ekranu. 4. JeÅ›li czujesz siÄ™ wystarczajÄ…co pewnie, wykonaj kroki 1-3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.2.: POLECENIE SZUKAJ + Lekcja 1.4.2.: POLECENIE SZUKAJ ** Wpisz / a nastÄ™pnie wyrażenie, aby je znaleźć. ** @@ -531,7 +531,7 @@ Uwaga: Kiedy szukanie osiÄ…gnie koniec pliku, bÄ™dzie kontynuowane od poczÄ…tku o ile opcja 'wrapscan' nie zostaÅ‚a przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.3.: W POSZUKIWANIU PARUJÄ„CYCH NAWIASÓW + Lekcja 1.4.3.: W POSZUKIWANIU PARUJÄ„CYCH NAWIASÓW ** Wpisz % by znaleźć parujÄ…cy ), ], lub } . ** @@ -554,7 +554,7 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) + Lekcja 1.4.4.: POLECENIE SUBSTITUTE (zamiana) ** Wpisz :s/stary/nowy/g aby zamienić 'stary' na 'nowy'. ** @@ -577,7 +577,7 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu pliku, proszÄ…c o potwierdzenie za każdym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 4. PODSUMOWANIE + LEKCJA 1.4. PODSUMOWANIE 1. CTRL-G pokaże TwojÄ… pozycjÄ™ w pliku i status pliku. SHIFT-G przenosi CiÄ™ do koÅ„ca pliku. @@ -600,7 +600,7 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu By zamienić wszystkie wystÄ…pienia w pliku, wpisz :%s/stary/nowy/g By Vim prosiÅ‚ CiÄ™ o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE? + Lekcja 1.5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE? ** Wpisz :! a nastÄ™pnie zewnÄ™trzne polecenie, by je wykonać. ** @@ -623,7 +623,7 @@ Uwaga: Wszystkie polecenia : muszÄ… być zakoÅ„czone . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW + Lekcja 1.5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW ** By zachować zmiany w tekÅ›cie, wpisz :w NAZWA_PLIKU . ** @@ -646,7 +646,7 @@ Uwaga: Zauważ, że gdybyÅ› teraz wyszedÅ‚ z Vima, a nastÄ™pnie wszedÅ‚ ponownie lub (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU + Lekcja 1.5.3.: WYBRANIE TEKSTU DO ZAPISU ** By zachować część pliku, wpisz v ruch :w NAZWA_PLIKU ** @@ -669,14 +669,14 @@ UWAGA: WciÅ›niÄ™cie v zaczyna tryb Wizualny. Możesz poruszać kursorem, by z tekstem. Na przykÅ‚ad d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.4.: WSTAWIANIE I ÅÄ„CZENIE PLIKÓW + Lekcja 1.5.4.: WSTAWIANIE I ÅÄ„CZENIE PLIKÓW ** By wstawić zawartość pliku, wpisz :r NAZWA_PLIKU ** 1. Umieść kursor tuż powyżej tej linii. -UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 1.5.3. Potem przejdź do DOÅU, by zobaczyć ponownie tÄ™ lekcjÄ™. 2. Teraz wczytaj plik TEST używajÄ…c polecenia :r TEST , gdzie TEST @@ -684,7 +684,7 @@ UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź Wczytany plik jest umieszczony poniżej linii z kursorem. 3. By sprawdzić czy plik zostaÅ‚ wczytany, cofnij kursor i zobacz, że - teraz sÄ… dwie kopie Lekcji 5.3., oryginaÅ‚ i kopia z pliku. + teraz sÄ… dwie kopie Lekcji 1.5.3., oryginaÅ‚ i kopia z pliku. UWAGA: Możesz też wczytać wyjÅ›cie zewnÄ™trznego polecenia. Na przykÅ‚ad :r !ls wczytuje wyjÅ›cie polecenia ls i umieszcza je pod poniżej @@ -692,7 +692,7 @@ UWAGA: Możesz też wczytać wyjÅ›cie zewnÄ™trznego polecenia. Na przykÅ‚ad ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 5. PODSUMOWANIE + LEKCJA 1.5. PODSUMOWANIE 1. :!polecenie wykonuje polecenie zewnÄ™trzne. @@ -715,7 +715,7 @@ UWAGA: Możesz też wczytać wyjÅ›cie zewnÄ™trznego polecenia. Na przykÅ‚ad ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.1.: POLECENIE OPEN (otwórz) + Lekcja 1.6.1.: POLECENIE OPEN (otwórz) ** Wpisz o by otworzyć liniÄ™ poniżej kursora i przenieść siÄ™ do @@ -738,7 +738,7 @@ UWAGA: Możesz też wczytać wyjÅ›cie zewnÄ™trznego polecenia. Na przykÅ‚ad ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.2.: POLECENIE APPEND (dodaj) + Lekcja 1.6.2.: POLECENIE APPEND (dodaj) ** Wpisz a by dodać tekst ZA kursorem. ** @@ -761,7 +761,7 @@ UWAGA: Możesz też wczytać wyjÅ›cie zewnÄ™trznego polecenia. Na przykÅ‚ad Uwaga: a , i oraz A prowadzÄ… do trybu Insert, jedynÄ… różnicÄ… jest miejsce, gdzie nowe znaki bÄ™dÄ… dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) + Lekcja 1.6.3.: INNA WERSJA REPLACE (zamiana) ** Wpisz wielkie R by zamienić wiÄ™cej niż jeden znak. ** @@ -784,7 +784,7 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejÄ…cy znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU + Lekcja 1.6.4.: KOPIOWANIE I WKLEJANIE TEKSTU ** użyj operatora y aby skopiować tekst i p aby go wkleić ** @@ -807,7 +807,7 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejÄ…cy Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 6.5.: USTAWIANIE OPCJI + Lekcja 1.6.5.: USTAWIANIE OPCJI ** Ustawianie opcji tak, by szukaj lub substytucja ignorowaÅ‚y wielkość liter ** @@ -831,7 +831,7 @@ Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. Uwaga: Aby usunąć podÅ›wietlanie dopasowaÅ„, wpisz: :nohlsearch Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 6. PODSUMOWANIE + LEKCJA 1.6. PODSUMOWANIE 1. Wpisanie o otwiera liniÄ™ PONIÅ»EJ kursora. @@ -856,7 +856,7 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c ** @@ -922,7 +922,7 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c. Użyteczne zwÅ‚aszcza przy :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 7. PODSUMOWANIE + Lekcja 1.7. PODSUMOWANIE 1. Wpisz :help albo wciÅ›nij lub aby otworzyć okno pomocy. diff --git a/runtime/tutor/tutor.pt b/runtime/tutor/tutor1.pt similarity index 92% rename from runtime/tutor/tutor.pt rename to runtime/tutor/tutor1.pt index 5735c09dc9..d3dcb05e15 100644 --- a/runtime/tutor/tutor.pt +++ b/runtime/tutor/tutor1.pt @@ -22,9 +22,9 @@ Agora, certifique-se de que sua tecla Shift-Lock (ou Caps Lock) não esteja ativada e pressione a tecla j o bastante para mover o cursor até que a - Lição 1.1 apareça inteiramente na tela. + Lição 1.1.1 apareça inteiramente na tela. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.1: MOVER O CURSOR + Lição 1.1.1: MOVER O CURSOR ** Para mover o cursor, pressione as teclas h,j,k,l conforme indicado. ** @@ -38,7 +38,7 @@ 2. Segure pressionada a tecla (j) até haver repetição. Agora você já sabe como ir para a próxima lição. - 3. Usando a tecla j, vá para a Lição 1.2. + 3. Usando a tecla j, vá para a Lição 1.1.2. NOTA: Se está inseguro sobre o que digitou, pressione para colocá-lo no modo Normal. Então redigite o comando que queria. @@ -47,7 +47,7 @@ NOTA: As teclas de cursor funcionam tamb esteja acostumado, você poderá se mover muito mais rapidamente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.2: SAIR DO VIM + Lição 1.1.2: SAIR DO VIM !! NOTA: Antes de executar quaisquer dos passos abaixo, leia a lição inteira !! @@ -66,10 +66,10 @@ NOTA: As teclas de cursor funcionam tamb NOTA: :q! descarta qualquer mudança. Em uma próxima lição será ensinado como salvar as mudanças feitas em um arquivo. - 5. Desça o cursor até a Lição 1.3. + 5. Desça o cursor até a Lição 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.3: EDITAR TEXTOS - REMOÇÃO + Lição 1.1.3: EDITAR TEXTOS - REMOÇÃO ** Pressione x para deletar o caractere sob o cursor. ** @@ -85,14 +85,14 @@ NOTA: :q! descarta qualquer mudan ---> A vvaca pullouu por ccimaa dda luuua. - 5. Agora que a frase está correta, prossiga para a Lição 1.4. + 5. Agora que a frase está correta, prossiga para a Lição 1.1.4. NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.4: EDITAR TEXTOS - INSERÇÃO + Lição 1.1.4: EDITAR TEXTOS - INSERÇÃO ** Pressione i para inserir texto. ** @@ -111,11 +111,11 @@ NOTA: Enquanto segue este tutorial, n ---> Tem algum texto faltando nesta linha. 5. Quando se sentir à vontade com a inserção de texto, mova o cursor para - a Lição 1.5. + a Lição 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.5: EDITAR TEXTO - ADICIONAR + Lição 1.1.5: EDITAR TEXTO - ADICIONAR ** Pressione A para adicionar texto. ** @@ -134,17 +134,17 @@ NOTA: Enquanto segue este tutorial, n ---> Há algum texto faltan Há algum texto faltando aqui. - 5. Quando se sentir confortável adicionando texto, vá para a Lição 1.6. + 5. Quando se sentir confortável adicionando texto, vá para a Lição 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.6: EDITAR UM ARQUIVO + Lição 1.1.6: EDITAR UM ARQUIVO ** Use :wq para salvar um arquivo e sair. ** !! NOTA: Leia toda a lição antes de executar as instruções!! - 1. Saia deste tutorial como o fez na lição 1.2: :q! + 1. Saia deste tutorial como o fez na lição 1.1.2: :q! Ou, se tiver acesso a outro terminal, faça o seguinte nele. 2. No prompt do shell, digite esse comando: vim tutor @@ -161,7 +161,7 @@ NOTA: Enquanto segue este tutorial, n 6. Após ler os passos acima e compreendê-los, execute-os. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 1 + RESUMO DA LIÇÃO 1.1 1. O cursor é movido usando tanto as teclas de seta quanto as teclas hjkl. h (esquerda) j (para baixo) k (para cima) l (direita) @@ -181,10 +181,10 @@ NOTA: Enquanto segue este tutorial, n NOTA: Pressionando você irá para o modo Normal ou cancelará um comando ainda incompleto. -Agora continue com a Lição 2. +Agora continue com a Lição 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.1: COMANDOS DE REMOÇÃO + Lição 1.2.1: COMANDOS DE REMOÇÃO ** Digite dw para apagar uma palavra. ** @@ -204,10 +204,10 @@ Agora continue com a Li ---> Tem a algumas oi palavras diversão que não pertencem papel a esta frase. 5. Repita os passos 3 ao 4 até que a frase esteja correta e vá para a - Lição 2.2. + Lição 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.2: MAIS COMANDOS DE REMOÇÃO + Lição 1.2.2: MAIS COMANDOS DE REMOÇÃO ** Digite d$ para deletar até o fim da linha. ** @@ -223,14 +223,14 @@ Agora continue com a Li ---> Alguém digitou o fim desta linha duas vezes. desta linha duas vezes. - 5. Vá para a lição 2.3 para entender o funcionamento deste comando. + 5. Vá para a lição 1.2.3 para entender o funcionamento deste comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.3: SOBRE OPERADORES E MOVIMENTOS + Lição 1.2.3: SOBRE OPERADORES E MOVIMENTOS Muitos comandos que mudam texto são feitos de um operador e de um movimento. O formato para um comando apagar com o operador de remoção d tem a @@ -254,7 +254,7 @@ operador, faz o cursor se mover como especificado na lista de teclas de movimento. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.4: USAR UM CONTADOR PARA UM MOVIMENTO + Lição 1.2.4: USAR UM CONTADOR PARA UM MOVIMENTO ** Digitar um número antes de um movimento repete-o o tanto de vezes. ** @@ -271,13 +271,13 @@ movimento. ---> Esta é uma linha com algumas palavras para permiti-lo fazer movimentos. - 6. Vá para a Lição 2.5. + 6. Vá para a Lição 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.5: USAR UM CONTADOR PARA APAGAR MAIS + Lição 1.2.5: USAR UM CONTADOR PARA APAGAR MAIS ** Digitar um número com um operador repete-o esse número de vezes. ** @@ -300,7 +300,7 @@ movimento. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.6: TRABALHAR COM LINHAS + Lição 1.2.6: TRABALHAR COM LINHAS ** Digite dd para apagar uma linha inteira. ** @@ -323,7 +323,7 @@ movimento. Notas do tradutor: Lama (mud) em inglês pode significar fofoca, difamação. Há rima no texto original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.7: O COMANDO UNDO (DESFAZER) + Lição 1.2.7: O COMANDO UNDO (DESFAZER) ** Pressione u para desfazer os últimos comandos, U recupera a linha inteira.** @@ -340,13 +340,13 @@ Notas do tradutor: Lama (mud) em ingl ---> Corriija os erros nnesta linha e reetorne-os com undo. - 8. Esses comandos são muito úteis. Agora vá para o resumo da Lição 2. + 8. Esses comandos são muito úteis. Agora vá para o resumo da Lição 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 2 + RESUMO DA LIÇÃO 1.2 1. Para apagar do cursor até a próxima palavra, digite: dw @@ -371,7 +371,7 @@ Notas do tradutor: Lama (mud) em ingl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.1: O COMANDO COLAR + Lição 1.3.1: O COMANDO COLAR ** Digite p para colar após o cursor o que acabou de apagar. ** @@ -394,7 +394,7 @@ Notas do tradutor: Lama (mud) em ingl Nota do tradutor: Há rima no original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.2: O COMANDO SUBSTITUIR + Lição 1.3.2: O COMANDO SUBSTITUIR ** Digite rx para substituir o caractere sob o cursor por x . ** @@ -410,14 +410,14 @@ Nota do tradutor: H ---> Quendo este limha foi dugitada, alguem pressioniu algumas teclas erradzs! ---> Quando esta linha foi digitada, alguém pressionou algumas teclas erradas! - 5. Agora vá para a Lição 3.3. + 5. Agora vá para a Lição 1.3.3. NOTA: Lembre-se que você deve aprender pelo uso, não pela memorização. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.3: O OPERADOR CHANGE (MUDAR) + Lição 1.3.3: O OPERADOR CHANGE (MUDAR) ** Para alterar até o fim de uma palavra, digite ce . ** @@ -440,7 +440,7 @@ de Inser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.4: MAIS MUDANÇAS USANDO c + Lição 1.3.4: MAIS MUDANÇAS USANDO c ** O operador change é usado com os mesmos movimentos que o delete. ** @@ -455,8 +455,8 @@ de Inser 4. Mova o cursor até o primeiro erro. - 5. Digite c$ e digite o resto da segunda para torná-las iguais e - pressione . + 5. Digite c$ e digite o resto da segunda linha para torná-las iguais e + pressione . ---> O fim desta linha precisa de ajuda para ficar igual à segunda. ---> O fim desta linha precisa ser corrigido usando o comando c$. @@ -464,7 +464,7 @@ de Inser NOTA: Você pode usar a tecla Backspace para corrigir erros enquanto digita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 3 + RESUMO DA LIÇÃO 1.3 1. Para reinserir um texto que já foi apagado, digite p . Isso coloca o texto @@ -487,7 +487,7 @@ Agora v ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.1: LOCALIZAÇÃO DO CURSOR E ESTADO DO ARQUIVO + Lição 1.4.1: LOCALIZAÇÃO DO CURSOR E ESTADO DO ARQUIVO ** Digite CTRL-G para mostrar sua localização no arquivo e seu estado. Digite G para mover para uma linha do arquivo. ** @@ -510,7 +510,7 @@ NOTA: A posi 4. Se estiver seguro para fazê-los, execute os passos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.2: O COMANDO BUSCAR + Lição 1.4.2: O COMANDO BUSCAR ** Digite / seguido por uma frase para procurar por ela. ** @@ -534,7 +534,7 @@ NOTA: Quando a busca atinge o fim do arquivo ela continuar menos que a opção 'wrapscan' esteja desativada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.3: BUSCA DE PARÊNTESES CORRESPONDENTES + Lição 1.4.3: BUSCA DE PARÊNTESES CORRESPONDENTES ** Digite % para encontrar um ),], ou } correspondente. ** @@ -557,7 +557,7 @@ Nota: Isso ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.4: O COMANDO SUBSTITUIR + Lição 1.4.4: O COMANDO SUBSTITUIR ** Digite :s/velho/novo/g para substituir 'velho' por 'novo'. ** @@ -581,7 +581,7 @@ Nota: Isso substituição. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 4 + RESUMO DA LIÇÃO 1.4 1. CTRL-G mostra em que ponto do arquivo está e o estado dele. @@ -607,7 +607,7 @@ Nota: Isso Para confirmar cada substituição adicione 'c' :%s/velho/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.1: COMO EXECUTAR UM COMANDO EXTERNO + Lição 1.5.1: COMO EXECUTAR UM COMANDO EXTERNO ** Digite :! seguido por um comando externo para executá-lo. ** @@ -630,7 +630,7 @@ NOTA: Todos os comandos : devem ser finalizados teclando-se ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.2: MAIS SOBRE SALVAR ARQUIVOS + Lição 1.5.2: MAIS SOBRE SALVAR ARQUIVOS ** Para salvar as alterações no texto, digite :w NOMEDOARQUIVO. ** @@ -653,7 +653,7 @@ NOTA: Se sair do Vim e entrar de novo com o nome do arquivo TESTE, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.3: SELECIONAR O TEXTO A SER SALVO + Lição 1.5.3: SELECIONAR O TEXTO A SER SALVO ** Para salvar parte de um arquivo, digite v movimento :w NOMEDOARQUIVO ** @@ -676,14 +676,14 @@ cursor pela tela para tornar a sele operador para executar alguma ação. Por exemplo, d apaga o texto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.4: RECUPERAR E UNIR ARQUIVOS + Lição 1.5.4: RECUPERAR E UNIR ARQUIVOS ** Para inserir o conteúdo de um arquivo, digite :r NOMEDOARQUIVO ** 1. Posicione o cursor logo acima desta linha. -NOTA: Depois de executar o Passo 2 você verá a Lição 5.3. Então DESÇA o +NOTA: Depois de executar o Passo 2 você verá a Lição 1.5.3. Então DESÇA o cursor para ver esta lição novamente. 2. Agora recupere o arquivo TESTE usando o comando :r TESTE onde TESTE é o @@ -691,7 +691,7 @@ NOTA: Depois de executar o Passo 2 voc O arquivo recuperado é colocado abaixo da linha atual do cursor. 3. Para verificar que o arquivo foi recuperado, volte com o cursor e verifique - que agora existem duas cópias da Lição 5.3, a original e a versão do + que agora existem duas cópias da Lição 1.5.3, a original e a versão do arquivo. NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !ls @@ -699,7 +699,7 @@ NOTA: Voc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 5 + RESUMO DA LIÇÃO 1.5 1. :!comando executa um comando externo. @@ -722,7 +722,7 @@ NOTA: Voc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.1: O COMANDO ABRIR + Lição 1.6.1: O COMANDO ABRIR ** Digite o para abrir uma linha em baixo do cursor e ir para o modo de Inserção. ** @@ -745,7 +745,7 @@ NOTA: Voc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.2: O COMANDO ADICIONAR + Lição 1.6.2: O COMANDO ADICIONAR ** Digite a para inserir texto DEPOIS do cursor. ** @@ -768,7 +768,7 @@ NOTA: Voc NOTA: a, i e A levam ao mesmo modo de Inserção, a única diferença é onde os caracteres são inseridos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.3: UMA OUTRA VERSÃO DO SUBSTITUIR + Lição 1.6.3: UMA OUTRA VERSÃO DO SUBSTITUIR ** Digite um R maiúsculo para substituir mais de um caractere. ** @@ -791,7 +791,7 @@ NOTA: O modo de Substitui digitado apaga um caractere existente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.4: COPIAR E COLAR TEXTO + Lição 1.6.4: COPIAR E COLAR TEXTO ** Use o operador y para copiar texto e p para colá-lo. ** @@ -816,7 +816,7 @@ NOTA: Voc palavra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.5: CONFIGURAR PREFERÊNCIAS + Lição 1.6.5: CONFIGURAR PREFERÊNCIAS ** Configure uma preferência de modo que uma busca ou substituição ignore se as letras são maiúsculas ou minúsculas. ** @@ -842,7 +842,7 @@ NOTA: Se quiser ignorar a diferen uma pesquisa, use \c no comando: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 6 + RESUMO DA LIÇÃO 1.6 1. Digite o para abrir uma linha ABAIXO do cursor e iniciar o modo de Inserção. @@ -868,7 +868,7 @@ NOTA: Se quiser ignorar a diferen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LIÇÃO 7.1: OBTENDO AJUDA + LIÇÃO 1.7.1: OBTENDO AJUDA ** Use o sistema de ajuda do próprio Vim ** @@ -891,7 +891,7 @@ NOTA: Se quiser ignorar a diferen :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 7.2: CRIAR UM SCRIPT DE INICIALIZAÇÃO + Lição 1.7.2: CRIAR UM SCRIPT DE INICIALIZAÇÃO ** Habilite recursos do Vim ** @@ -900,11 +900,11 @@ NOTA: Se quiser ignorar a diferen arquivo "vimrc". 1. Comece a editar o arquivo "vimrc". Isso depende do sistema: - :e ~/.vimrc para Unix - :e ~/_vimrc para MS-Windows + :e ~/.vimrc para Unix + :e ~/_vimrc para MS-Windows 2. Agora, leia o conteúdo do arquivo "vimrc" de exemplo: - :r $VIMRUNTIME/vimrc_example.vim + :r $VIMRUNTIME/vimrc_example.vim 3. Salve o arquivo com: :w @@ -914,7 +914,7 @@ NOTA: Se quiser ignorar a diferen maiores informações, digite: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 7.3: COMPLETAÇÃO + Lição 1.7.3: COMPLETAÇÃO ** Completação da linha de comando com CTRL-D e ** @@ -938,7 +938,7 @@ NOTA: A completa . Isso é especialmente útil para :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 7 + RESUMO DA LIÇÃO 1.7 1. Digite :help ou pressione ou para abrir a janela de ajuda. diff --git a/runtime/tutor/tutor.pt.utf-8 b/runtime/tutor/tutor1.pt.utf-8 similarity index 93% rename from runtime/tutor/tutor.pt.utf-8 rename to runtime/tutor/tutor1.pt.utf-8 index 9d8e758867..a731365a6f 100644 --- a/runtime/tutor/tutor.pt.utf-8 +++ b/runtime/tutor/tutor1.pt.utf-8 @@ -22,9 +22,9 @@ Agora, certifique-se de que sua tecla Shift-Lock (ou Caps Lock) não esteja ativada e pressione a tecla j o bastante para mover o cursor até que a - Lição 1.1 apareça inteiramente na tela. + Lição 1.1.1 apareça inteiramente na tela. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.1: MOVER O CURSOR + Lição 1.1.1: MOVER O CURSOR ** Para mover o cursor, pressione as teclas h,j,k,l conforme indicado. ** @@ -38,7 +38,7 @@ 2. Segure pressionada a tecla (j) até haver repetição. Agora você já sabe como ir para a próxima lição. - 3. Usando a tecla j, vá para a Lição 1.2. + 3. Usando a tecla j, vá para a Lição 1.1.2. NOTA: Se está inseguro sobre o que digitou, pressione para colocá-lo no modo Normal. Então redigite o comando que queria. @@ -47,7 +47,7 @@ NOTA: As teclas de cursor funcionam também. Mas usando hjkl, tão logo esteja acostumado, você poderá se mover muito mais rapidamente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.2: SAIR DO VIM + Lição 1.1.2: SAIR DO VIM !! NOTA: Antes de executar quaisquer dos passos abaixo, leia a lição inteira !! @@ -66,10 +66,10 @@ NOTA: As teclas de cursor funcionam também. Mas usando hjkl, tão logo NOTA: :q! descarta qualquer mudança. Em uma próxima lição será ensinado como salvar as mudanças feitas em um arquivo. - 5. Desça o cursor até a Lição 1.3. + 5. Desça o cursor até a Lição 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.3: EDITAR TEXTOS - REMOÇÃO + Lição 1.1.3: EDITAR TEXTOS - REMOÇÃO ** Pressione x para deletar o caractere sob o cursor. ** @@ -85,14 +85,14 @@ NOTA: :q! descarta qualquer mudança. Em uma próxima lição será ---> A vvaca pullouu por ccimaa dda luuua. - 5. Agora que a frase está correta, prossiga para a Lição 1.4. + 5. Agora que a frase está correta, prossiga para a Lição 1.1.4. NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.4: EDITAR TEXTOS - INSERÇÃO + Lição 1.1.4: EDITAR TEXTOS - INSERÇÃO ** Pressione i para inserir texto. ** @@ -111,11 +111,11 @@ NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. ---> Tem algum texto faltando nesta linha. 5. Quando se sentir à vontade com a inserção de texto, mova o cursor para - a Lição 1.5. + a Lição 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.5: EDITAR TEXTO - ADICIONAR + Lição 1.1.5: EDITAR TEXTO - ADICIONAR ** Pressione A para adicionar texto. ** @@ -134,17 +134,17 @@ NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. ---> Há algum texto faltan Há algum texto faltando aqui. - 5. Quando se sentir confortável adicionando texto, vá para a Lição 1.6. + 5. Quando se sentir confortável adicionando texto, vá para a Lição 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 1.6: EDITAR UM ARQUIVO + Lição 1.1.6: EDITAR UM ARQUIVO ** Use :wq para salvar um arquivo e sair. ** !! NOTA: Leia toda a lição antes de executar as instruções!! - 1. Saia deste tutorial como o fez na lição 1.2: :q! + 1. Saia deste tutorial como o fez na lição 1.1.2: :q! Ou, se tiver acesso a outro terminal, faça o seguinte nele. 2. No prompt do shell, digite esse comando: vim tutor @@ -161,7 +161,7 @@ NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. 6. Após ler os passos acima e compreendê-los, execute-os. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 1 + RESUMO DA LIÇÃO 1.1 1. O cursor é movido usando tanto as teclas de seta quanto as teclas hjkl. h (esquerda) j (para baixo) k (para cima) l (direita) @@ -181,10 +181,10 @@ NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. NOTA: Pressionando você irá para o modo Normal ou cancelará um comando ainda incompleto. -Agora continue com a Lição 2. +Agora continue com a Lição 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.1: COMANDOS DE REMOÇÃO + Lição 1.2.1: COMANDOS DE REMOÇÃO ** Digite dw para apagar uma palavra. ** @@ -204,10 +204,10 @@ Agora continue com a Lição 2. ---> Tem a algumas oi palavras diversão que não pertencem papel a esta frase. 5. Repita os passos 3 ao 4 até que a frase esteja correta e vá para a - Lição 2.2. + Lição 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.2: MAIS COMANDOS DE REMOÇÃO + Lição 1.2.2: MAIS COMANDOS DE REMOÇÃO ** Digite d$ para deletar até o fim da linha. ** @@ -223,14 +223,14 @@ Agora continue com a Lição 2. ---> Alguém digitou o fim desta linha duas vezes. desta linha duas vezes. - 5. Vá para a lição 2.3 para entender o funcionamento deste comando. + 5. Vá para a lição 1.2.3 para entender o funcionamento deste comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.3: SOBRE OPERADORES E MOVIMENTOS + Lição 1.2.3: SOBRE OPERADORES E MOVIMENTOS Muitos comandos que mudam texto são feitos de um operador e de um movimento. O formato para um comando apagar com o operador de remoção d tem a @@ -254,7 +254,7 @@ operador, faz o cursor se mover como especificado na lista de teclas de movimento. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.4: USAR UM CONTADOR PARA UM MOVIMENTO + Lição 1.2.4: USAR UM CONTADOR PARA UM MOVIMENTO ** Digitar um número antes de um movimento repete-o o tanto de vezes. ** @@ -271,13 +271,13 @@ movimento. ---> Esta é uma linha com algumas palavras para permiti-lo fazer movimentos. - 6. Vá para a Lição 2.5. + 6. Vá para a Lição 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.5: USAR UM CONTADOR PARA APAGAR MAIS + Lição 1.2.5: USAR UM CONTADOR PARA APAGAR MAIS ** Digitar um número com um operador repete-o esse número de vezes. ** @@ -300,7 +300,7 @@ movimento. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.6: TRABALHAR COM LINHAS + Lição 1.2.6: TRABALHAR COM LINHAS ** Digite dd para apagar uma linha inteira. ** @@ -323,7 +323,7 @@ movimento. Notas do tradutor: Lama (mud) em inglês pode significar fofoca, difamação. Há rima no texto original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 2.7: O COMANDO UNDO (DESFAZER) + Lição 1.2.7: O COMANDO UNDO (DESFAZER) ** Pressione u para desfazer os últimos comandos, U recupera a linha inteira.** @@ -340,13 +340,13 @@ Notas do tradutor: Lama (mud) em inglês pode significar fofoca, difamação. ---> Corriija os erros nnesta linha e reetorne-os com undo. - 8. Esses comandos são muito úteis. Agora vá para o resumo da Lição 2. + 8. Esses comandos são muito úteis. Agora vá para o resumo da Lição 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 2 + RESUMO DA LIÇÃO 1.2 1. Para apagar do cursor até a próxima palavra, digite: dw @@ -371,7 +371,7 @@ Notas do tradutor: Lama (mud) em inglês pode significar fofoca, difamação. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.1: O COMANDO COLAR + Lição 1.3.1: O COMANDO COLAR ** Digite p para colar após o cursor o que acabou de apagar. ** @@ -394,7 +394,7 @@ Notas do tradutor: Lama (mud) em inglês pode significar fofoca, difamação. Nota do tradutor: Há rima no original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.2: O COMANDO SUBSTITUIR + Lição 1.3.2: O COMANDO SUBSTITUIR ** Digite rx para substituir o caractere sob o cursor por x . ** @@ -410,14 +410,14 @@ Nota do tradutor: Há rima no original. ---> Quendo este limha foi dugitada, alguem pressioniu algumas teclas erradzs! ---> Quando esta linha foi digitada, alguém pressionou algumas teclas erradas! - 5. Agora vá para a Lição 3.3. + 5. Agora vá para a Lição 1.3.3. NOTA: Lembre-se que você deve aprender pelo uso, não pela memorização. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.3: O OPERADOR CHANGE (MUDAR) + Lição 1.3.3: O OPERADOR CHANGE (MUDAR) ** Para alterar até o fim de uma palavra, digite ce . ** @@ -440,7 +440,7 @@ de Inserção. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 3.4: MAIS MUDANÇAS USANDO c + Lição 1.3.4: MAIS MUDANÇAS USANDO c ** O operador change é usado com os mesmos movimentos que o delete. ** @@ -464,7 +464,7 @@ de Inserção. NOTA: Você pode usar a tecla Backspace para corrigir erros enquanto digita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 3 + RESUMO DA LIÇÃO 1.3 1. Para reinserir um texto que já foi apagado, digite p . Isso coloca o texto @@ -487,7 +487,7 @@ Agora vá para a próxima lição. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.1: LOCALIZAÇÃO DO CURSOR E ESTADO DO ARQUIVO + Lição 1.4.1: LOCALIZAÇÃO DO CURSOR E ESTADO DO ARQUIVO ** Digite CTRL-G para mostrar sua localização no arquivo e seu estado. Digite G para mover para uma linha do arquivo. ** @@ -510,7 +510,7 @@ NOTA: A posição do cursor pode estar visível no canto direito inferior da 4. Se estiver seguro para fazê-los, execute os passos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.2: O COMANDO BUSCAR + Lição 1.4.2: O COMANDO BUSCAR ** Digite / seguido por uma frase para procurar por ela. ** @@ -534,7 +534,7 @@ NOTA: Quando a busca atinge o fim do arquivo ela continuará do começo, a menos que a opção 'wrapscan' esteja desativada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.3: BUSCA DE PARÊNTESES CORRESPONDENTES + Lição 1.4.3: BUSCA DE PARÊNTESES CORRESPONDENTES ** Digite % para encontrar um ),], ou } correspondente. ** @@ -557,7 +557,7 @@ Nota: Isso é muito útil para corrigir um programa com parêntese não-casado! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 4.4: O COMANDO SUBSTITUIR + Lição 1.4.4: O COMANDO SUBSTITUIR ** Digite :s/velho/novo/g para substituir 'velho' por 'novo'. ** @@ -581,7 +581,7 @@ Nota: Isso é muito útil para corrigir um programa com parêntese não-casado! substituição. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 4 + RESUMO DA LIÇÃO 1.4 1. CTRL-G mostra em que ponto do arquivo está e o estado dele. @@ -607,7 +607,7 @@ Nota: Isso é muito útil para corrigir um programa com parêntese não-casado! Para confirmar cada substituição adicione 'c' :%s/velho/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.1: COMO EXECUTAR UM COMANDO EXTERNO + Lição 1.5.1: COMO EXECUTAR UM COMANDO EXTERNO ** Digite :! seguido por um comando externo para executá-lo. ** @@ -630,7 +630,7 @@ NOTA: Todos os comandos : devem ser finalizados teclando-se ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.2: MAIS SOBRE SALVAR ARQUIVOS + Lição 1.5.2: MAIS SOBRE SALVAR ARQUIVOS ** Para salvar as alterações no texto, digite :w NOMEDOARQUIVO. ** @@ -653,7 +653,7 @@ NOTA: Se sair do Vim e entrar de novo com o nome do arquivo TESTE, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.3: SELECIONAR O TEXTO A SER SALVO + Lição 1.5.3: SELECIONAR O TEXTO A SER SALVO ** Para salvar parte de um arquivo, digite v movimento :w NOMEDOARQUIVO ** @@ -676,14 +676,14 @@ cursor pela tela para tornar a seleção maior ou menor. Pode, então, usar um operador para executar alguma ação. Por exemplo, d apaga o texto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 5.4: RECUPERAR E UNIR ARQUIVOS + Lição 1.5.4: RECUPERAR E UNIR ARQUIVOS ** Para inserir o conteúdo de um arquivo, digite :r NOMEDOARQUIVO ** 1. Posicione o cursor logo acima desta linha. -NOTA: Depois de executar o Passo 2 você verá a Lição 5.3. Então DESÇA o +NOTA: Depois de executar o Passo 2 você verá a Lição 1.5.3. Então DESÇA o cursor para ver esta lição novamente. 2. Agora recupere o arquivo TESTE usando o comando :r TESTE onde TESTE é o @@ -691,7 +691,7 @@ NOTA: Depois de executar o Passo 2 você verá a Lição 5.3. Então DESÇA o O arquivo recuperado é colocado abaixo da linha atual do cursor. 3. Para verificar que o arquivo foi recuperado, volte com o cursor e verifique - que agora existem duas cópias da Lição 5.3, a original e a versão do + que agora existem duas cópias da Lição 1.5.3, a original e a versão do arquivo. NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !ls @@ -699,7 +699,7 @@ NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !l ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 5 + RESUMO DA LIÇÃO 1.5 1. :!comando executa um comando externo. @@ -722,7 +722,7 @@ NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !l ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.1: O COMANDO ABRIR + Lição 1.6.1: O COMANDO ABRIR ** Digite o para abrir uma linha em baixo do cursor e ir para o modo de Inserção. ** @@ -745,7 +745,7 @@ NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !l ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.2: O COMANDO ADICIONAR + Lição 1.6.2: O COMANDO ADICIONAR ** Digite a para inserir texto DEPOIS do cursor. ** @@ -768,7 +768,7 @@ NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !l NOTA: a, i e A levam ao mesmo modo de Inserção, a única diferença é onde os caracteres são inseridos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.3: UMA OUTRA VERSÃO DO SUBSTITUIR + Lição 1.6.3: UMA OUTRA VERSÃO DO SUBSTITUIR ** Digite um R maiúsculo para substituir mais de um caractere. ** @@ -791,7 +791,7 @@ NOTA: O modo de Substituição é como o modo de Inserção, mas cada caractere digitado apaga um caractere existente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.4: COPIAR E COLAR TEXTO + Lição 1.6.4: COPIAR E COLAR TEXTO ** Use o operador y para copiar texto e p para colá-lo. ** @@ -816,7 +816,7 @@ NOTA: Você também pode usar y como um operador; por exemplo, yw copia uma palavra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 6.5: CONFIGURAR PREFERÊNCIAS + Lição 1.6.5: CONFIGURAR PREFERÊNCIAS ** Configure uma preferência de modo que uma busca ou substituição ignore se as letras são maiúsculas ou minúsculas. ** @@ -842,7 +842,7 @@ NOTA: Se quiser ignorar a diferença entre maiúsculas e minúsculas em apenas uma pesquisa, use \c no comando: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 6 + RESUMO DA LIÇÃO 1.6 1. Digite o para abrir uma linha ABAIXO do cursor e iniciar o modo de Inserção. @@ -868,7 +868,7 @@ NOTA: Se quiser ignorar a diferença entre maiúsculas e minúsculas em apenas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LIÇÃO 7.1: OBTENDO AJUDA + LIÇÃO 1.7.1: OBTENDO AJUDA ** Use o sistema de ajuda do próprio Vim ** @@ -891,7 +891,7 @@ NOTA: Se quiser ignorar a diferença entre maiúsculas e minúsculas em apenas :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 7.2: CRIAR UM SCRIPT DE INICIALIZAÇÃO + Lição 1.7.2: CRIAR UM SCRIPT DE INICIALIZAÇÃO ** Habilite recursos do Vim ** @@ -914,7 +914,7 @@ NOTA: Se quiser ignorar a diferença entre maiúsculas e minúsculas em apenas maiores informações, digite: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lição 7.3: COMPLETAÇÃO + Lição 1.7.3: COMPLETAÇÃO ** Completação da linha de comando com CTRL-D e ** @@ -938,7 +938,7 @@ NOTA: A completação funciona com muitos comandos. Basta pressionar CTRL-D e . Isso é especialmente útil para :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMO DA LIÇÃO 7 + RESUMO DA LIÇÃO 1.7 1. Digite :help ou pressione ou para abrir a janela de ajuda. diff --git a/runtime/tutor/tutor.ru b/runtime/tutor/tutor1.ru similarity index 88% rename from runtime/tutor/tutor.ru rename to runtime/tutor/tutor1.ru index fa5454602c..8cbd05a8ab 100644 --- a/runtime/tutor/tutor.ru +++ b/runtime/tutor/tutor1.ru @@ -1,12 +1,13 @@ =============================================================================== - ×ÅÒÓÉÑ 1.7 = äïâòï ðïöáìï÷áôø îá úáîñôéñ ðï òåäáëôïòõ Vim = +×ÅÒÓÉÑ 1.7 = äïâòï ðïöáìï÷áôø îá úáîñôéñ ðï òåäáëôïòõ Vim = +=============================================================================== += çìá÷á ðåò÷áñ = =============================================================================== ðÒÏÇÒÁÍÍÁ Vim -- ÜÔÏ ÏÞÅÎØ ÍÏÝÎÙÊ ÔÅËÓÔÏ×ÙÊ ÒÅÄÁËÔÏÒ, ÉÍÅÀÝÉÊ ÍÎÏÖÅÓÔ×Ï ËÏÍÁÎÄ, É ×ÓÅ ÉÈ ÐÒÏÓÔÏ ÎÅ×ÏÚÍÏÖÎÏ ÏÐÉÓÁÔØ × ÒÁÍËÁÈ ÜÔÏÇÏ ÕÞÅÂÎÉËÁ. äÁÎÎÙÊ ÖÅ ÕÞÅÂÎÉË ÐÒÉÚ×ÁÎ ÏÂßÑÓÎÉÔØ ÔÅ ËÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ÐÏÚ×ÏÌÑÔ ×ÁÍ Ó Ì£ÇËÏÓÔØÀ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ Vim × ËÁÞÅÓÔ×Å ÒÅÄÁËÔÏÒÁ ÏÂÝÅÇÏ ÎÁÚÎÁÞÅÎÉÑ. - îÁ ÏÓ×ÏÅÎÉÅ ÍÁÔÅÒÉÁÌÏ× ÜÔÏÇÏ ÕÞÅÂÎÉËÁ ÐÏÔÒÅÂÕÅÔÓÑ ÏËÏÌÏ 30 ÍÉÎÕÔ, ÎÏ ÜÔÏ ÚÁ×ÉÓÉÔ ÏÔ ÔÏÇÏ, ÓËÏÌØËÏ ×ÒÅÍÅÎÉ ×Ù ÐÏÓ×ÑÔÉÔÅ ÐÒÁËÔÉÞÅÓËÉÍ ÚÁÎÑÔÉÑÍ. @@ -18,11 +19,10 @@ ÷ÁÖÎÏ ÐÏÍÎÉÔØ, ÞÔÏ ÜÔÏÔ ÕÞÅÂÎÉË ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÐÒÁËÔÉÞÅÓËÏÇÏ ÏÂÕÞÅÎÉÑ. üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×Ù ÄÏÌÖÎÙ ÐÒÉÍÅÎÑÔØ ËÏÍÁÎÄÙ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ËÁË ÓÌÅÄÕÅÔ ÉÈ ÉÚÕÞÉÔØ. åÓÌÉ ×Ù ÐÒÏÓÔÏ ÐÒÏÞÉÔÁÅÔÅ ÜÔÏÔ ÔÅËÓÔ, ÔÏ ÎÅ ÚÁÐÏÍÎÉÔÅ ËÏÍÁÎÄÙ! - ôÅÐÅÒØ, ÕÂÅÄÉ×ÛÉÓØ, ÞÔÏ ÎÅ ×ËÌÀÞÅÎÁ ËÌÁ×ÉÛÁ , ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ j - ÎÅÓËÏÌØËÏ ÒÁÚ, ÔÁË, ÞÔÏÂÙ ÕÒÏË 1.1 ÐÏÌÎÏÓÔØÀ ÐÏÍÅÓÔÉÌÓÑ ÎÁ ÜËÒÁÎÅ. + ÎÅÓËÏÌØËÏ ÒÁÚ, ÔÁË, ÞÔÏÂÙ ÕÒÏË 1.1.1 ÐÏÌÎÏÓÔØÀ ÐÏÍÅÓÔÉÌÓÑ ÎÁ ÜËÒÁÎÅ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 1.1. ðåòåíåýåîéå ëáòåôëé + õÒÏË 1.1.1. ðåòåíåýåîéå ëáòåôëé ** þÔÏÂÙ ÐÅÒÅÍÅÝÁÔØ ËÁÒÅÔËÕ × ÕËÁÚÁÎÎÙÈ ÎÁÐÒÁ×ÌÅÎÉÑÈ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÉ h,j,k,l ** ^ ðÏÄÓËÁÚËÁ. @@ -35,7 +35,7 @@ 2. õÄÅÒÖÉ×ÁÊÔÅ ÎÁÖÁÔÏÊ ËÌÁ×ÉÛÕ "×ÎÉÚ" (j) ÄÌÑ ÂÅÓÐÒÅÒÙ×ÎÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ ËÁÒÅÔËÉ. ôÅÐÅÒØ ×Ù ÚÎÁÅÔÅ, ËÁË ÐÅÒÅÊÔÉ Ë ÓÌÅÄÕÀÝÅÍÕ ÕÒÏËÕ. - 3. éÓÐÏÌØÚÕÑ ËÌÁ×ÉÛÕ "×ÎÉÚ", ÔÏ ÅÓÔØ j , ÐÅÒÅÊÄÉÔÅ Ë ÕÒÏËÕ 1.2. + 3. éÓÐÏÌØÚÕÑ ËÌÁ×ÉÛÕ "×ÎÉÚ", ÔÏ ÅÓÔØ j , ÐÅÒÅÊÄÉÔÅ Ë ÕÒÏËÕ 1.1.2. óÏ×ÅÔ. åÓÌÉ ×Ù ÎÅ Õ×ÅÒÅÎÙ × ÐÒÁ×ÉÌØÎÏÓÔÉ ÎÁÂÒÁÎÎÏÇÏ ÔÅËÓÔÁ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ , @@ -46,7 +46,7 @@ ×ÙÐÏÌÎÑÔØ ÐÅÒÅÍÅÝÅÎÉÅ ËÁÒÅÔËÉ ËÌÁ×ÉÛÁÍÉ h j k l ÎÁÍÎÏÇÏ ÂÙÓÔÒÅÅ, ÓÔÏÉÔ ÔÏÌØËÏ ÎÅÍÎÏÇÏ ÐÏÔÒÅÎÉÒÏ×ÁÔØÓÑ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 1.2. úá÷åòûåîéå òáâïôù ðòïçòáííù + õÒÏË 1.1.2. úá÷åòûåîéå òáâïôù ðòïçòáííù ÷îéíáîéå! ðÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ÏÐÉÓÁÎÎÙÈ ÎÉÖÅ ÄÅÊÓÔ×ÉÊ, ÐÒÏÞÔÉÔÅ ÕÒÏË ÐÏÌÎÏÓÔØÀ! @@ -68,9 +68,9 @@ ðÏ ËÏÍÁÎÄÅ :q! ÂÕÄÕÔ ÓÂÒÏÛÅÎÙ ÌÀÂÙÅ ÓÄÅÌÁÎÎÙÅ ÉÚÍÅÎÅÎÉÑ. þÅÒÅÚ ÎÅÓËÏÌØËÏ ÕÒÏËÏ× ×Ù ÕÚÎÁÅÔÅ, ËÁË ÓÏÈÒÁÎÑÔØ ÉÚÍÅÎÅÎÉÑ × ÆÁÊÌ. - 5. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ ×ÎÉÚ Ë ÕÒÏËÕ 1.3. + 5. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ ×ÎÉÚ Ë ÕÒÏËÕ 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 1.3. òåäáëôéòï÷áîéå - õäáìåîéå ôåëóôá + õÒÏË 1.1.3. òåäáëôéòï÷áîéå - õäáìåîéå ôåëóôá ** þÔÏÂÙ ÕÄÁÌÉÔØ ÓÉÍ×ÏÌ ÐÏÄ ËÕÒÓÏÒÏÍ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ x ** @@ -79,21 +79,22 @@ 2. þÔÏÂÙ ÉÓÐÒÁ×ÉÔØ ÏÛÉÂËÉ, ÐÅÒÅÍÅÝÁÊÔÅ ËÁÒÅÔËÕ, ÐÏËÁ ÏÎÁ ÎÅ ÏËÁÖÅÔÓÑ ÎÁÄ ÕÄÁÌÑÅÍÙÍ ÓÉÍ×ÏÌÏÍ. - 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ x ÄÌÑ ÕÄÁÌÅÎÉÑ ÔÒÅÂÕÅÍÏÇÏ ÓÉÍ×ÏÌÁ (ÚÄÅÓØ x ÏÚÎÁÞÁÅÔ - ÌÁÔÉÎÓËÕÀ ÓÔÒÏÞÎÕÀ ÂÕË×Õ x ÎÁ ËÌÁ×ÉÁÔÕÒÅ). + 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ x ÄÌÑ ÕÄÁÌÅÎÉÑ ÔÒÅÂÕÅÍÏÇÏ ÓÉÍ×ÏÌÁ. 4. ðÏ×ÔÏÒÉÔÅ ÛÁÇÉ ÓÏ 2 ÐÏ 4, ÐÏËÁ ÓÔÒÏËÁ ÎÅ ÂÕÄÅÔ ÉÓÐÒÁ×ÌÅÎÁ. ---> ïÔ ÔÔÔÏÐÏÔÁ ËÏÐÙÔÔ ÐÐÐÙÌØ ÐÐÏ ÐÐÐÏÌÀ ÌÅÔÔÉÔÔ. - 5. ôÅÐÅÒØ, ËÏÇÄÁ ÓÔÒÏËÁ ÉÓÐÒÁ×ÌÅÎÁ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.4. + 5. ôÅÐÅÒØ, ËÏÇÄÁ ÓÔÒÏËÁ ÉÓÐÒÁ×ÌÅÎÁ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.1.4. ðÒÉÍÅÞÁÎÉÅ. ÷ ÈÏÄÅ ÜÔÉÈ ÚÁÎÑÔÉÊ ÎÅ ÐÙÔÁÊÔÅÓØ ÓÒÁÚÕ ×Ó£ ÚÁÐÏÍÉÎÁÔØ, ÕÞÉÔÅÓØ × ÐÒÏÃÅÓÓÅ ÒÁÂÏÔÙ. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 1.4. òåäáëôéòï÷áîéå - ÷óôá÷ëá ôåëóôá + õÒÏË 1.1.4. òåäáëôéòï÷áîéå - ÷óôá÷ëá ôåëóôá ** þÔÏÂÙ ×ÓÔÁ×ÉÔØ ÔÅËÓÔ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ i ** @@ -113,18 +114,18 @@ ---> þÁÓÔØ ÔÅËÓÔÁ × ÜÔÏÊ ÓÔÒÏËÅ ÂÅÓÓÌÅÄÎÏ ÐÒÏÐÁÌÏ. - 5. ëÏÇÄÁ ÏÓ×ÏÉÔÅ ×ÓÔÁ×ËÕ ÔÅËÓÔÁ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.5. + 5. ëÏÇÄÁ ÏÓ×ÏÉÔÅ ×ÓÔÁ×ËÕ ÔÅËÓÔÁ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.1.5. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 1.5. òåäáëôéòï÷áîéå - äïâá÷ìåîéå ôåëóôá + õÒÏË 1.1.5. òåäáëôéòï÷áîéå - äïâá÷ìåîéå ôåëóôá ** þÔÏÂÙ ÄÏÂÁ×ÉÔØ ÔÅËÓÔ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ A ** 1. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ Ë ÐÅÒ×ÏÊ ÓÔÒÏËÅ ÐÏÍÅÞÅÎÎÏÊ --->. óÅÊÞÁÓ ÎÅ×ÁÖÎÏ, ÎÁ ËÁËÏÍ ÓÉÍ×ÏÌÅ ÒÁÓÐÏÌÏÖÅÎÁ ËÁÒÅÔËÁ × ÜÔÏÊ ÓÔÒÏËÅ. - 2. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ A (ÌÁÔÉÎÓËÁÑ ÐÒÏÐÉÓÎÁÑ ÂÕË×Á A) É ÎÁÂÅÒÉÔÅ ÔÅËÓÔ, - ËÏÔÏÒÙÊ ÔÒÅÂÕÅÔÓÑ ÄÏÂÁ×ÉÔØ. + 2. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ A É ÎÁÂÅÒÉÔÅ ÔÅËÓÔ, ËÏÔÏÒÙÊ ÔÒÅÂÕÅÔÓÑ ÄÏÂÁ×ÉÔØ. 3. ðÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÔÅËÓÔÁ ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ ÄÌÑ ×ÏÚ×ÒÁÔÁ × ÒÅÖÉÍ ËÏÍÁÎÄ. @@ -136,16 +137,18 @@ ---> úÄÅÓØ ÔÁËÖÅ ÎÅÄÏÓÔÁ£Ô ÞÁÓ úÄÅÓØ ÔÁËÖÅ ÎÅÄÏÓÔÁ£Ô ÞÁÓÔÉ ÔÅËÓÔÁ. - 5. ëÏÇÄÁ ÏÓ×ÏÉÔÅ ÄÏÂÁ×ÌÅÎÉÅ ÔÅËÓÔÁ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.6. + 5. ëÏÇÄÁ ÏÓ×ÏÉÔÅ ÄÏÂÁ×ÌÅÎÉÅ ÔÅËÓÔÁ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.1.6. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 1.6. òåäáëôéòï÷áîéå é úáðéóø æáêìá + õòïë 1.1.6. òåäáëôéòï÷áîéå é úáðéóø æáêìá ** þÔÏÂÙ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ É ÚÁËÒÙÔØ ÒÅÄÁËÔÏÒ, ÉÓÐÏÌØÚÕÊÔÅ ËÏÍÁÎÄÙ :wq ** ÷îéíáîéå! ðÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ÏÐÉÓÁÎÎÙÈ ÎÉÖÅ ÄÅÊÓÔ×ÉÊ, ÐÒÏÞÔÉÔÅ ÕÒÏË ÐÏÌÎÏÓÔØÀ! - 1. úÁ×ÅÒÛÉÔÅ ÒÁÂÏÔÕ ÒÅÄÁËÔÏÒÁ Vim, ËÁË ÕËÁÚÁÎÏ × ÕÒÏËÅ 1.2 - :q! + 1. úÁ×ÅÒÛÉÔÅ ÒÁÂÏÔÕ ÒÅÄÁËÔÏÒÁ Vim, ËÁË ÕËÁÚÁÎÏ × ÕÒÏËÅ 1.1.2 - :q! åÓÌÉ ÅÓÔØ ÄÏÓÔÕÐ Ë ÄÒÕÇÏÍÕ ÔÅÒÍÉÎÁÌÕ, ÔÏ ÔÁÍ ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÓÌÅÄÕÀÝÅÅ: 2. ÷ ÐÒÉÇÌÁÛÅÎÉÉ ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÉ ××ÅÄÉÔÅ ËÏÍÁÎÄÕ vim tutor @@ -161,8 +164,9 @@ ÄÁÌÅÅ Ë ÒÅÚÀÍÅ. 6. ðÏÓÌÅ ÔÏÇÏ ËÁË ×Ù ÐÒÏÞÌÉ É ÐÏÎÑÌÉ ×ÙÛÅÓËÁÚÁÎÎÏÅ, ×ÙÐÏÌÎÉÔÅ ÏÐÉÓÁÎÎÙÅ ÛÁÇÉ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 1 + òåúàíå õòïëá 1.1 1. ëÁÒÅÔËÕ ÍÏÖÎÏ ÐÅÒÅÍÅÝÁÔØ ÌÉÂÏ ËÌÁ×ÉÛÁÍÉ ÓÏ ÓÔÒÅÌËÁÍÉ, ÌÉÂÏ ËÌÁ×ÉÛÁÍÉ hjkl. h (×ÌÅ×Ï) j (×ÎÉÚ) k (××ÅÒÈ) l (×ÐÒÁ×Ï) @@ -184,9 +188,9 @@ ðÏ ÎÁÖÁÔÉÀ ËÌÁ×ÉÛÉ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎÏ ÐÅÒÅËÌÀÞÅÎÉÅ ÒÅÄÁËÔÏÒÁ × ÒÅÖÉÍ ËÏÍÁÎÄ Ó ÐÒÅÒÙ×ÁÎÉÅÍ ÏÂÒÁÂÏÔËÉ ÌÀÂÏÊ ÒÁÎÅÅ ÎÁÂÒÁÎÎÏÊ ËÏÍÁÎÄÙ. -ôÅÐÅÒØ ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 2. +ôÅÐÅÒØ ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.1. ëïíáîäù õäáìåîéñ + õÒÏË 1.2.1. ëïíáîäù õäáìåîéñ ** þÔÏÂÙ ÕÄÁÌÉÔØ ÓÌÏ×Ï ÐÏÄ ËÁÒÅÔËÏÊ, ÉÓÐÏÌØÚÕÊÔÅ ËÏÍÁÎÄÕ dw ** @@ -206,10 +210,11 @@ ---> îÅÓËÏÌØËÏ ÓÌÏ× ÒÁÆÉÎÁÄ × ÜÔÏÍ ÐÒÅÄÌÏÖÅÎÉÉ Á×ÔÏËÒÁÎ ÉÚÌÉÛÎÉ. 5. ðÏ×ÔÏÒÉÔÅ ÛÁÇÉ 3 É 4, ÐÏËÁ ÎÅ ÉÓÐÒÁ×ÉÔÅ ×ÓÅ ÏÛÉÂËÉ, É ÐÅÒÅÈÏÄÉÔÅ Ë - ÕÒÏËÕ 2.2 + ÕÒÏËÕ 1.2.2 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.2. åý³ ïäîá ëïíáîäá õäáìåîéñ + õÒÏË 1.2.2. åý³ ïäîá ëïíáîäá õäáìåîéñ ** þÔÏÂÙ ÕÄÁÌÉÔØ ÔÅËÓÔ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ, ÉÓÐÏÌØÚÕÊÔÅ ËÏÍÁÎÄÕ d$ ** @@ -226,13 +231,14 @@ ---> ëÔÏ-ÔÏ ÎÁÂÒÁÌ ÏËÏÎÞÁÎÉÅ ÜÔÏÊ ÓÔÒÏËÉ Ä×ÁÖÄÙ. ÏËÏÎÞÁÎÉÅ ÜÔÏÊ ÓÔÒÏËÉ Ä×ÁÖÄÙ. - 5. þÔÏÂÙ ÌÕÞÛÅ ÒÁÚÏÂÒÁÔØÓÑ × ÔÏÍ, ËÁË ÜÔÏ ÐÒÏÉÓÈÏÄÉÔ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 2.3. + 5. þÔÏÂÙ ÌÕÞÛÅ ÒÁÚÏÂÒÁÔØÓÑ × ÔÏÍ ËÁË ÜÔÏ ÐÒÏÉÓÈÏÄÉÔ, ÏÂÒÁÔÉÔÅÓØ Ë ÕÒÏËÕ 1.2.3. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.3. ïðåòáôïòù é ïâÿåëôù + õÒÏË 1.2.3. ïðåòáôïòù é ïâÿåëôù íÎÏÇÉÅ ËÏÍÁÎÄÙ, ÉÚÍÅÎÑÀÝÉÅ ÔÅËÓÔ, Ñ×ÌÑÀÔÓÑ ÓÏÓÔÁ×ÎÙÍÉ É ÆÏÒÍÉÒÕÀÔÓÑ ÉÚ ÏÐÅÒÁÔÏÒÁ É ÏÂßÅËÔÁ, Ë ËÏÔÏÒÏÍÕ ÐÒÉÍÅÎÑÅÔÓÑ ÜÔÏÔ ÏÐÅÒÁÔÏÒ. @@ -256,7 +262,7 @@ Ó ËÏÔÏÒÙÍ ÁÓÓÏÃÉÉÒÏ×ÁÎ ÏÂßÅËÔ, ÔÏ ËÁÒÅÔËÁ ÂÕÄÅÔ ÐÅÒÅÍÅÝÅÎÁ ÔÁË, ËÁË ÕËÁÚÁÎÏ × ÐÅÒÅÞÎÅ ÏÂßÅËÔÏ×. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.4. ðòéíåîåîéå óþ³ôþéëá óï÷íåóôîï ó ïâÿåëôáíé + õÒÏË 1.2.4. ðòéíåîåîéå óþ³ôþéëá óï÷íåóôîï ó ïâÿåëôáíé ** þÔÏÂÙ ÐÅÒÅÍÅÝÅÎÉÅ ËÁÒÅÔËÁ ×ÙÐÏÌÎÑÌÏÓØ ÎÅÏÂÈÏÄÉÍÏÅ ËÏÌÉÞÅÓÔ×Ï ÒÁÚ, ÕËÁÖÉÔÅ ÐÅÒÅÄ ÏÂßÅËÔÏÍ ÔÒÅÂÕÅÍÏÅ ÞÉÓÌÏ ** @@ -276,10 +282,11 @@ ---> ïÂÙÞÎÁÑ ÓÔÒÏËÁ ÉÚ ÓÌÏ×, ÞÔÏÂÙ ×Ù ÎÁ ÎÅÊ ÐÏÔÒÅÎÉÒÏ×ÁÌÉÓØ ÐÅÒÅÍÅÝÁÔØ ËÕÒÓÏÒ. - 6. ëÏÇÄÁ ÏÓ×ÏÉÔÅ ÜÔÏ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 2.5. + 6. ëÏÇÄÁ ÏÓ×ÏÉÔÅ ÜÔÏ, ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.2.5. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.5. ðòéíåîåîéå óþ³ôþéëá äìñ íîïöåóô÷åîîïçï õäáìåîéñ + õÒÏË 1.2.5. ðòéíåîåîéå óþ³ôþéëá äìñ íîïöåóô÷åîîïçï õäáìåîéñ ** þÔÏÂÙ ÐÒÉÍÅÎÉÔØ ÏÐÅÒÁÔÏÒ ÎÅÓËÏÌØËÏ ÒÁÚ, ÕËÁÖÉÔÅ ÞÉÓÌÏ ÔÒÅÂÕÅÍÙÈ ÐÏ×ÔÏÒÏ× ** @@ -301,8 +308,9 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.6. ïðåòáãéé óï óôòïëáíé + õÒÏË 1.2.6. ïðåòáãéé óï óôòïëáíé ** þÔÏÂÙ ÕÄÁÌÉÔØ ÓÔÒÏËÕ ÃÅÌÉËÏÍ, ÉÓÐÏÌØÚÕÊÔÅ ËÏÍÁÎÄÕ dd ** @@ -326,7 +334,7 @@ äÕÂÌÉÒÏ×ÁÎÉÅ ÏÐÅÒÁÔÏÒÁ ÄÌÑ ÏÂÒÁÂÏÔËÉ ÃÅÌÏÊ ÓÔÒÏËÉ ÐÒÉÍÅÎÑÅÔÓÑ É Ó ÄÒÕÇÉÍÉ ÏÐÅÒÁÔÏÒÁÍÉ, Ï ËÏÔÏÒÙÈ ÇÏ×ÏÒÉÔÓÑ ÄÁÌÅÅ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 2.7. ëïíáîäá ïôíåîù + õÒÏË 1.2.7. ëïíáîäá ïôíåîù ** þÔÏÂÙ ÏÔÍÅÎÉÔØ ÒÅÚÕÌØÔÁÔ ÄÅÊÓÔ×ÉÑ ÐÒÅÄÙÄÕÝÅÊ ËÏÍÁÎÄÙ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ u þÔÏÂÙ ÏÔÍÅÎÉÔØ ÐÒÁ×ËÉ ÄÌÑ ×ÓÅÊ ÓÔÒÏËÉ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ U ** @@ -335,8 +343,7 @@ 2. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ x ÄÌÑ ÕÄÁÌÅÎÉÑ ÐÅÒ×ÏÇÏ ÏÛÉÂÏÞÎÏÇÏ ÓÉÍ×ÏÌÁ. 3. ôÅÐÅÒØ ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ u ÄÌÑ ÏÔÍÅÎÙ ÐÏÓÌÅÄÎÅÊ ×ÙÐÏÌÎÅÎÎÏÊ ËÏÍÁÎÄÙ. 4. éÓÐÒÁ×ØÔÅ ×ÓÅ ÏÛÉÂËÉ × ÓÔÒÏËÅ, ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ x . - 5. ôÅÐÅÒØ ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ U (ÌÁÔÉÎÓËÁÑ ÐÒÏÐÉÓÎÁÑ ÂÕË×Á U), ÞÔÏÂÙ ×ÅÒÎÕÔØ - ×ÓÀ ÓÔÒÏËÕ × ÉÓÈÏÄÎÏÅ ÓÏÓÔÏÑÎÉÅ. + 5. ôÅÐÅÒØ ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ U , ÞÔÏÂÙ ×ÅÒÎÕÔØ ×ÓÀ ÓÔÒÏËÕ × ÉÓÈÏÄÎÏÅ ÓÏÓÔÏÑÎÉÅ. 6. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ u ÎÅÓËÏÌØËÏ ÒÁÚ ÄÌÑ ÏÔÍÅÎÙ ËÏÍÁÎÄÙ U É ÐÒÅÄÙÄÕÝÉÈ ËÏÍÁÎÄ. 7. ôÅÐÅÒØ ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÉ CTRL-R (Ô.šÅ. ÕÄÅÒÖÉ×ÁÑ ÎÁÖÁÔÏÊ ËÌÁ×ÉÛÕ CTRL, @@ -348,9 +355,10 @@ 8. üÔÏ ÏÞÅÎØ ÎÕÖÎÙÅ É ÐÏÌÅÚÎÙÅ ËÏÍÁÎÄÙ. -äÁÌÅÅ ÐÅÒÅÈÏÄÉÔÅ Ë ÒÅÚÀÍÅ ÕÒÏËÁ 2. +äÁÌÅÅ ÐÅÒÅÈÏÄÉÔÅ Ë ÒÅÚÀÍÅ ÕÒÏËÁ 1.2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 2 + òåúàíå õòïëá 1.2 1. þÔÏÂÙ ÕÄÁÌÉÔØ ÓÌÏ×Ï, ÕÓÔÁÎÏ×ÉÔÅ ËÕÒÓÏÒ × ÅÇÏ ÎÁÞÁÌÏ É ÎÁÂÅÒÉÔÅ dw 2. þÔÏÂÙ ÕÄÁÌÉÔØ ÔÅËÓÔ ÏÔ ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ ÄÏ ËÏÎÃÁ ÓÌÏ×Á, ÎÁÂÅÒÉÔÅ de @@ -372,9 +380,9 @@ 8. þÔÏÂÙ ÏÔÍÅÎÉÔØ ÐÒÅÄÛÅÓÔ×ÕÀÝÉÅ ÄÅÊÓÔ×ÉÑ, ÎÁÖÍÉÔÅ u (ÓÔÒÏÞÎÁÑ ÂÕË×Á u) þÔÏÂÙ ÏÔÍÅÎÉÔØ ×ÓÅ ÉÚÍÅÎÅÎÉÑ × ÓÔÒÏËÅ, ÎÁÖÍÉÔÅ U (ÐÒÏÐÉÓÎÁÑ ÂÕË×Á U) - þÔÏÂÙ ×ÅÒÎÕÔØ ÏÔÍÅΣÎÎÙÅ ÉÚÍÅÎÅÎÉÑ, ÎÁÖÍÉÔÅ CTRL+R + þÔÏÂÙ ×ÅÒÎÕÔØ ÏÔÍÅΣÎÎÙÅ ÉÚÍÅÎÅÎÉÑ, ÎÁÖÍÉÔÅ CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 3.1. ëïíáîäá ÷óôá÷ëé + õÒÏË 1.3.1. ëïíáîäá ÷óôá÷ëé ** þÔÏÂÙ ×ÓÔÁ×ÉÔØ ÐÏÓÌÅÄÎÉÊ ÕÄÁÌ£ÎÎÙÊ ÔÅËÓÔ, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ p ** @@ -396,8 +404,9 @@ ---> ×) ïÎ Õ×ÁÖÁÔØ ÓÅÂÑ ÚÁÓÔÁ×ÉÌ ---> Á) íÏÊ ÄÑÄÑ ÓÁÍÙÈ ÞÅÓÔÎÙÈ ÐÒÁ×ÉÌ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 3.2. ëïíáîäá úáíåîù + õÒÏË 1.3.2. ëïíáîäá úáíåîù ** þÔÏÂÙ ÚÁÍÅÎÉÔØ ÓÉÍ×ÏÌ ÐÏÄ ËÁÒÅÔËÏÊ, ÎÁÂÅÒÉÔÅ r É ÚÁÍÅÎÑÀÝÉÊ ÓÉÍ×ÏÌ ** @@ -414,13 +423,14 @@ ---> ÷ ÍÏÍÅÎÔ ÎÁÂÏÒÁ ÜÔÏÊ ÓÔÒÏËÉ ËÏÅ-ËÔÏ Ó ÔÒÕÄÏÍ ÐÏÐÁÄÁÌ ÐÏ ËÌÁ×ÉÛÁÍ! - 5. ôÅÐÅÒØ ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 3.3. + 5. ôÅÐÅÒØ ÐÅÒÅÈÏÄÉÔÅ Ë ÕÒÏËÕ 1.3.3. ðÒÉÍÅÞÁÎÉÅ. ðÏÍÎÉÔÅ, ÞÔÏ ×Ù ÄÏÌÖÎÙ ÕÞÉÔØÓÑ × ÐÒÏÃÅÓÓÅ ÒÁÂÏÔÙ, Á ÎÅ ÐÒÏÓÔÏ ÚÕÂÒÉÔØ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 3.3. ïðåòáôïò éúíåîåîéñ + õÒÏË 1.3.3. ïðåòáôïò éúíåîåîéñ ** þÔÏÂÙ ÉÚÍÅÎÉÔØ ÏËÏÎÞÁÎÉÅ ÓÌÏ×Á, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ ce ** @@ -442,8 +452,9 @@ ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÐÏ ËÏÍÁÎÄÅ ce ÎÅ ÔÏÌØËÏ ÕÄÁÌÑÅÔÓÑ ÞÁÓÔØ ÓÌÏ×Á, ÎÏ É ÐÒÏÉÓÈÏÄÉÔ ÐÅÒÅËÌÀÞÅÎÉÅ ÒÅÄÁËÔÏÒÁ × ÒÅÖÉÍ ×ÓÔÁ×ËÉ. ðÏ ËÏÍÁÎÄÅ cc ÂÕÄÅÔ ×ÙÐÏÌÎÑÔÓÑ ÔÏ ÖÅ ÓÁÍÏÅ, ÎÏ ÄÌÑ ÃÅÌÏÊ ÓÔÒÏËÉ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 3.4. åý³ îåóëïìøëï óðïóïâï÷ òáâïôù ó ïðåòáôïòïí éúíåîåîéñ c + õòïë 1.3.4. åý³ îåóëïìøëï óðïóïâï÷ òáâïôù ó ïðåòáôïòïí éúíåîåîéñ c ** ë ÏÐÅÒÁÔÏÒÕ ÉÚÍÅÎÅÎÉÑ ÐÒÉÍÅÎÉÍÙ ÔÅ ÖÅ ÏÂßÅËÔÙ, ÞÔÏ É Ë ÏÐÅÒÁÔÏÒÕ ÕÄÁÌÅÎÉÑ ** @@ -465,8 +476,9 @@ ðÒÉÍÅÞÁÎÉÅ. ëÌÁ×ÉÛÁ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÄÌÑ ÉÓÐÒÁ×ÌÅÎÉÑ ÐÒÉ ÎÁÂÏÒÅ ÔÅËÓÔÁ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 3 + òåúàíå õòïëá 1.3 1. þÔÏÂÙ ×ÓÔÁ×ÉÔØ ÔÅËÓÔ, ËÏÔÏÒÙÊ ÂÙÌ ÔÏÌØËÏ ÞÔÏ ÕÄÁÌ£Î, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ p . ôÅËÓÔ ÂÕÄÅÔ ×ÓÔÁ×ÌÅÎ ðïóìå ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ (ÅÓÌÉ ÂÙÌÁ ÕÄÁÌÅÎÁ ÓÔÒÏËÁ, @@ -490,7 +502,7 @@ ôÅÐÅÒØ ÐÅÒÅÈÏÄÉÔÅ Ë ÓÌÅÄÕÀÝÅÍÕ ÕÒÏËÕ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 4.1. éîæïòíáãéñ ï æáêìå é ðïúéãéñ ëáòåôëé + õòïë 1.4.1. éîæïòíáãéñ ï æáêìå é ðïúéãéñ ëáòåôëé ** þÔÏÂÙ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÆÁÊÌÅ É ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ, ÎÁÖÍÉÔÅ CTRL-g . þÔÏÂÙ ÐÅÒÅÍÅÓÔÉÔØ ËÁÒÅÔËÕ Ë ÚÁÄÁÎÎÏÊ ÓÔÒÏËÅ × ÆÁÊÌÅ, ÎÁÖÍÉÔÅ SHIFT-G ** @@ -514,7 +526,7 @@ 4. åÓÌÉ ×Ù ÚÁÐÏÍÎÉÌÉ ×Ó£ ×ÙÛÅÓËÁÚÁÎÎÏÅ, ×ÙÐÏÌÎÉÔÅ ÛÁÇÉ Ó 1 ÐÏ 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 4.2. ëïíáîäù ðïéóëá + õÒÏË 1.4.2. ëïíáîäù ðïéóëá ** þÔÏÂÙ ÞÔÏ-ÔÏ ÎÁÊÔÉ, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ / É ÚÁÔÅÍ ××ÅÄÉÔÅ ÉÓËÏÍÕÀ ÆÒÁÚÕ ** @@ -536,8 +548,9 @@ ðÒÉÍÅÞÁÎÉÅ. åÓÌÉ ÂÕÄÅÔ ÄÏÓÔÉÇÎÕÔ ËÏÎÅà ÆÁÊÌÁ, ÔÏ ÐÏÉÓË ÂÕÄÅÔ ÐÒÏÄÏÌÖÅÎ ÏÔ ÎÁÞÁÌÁ ÆÁÊÌÁ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 4.3. ðïéóë ðáòîùè óëïâïë + õÒÏË 1.4.3. ðïéóë ðáòîùè óëïâïë ** þÔÏÂÙ ÎÁÊÔÉ ÐÁÒÎÕÀ ÓËÏÂËÕ ÄÌÑ (, [ ÉÌÉ {, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ % ** @@ -559,8 +572,9 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 4.4. óðïóïâ úáíåîù óìï÷ + õÒÏË 1.4.4. óðïóïâ úáíåîù óìï÷ ** þÔÏÂÙ "ÞÔÏ-ÔÏ" ÚÁÍÅÎÉÔØ "ÞÅÍ-ÔÏ", ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ :s/ÞÔÏ/ÞÅÍ/g ** @@ -582,15 +596,15 @@ îÁÂÅÒÉÔÅ :%s/ÞÔÏ/ÞÅÍ/g ÞÔÏÂÙ ÚÁÍÅÎÉÔØ ×ÓÅ ×ÈÏÖÄÅÎÉÑ ×Ï ×Ó£Í ÆÁÊÌÅ. îÁÂÅÒÉÔÅ :%s/ÞÔÏ/ÞÅÍ/gc ÞÔÏÂÙ ×ÙÄÁ×ÁÌÓÑ ÚÁÐÒÏÓ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ ÐÅÒÅÄ ËÁÖÄÏÊ ÚÁÍÅÎÏÊ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 4 + òåúàíå õòïëá 1.4 1. ðÏ ÐÒÉ×ÅÄ£ÎÎÙÍ ÎÉÖÅ ËÏÍÁÎÄÁÍ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎÏ: CTRL-g - ×Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÆÁÊÌÅ É ÔÅËÕÝÅÊ ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ × ÜÔÏÍ ÆÁÊÌÅ SHIFT-G - ÐÅÒÅÈÏÄ ÎÁ ÐÏÓÌÅÄÎÀÀ ÓÔÒÏËÕ ÆÁÊÌÁ ÎÏÍÅÒ É SHIFT-G - ÐÅÒÅÈÏÄ Ë ÓÔÒÏËÅ Ó ÕËÁÚÁÎÎÙÍ ÎÏÍÅÒÏÍ gg - ÐÅÒÅÈÏÄ ÎÁ ÐÅÒ×ÕÀ ÓÔÒÏËÕ ÆÁÊÌÁ - 2. ðÒÉ ××ÏÄÅ ÓÉÍ×ÏÌÁ / Ó ÐÏÓÌÅÄÕÀÝÉÍ ÎÁÂÏÒÏÍ ÓÌÏ×Á, ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÐÏÉÓË ÜÔÏÇÏ ÓÌÏ×Á ÷ðåò³ä ÐÏ ÔÅËÓÔÕ. ðÒÉ ××ÏÄÅ ÓÉÍ×ÏÌÁ ? Ó ÐÏÓÌÅÄÕÀÝÉÍ ÎÁÂÏÒÏÍ ÓÌÏ×Á, ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÐÏÉÓË @@ -600,17 +614,15 @@ ÐÒÏÔÉ×ÏÐÏÌÏÖÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ. ðÒÉ ÎÁÖÁÔÉÉ ËÌÁ×ÉÛ CTRL-O ÂÕÄÅÔ ×ÏÚ×ÒÁÔ Ë ÐÒÅÄÙÄÕÝÅÍÕ ÓÌÏ×Õ, Á ÐÒÉ ÎÁÖÁÔÉÉ ËÌÁ×ÉÛ CTRL-I ÂÕÄÅÔ ÐÅÒÅÈÏÄ Ë ÒÁÎÅÅ ÎÁÊÄÅÎÎÏÍÕ ÓÌÏ×Õ. - 3. ðÒÉ ÎÁÖÁÔÉÉ % , ËÏÇÄÁ ËÁÒÅÔËÁ ÎÁ ÏÄÎÏÊ ÉÚ ÓËÏÂÏË ( ), [ ] ÉÌÉ { }, ÂÕÄÅÔ ÎÁÊÄÅÎÁ Å£ ÐÁÒÎÁÑ ÓËÏÂËÁ. - 4. þÔÏÂÙ ÚÁÍÅÎÉÔØ ÐÅÒ×ÏÅ ÎÁÊÄÅÎÎÏÅ ÓÌÏ×Ï × ÓÔÒÏËÅ, ÎÁÂÅÒÉÔÅ :s/ÞÔÏ/ÞÅÍ þÔÏÂÙ ÚÁÍÅÎÉÔØ ×ÓÅ ÎÁÊÄÅÎÎÙÅ ÓÌÏ×Á × ÓÔÒÏËÅ, ÎÁÂÅÒÉÔÅ :s/ÞÔÏ/ÞÅÍ/g þÔÏÂÙ ÚÁÍÅÎÉÔØ × ÕËÁÚÁÎÎÙÍÉ ÉÎÔÅÒ×ÁÌÅ ÓÔÒÏË, ÎÁÂÅÒÉÔÅ :#,#s/ÞÔÏ/ÞÅÍ/g þÔÏÂÙ ÚÁÍÅÎÉÔØ ×ÓÅ ÎÁÊÄÅÎÎÙÅ ÓÌÏ×Á × ÆÁÊÌÅ, ÎÁÂÅÒÉÔÅ :%s/ÞÔÏ/ÞÅÍ/g þÔÏÂÙ ÚÁÐÒÁÛÉ×ÁÌÏÓØ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ, ÄÏÂÁ×ØÔÅ ÆÌÁÇ 'c' :%s/ÞÔÏ/ÞÅÍ/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 5.1. ëáë ÷ùú÷áôø éú òåäáëôïòá ÷îåûîàà ëïíáîäõ + õÒÏË 1.5.1. ëáë ÷ùú÷áôø éú òåäáëôïòá ÷îåûîàà ëïíáîäõ ** þÔÏÂÙ ÂÙÌÁ ×ÙÐÏÌÎÅÎÁ ËÏÍÁÎÄÁ ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÉ, ÎÁÂÅÒÉÔÅ × ÒÅÄÁËÔÏÒÅ :! ** @@ -632,8 +644,9 @@ ÷ÁÖÎÏ. ðÏÓÌÅ ××ÏÄÁ ËÏÍÁÎÄÙ, ÎÁÞÉÎÁÀÝÅÊÓÑ Ó : , ÄÏÌÖÎÁ ÂÙÔØ ÎÁÖÁÔÁ ËÌÁ×ÉÛÁ ÷ ÄÁÌØÎÅÊÛÅÍ ÜÔÏ ÍÏÖÅÔ ÎÅ ÕËÁÚÙ×ÁÔØÓÑ ÏÔÄÅÌØÎÏ, ÎÏ ÐÏÄÒÁÚÕÍÅ×ÁÔØÓÑ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 5.2. ëáë úáðéóáôø æáêì + õÒÏË 1.5.2. ëáë úáðéóáôø æáêì ** þÔÏÂÙ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ ÓÏ ×ÓÅÍÉ ÉÚÍÅÎÅÎÉÑÍÉ × ÔÅËÓÔÅ, ÎÁÂÅÒÉÔÅ :w æáêì ** @@ -655,8 +668,9 @@ 5. ôÅÐÅÒØ ÕÄÁÌÉÔÅ ÜÔÏÔ ÆÁÊÌ, ÎÁÂÒÁ× × ÒÅÄÁËÔÏÒÅ ËÏÍÁÎÄÕ :!del TEST (ÄÌÑ ïó Windows) ÉÌÉ :!rm TEST (ÄÌÑ UNIX-ÐÏÄÏÂÎÙÈ ïó) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 5.3. ÷ùâïòïþîáñ úáðéóø óôòïë + õÒÏË 1.5.3. ÷ùâïòïþîáñ úáðéóø óôòïë ** þÔÏÂÙ ÓÏÈÒÁÎÉÔØ ÞÁÓÔØ ÆÁÊÌÁ, ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ v , ×ÙÄÅÌÉÔÅ ÓÔÒÏËÉ É ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ :w æáêì ** @@ -674,28 +688,27 @@ 5. ðÏ ÜÔÏÊ ËÏÍÁÎÄÅ ×ÙÂÒÁÎÎÙÅ ÓÔÒÏËÉ ÂÕÄÕÔ ÚÁÐÉÓÁÎÙ × ÆÁÊÌ TEST. õÂÅÄÉÔÅÓØ × ÎÁÌÉÞÉÉ ÜÔÏÇÏ ÆÁÊÌÁ, ×ÏÓÐÏÌØÚÏ×Á×ÛÉÓØ ËÏÍÁÎÄÏÊ :!dir ÉÌÉ :!ls . îÅ ÕÄÁÌÑÊÔÅ ÜÔÏÔ ÆÁÊÌ, ÏÎ ÐÏÔÒÅÂÕÅÔÓÑ ÎÁ ÓÌÅÄÕÀÝÅÍ ÕÒÏËÅ. - ðÒÉÍÅÞÁÎÉÅ. ðÏ ÎÁÖÁÔÉÀ ËÌÁ×ÉÛÉ v ×ÙÐÏÌÎÑÅÔÓÑ ÐÅÒÅËÌÀÞÅÎÉÅ × ×ÉÚÕÁÌØÎÙÊ ÒÅÖÉÍ. þÔÏÂÙ ÉÚÍÅÎÉÔØ ÒÁÚÍÅÒ ×ÙÂÒÁÎÎÏÊ ÏÂÌÁÓÔÉ, ÎÕÖÎÏ ÐÅÒÅÍÅÓÔÉÔØ ËÁÒÅÔËÕ. ë ×ÙÄÅÌÅÎÎÏÍÕ ÆÒÁÇÍÅÎÔÕ ÍÏÖÎÏ ÐÒÉÍÅÎÉÔØ ÌÀÂÏÊ ÏÐÅÒÁÔÏÒ, ÎÁÐÒÉÍÅÒ, d ÄÌÑ ÅÇÏ ÕÄÁÌÅÎÉÑ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 5.4. óþéôù÷áîéå é ïâÿåäéîåîéå æáêìï÷ + õÒÏË 1.5.4. óþéôù÷áîéå é ïâÿåäéîåîéå æáêìï÷ ** þÔÏÂÙ ×ÓÔÁ×ÉÔØ ÓÏÄÅÒÖÁÝÉÊÓÑ × ÆÁÊÌÅ ÔÅËÓÔ, ÎÁÂÅÒÉÔÅ :r æáêì ** 1. õÓÔÁÎÏ×ÉÔÅ ËÁÒÅÔËÕ ÎÁÄ ÜÔÏÊ ÓÔÒÏËÏÊ. ÷ÎÉÍÁÎÉÅ! - ðÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÏÐÉÓÁÎÎÏÇÏ × ÐÕÎËÔÅ 2 ×Ù Õ×ÉÄÉÔÅ ÔÅËÓÔ ÉÚ ÕÒÏËÁ 5.3. + ðÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÏÐÉÓÁÎÎÏÇÏ × ÐÕÎËÔÅ 2 ×Ù Õ×ÉÄÉÔÅ ÔÅËÓÔ ÉÚ ÕÒÏËÁ 1.5.3. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ ×ÎÉÚ ÐÏ ÔÅËÓÔÕ ÄÏ ÔÅËÕÝÅÇÏ ÕÒÏËÁ. 2. ôÅÐÅÒØ ÓÞÉÔÁÊÔÅ ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ TEST, ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ :r TEST , ÚÄÅÓØ TEST - ÜÔÏ ÎÁÉÍÅÎÏ×ÁÎÉÅ ÆÁÊÌÁ. 3. äÌÑ ÐÒÏ×ÅÒËÉ, ÞÔÏ ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ ÂÙÌÏ ×ÓÔÁ×ÌÅÎÏ, ÐÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ - ××ÅÒÈ ÐÏ ÔÅËÓÔÕ É ÕÄÏÓÔÏ×ÅÒØÔÅÓØ, ÞÔÏ ÔÅÐÅÒØ ÚÄÅÓØ Ä×Á ÕÒÏËÁ 5.3. - + ××ÅÒÈ ÐÏ ÔÅËÓÔÕ É ÕÄÏÓÔÏ×ÅÒØÔÅÓØ, ÞÔÏ ÔÅÐÅÒØ ÚÄÅÓØ Ä×Á ÕÒÏËÁ 1.5.3. - ÉÓÈÏÄÎÙÊ É ÉÚ ÆÁÊÌÁ TEST. ðÒÉÍÅÞÁÎÉÅ. @@ -703,8 +716,9 @@ ÂÕÄÅÔ ÐÏÌÕÞÅÎ ×Ù×ÏÄ ËÏÍÁÎÄÙ ls É ×ÓÔÁ×ÌÅÎ ÎÉÖÅ ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 5 + òåúàíå õòïëá 1.5 1. ðÏ ËÏÍÁÎÄÅ :!command ÂÕÄÅÔ ÉÓÐÏÌÎÅÎÁ ÕËÁÚÁÎÎÁÑ ×ÎÅÛÎÑÑ ËÏÍÁÎÄÁ. @@ -726,16 +740,16 @@ ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 6.1. ëïíáîäù äìñ óïúäáîéñ óôòïë + õòïë 1.6.1. ëïíáîäù äìñ óïúäáîéñ óôòïë ** þÔÏÂÙ ÏÔËÒÙÔØ ÎÏ×ÕÀ ÓÔÒÏËÕ Ó ÐÅÒÅËÌÀÞÅÎÉÅÍ × ÒÅÖÉÍ ×ÓÔÁ×ËÉ, ÎÁÂÅÒÉÔÅ o ** 1. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ ×ÎÉÚ, Ë ÐÅÒ×ÏÊ ÓÔÒÏËÅ ÐÏÍÅÞÅÎÎÏÊ --->. - 2. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ o (ÌÁÔÉÎÓËÁÑ ÓÔÒÏÞÎÁÑ ÂÕË×Á o) ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÏÚÄÁÔØ - ÐÕÓÔÕÀ ÓÔÒÏËÕ îéöå ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ É ÐÅÒÅËÌÀÞÉÔØ ÒÅÄÁËÔÏÒ × - ÒÅÖÉÍ ×ÓÔÁ×ËÉ. + 2. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ o ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÏÚÄÁÔØ ÐÕÓÔÕÀ ÓÔÒÏËÕ îéöå ÐÏÚÉÃÉÉ + ËÁÒÅÔËÉ É ÐÅÒÅËÌÀÞÉÔØ ÒÅÄÁËÔÏÒ × ÒÅÖÉÍ ×ÓÔÁ×ËÉ. 3. ôÅÐÅÒØ ÎÁÂÅÒÉÔÅ ËÁËÏÊ-ÎÉÂÕÄØ ÔÅËÓÔ É ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ ÄÌÑ ×ÙÈÏÄÁ ÉÚ ÒÅÖÉÍÁ ×ÓÔÁ×ËÉ. @@ -749,40 +763,41 @@ ---> óÏÚÄÁÊÔÅ ÎÏ×ÕÀ ÓÔÒÏËÕ ÎÁÄ ÜÔÏÊ, ÐÏÍÅÓÔÉ× ÓÀÄÁ ËÁÒÅÔËÕ É ÎÁÖÁ× SHIFT-O. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 6.2. ëïíáîäá äìñ äïâá÷ìåîéñ ôåëóôá + õòïë 1.6.2. ëïíáîäá äìñ äïâá÷ìåîéñ ôåëóôá ** þÔÏÂÙ ×ÓÔÁ×ÉÔØ ÔÅËÓÔ ÐÏÓÌÅ ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ, ÎÁÂÅÒÉÔÅ a ** 1. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ ×ÎÉÚ, × ÎÁÞÁÌÏ ÐÅÒ×ÏÊ ÓÔÒÏËÉ ÐÏÍÅÞÅÎÎÏÊ --->. - 2. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ e , ÐÏËÁ ËÁÒÅÔËÁ ÎÅ ÏËÁÖÅÔÓÑ ÎÁ ÐÏÓÌÅÄÎÅÍ ÓÉÍ×ÏÌÅ ÓÌÏ×Á "ÓÔÒÏ". - 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ a (ÌÁÔÉÎÓËÁÑ ÓÔÒÏÞÎÁÑ ÂÕË×Á a) ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ ÔÅËÓÔÁ - ðïóìå ÓÉÍ×ÏÌÁ, ÎÁÈÏÄÑÝÅÇÏÓÑ ÐÏÄ ËÁÒÅÔËÏÊ. + 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ a ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ ÔÅËÓÔÁ ðïóìå ÓÉÍ×ÏÌÁ, ÎÁÈÏÄÑÝÅÇÏÓÑ ÐÏÄ + ËÁÒÅÔËÏÊ. 4. äÏÐÉÛÉÔÅ ÓÌÏ×Ï ËÁË × ÓÔÒÏËÅ ÎÉÖÅ. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ ÄÌÑ ×ÙÈÏÄÁ ÉÚ ÒÅÖÉÍÁ ×ÓÔÁ×ËÉ. - 5. éÓÐÏÌØÚÕÊÔÅ e ÄÌÑ ÐÅÒÅÈÏÄÁ Ë ÓÌÅÄÕÀÝÅÍÕ ÎÅÚÁ×ÅÒÛ£ÎÎÏÍÕ ÓÌÏ×Õ É ÐÏ×ÔÏÒÉÔÅ - ÄÅÊÓÔ×ÉÑ, ÏÐÉÓÁÎÎÙÅ × ÐÕÎËÔÁÈ 3 É 4. + 5. éÓÐÏÌØÚÕÊÔÅ ËÌÁ×ÉÛÕ e ÄÌÑ ÐÅÒÅÈÏÄÁ Ë ÓÌÅÄÕÀÝÅÍÕ ÎÅÚÁ×ÅÒÛ£ÎÎÏÍÕ ÓÌÏ×Õ + É ÐÏ×ÔÏÒÉÔÅ ÄÅÊÓÔ×ÉÑ, ÏÐÉÓÁÎÎÙÅ × ÐÕÎËÔÁÈ 3 É 4. ----> üÔÁ ÓÔÒÏ ÐÏÚ×ÏÌÉÔ ×ÁÍ ÐÏÐÒÁËÔÉËÏ× × ÄÏÂÁ×ÌÅ ÔÅËÓÔÁ. ----> üÔÁ ÓÔÒÏÞËÁ ÐÏÚ×ÏÌÉÔ ×ÁÍ ÐÏÐÒÁËÔÉËÏ×ÁÔØÓÑ × ÄÏÂÁ×ÌÅÎÉÉ ÔÅËÓÔÁ. +---> îÁ ÜÔÏÊ ÓÔÒÏ ×Ù ÍÏÖÅÔÅ ÐÏÐÒÁËÔÉËÏ× × ÄÏÂÁ×ÌÅ ÔÅËÓÔÁ. +---> îÁ ÜÔÏÊ ÓÔÒÏËÅ ×Ù ÍÏÖÅÔÅ ÐÏÐÒÁËÔÉËÏ×ÁÔØÓÑ × ÄÏÂÁ×ÌÅÎÉÉ ÔÅËÓÔÁ. ðÒÉÍÅÞÁÎÉÅ. ðÏ ËÏÍÁÎÄÅ a , i É A ÂÕÄÅÔ ×ÙÐÏÌÎÅÎÏ ÐÅÒÅËÌÀÞÅÎÉÅ × ÏÄÉÎ É ÔÏÔ ÖÅ ÒÅÖÉÍ ×ÓÔÁ×ËÉ, ÒÁÚÌÉÞÉÅ ÔÏÌØËÏ × ÔÏÍ, ÇÄÅ ×ÓÔÁ×ÌÑÀÔÓÑ ÓÉÍ×ÏÌÙ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 6.3. åý³ ïäéî óðïóïâ úáíåîù + õÒÏË 1.6.3. åý³ ïäéî óðïóïâ úáíåîù ** þÔÏÂÙ ÚÁÍÅÎÉÔØ ÎÅÓËÏÌØËÏ ÓÉÍ×ÏÌÏ× × ÓÔÒÏËÅ, ÎÁÂÅÒÉÔÅ R ** 1. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ × ÎÁÞÁÌÏ ÐÅÒ×ÏÇÏ ÓÌÏ×Á xxx × ÓÔÒÏËÅ ÐÏÍÅÞÅÎÎÏÊ ---> - 2. ôÅÐÅÒØ ÎÁÖÍÉÔÅ SHIFT-R (ÌÁÔÉÎÓËÁÑ ÐÒÏÐÉÓÎÁÑ ÂÕË×Á R) É ××ÅÄÉÔÅ ÞÉÓÌÏ, - ÕËÁÚÁÎÎÏÅ ÎÉÖÅ ×Ï ×ÔÏÒÏÊ ÓÔÒÏËÅ, ÞÔÏÂÙ ÚÁÍÅÎÉÔØ ÓÉÍ×ÏÌÙ xxx. + 2. ôÅÐÅÒØ ÎÁÖÍÉÔÅ SHIFT-R É ××ÅÄÉÔÅ ÞÉÓÌÏ, ÕËÁÚÁÎÎÏÅ ÎÉÖÅ ×Ï ×ÔÏÒÏÊ ÓÔÒÏËÅ, + ÞÔÏÂÙ ÚÁÍÅÎÉÔØ ÓÉÍ×ÏÌÙ xxx. 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ ÄÌÑ ×ÙÈÏÄÁ ÉÚ ÒÅÖÉÍÁ ÚÁÍÅÎÙ. úÁÍÅÔØÔÅ, ÞÔÏ ÏÓÔÁÔÏË ÓÔÒÏËÉ ÎÅ ÂÙÌ ÉÚÍÅΣÎ. @@ -799,15 +814,14 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 6.4. ëïðéòï÷áîéå é ÷óôá÷ëá ôåëóôá + õÒÏË 1.6.4. ëïðéòï÷áîéå é ÷óôá÷ëá ôåëóôá ** þÔÏÂÙ ËÏÐÉÒÏ×ÁÔØ, ÉÓÐÏÌØÚÕÊÔÅ ÏÐÅÒÁÔÏÒ y , ÞÔÏÂÙ ×ÓÔÁ×ÉÔØ - ËÏÍÁÎÄÕ p ** - 1. õÓÔÁÎÏ×ÉÔÅ ËÁÒÅÔËÕ ÐÏÓÌÅ ÓÉÍ×ÏÌÏ× "Á)" × ÓÔÒÏËÅ ÐÏÍÅÞÅÎÎÏÊ --->. + 1. õÓÔÁÎÏ×ÉÔÅ ËÁÒÅÔËÕ ÐÏÓÌÅ ÓÉÍ×ÏÌÏ× "Á)" × ÓÔÒÏËÅ, ÐÏÍÅÞÅÎÎÏÊ --->. 2. ðÅÒÅËÌÀÞÉÔÅ ÒÅÄÁËÔÏÒ × ×ÉÚÕÁÌØÎÙÊ ÒÅÖÉÍ ËÏÍÁÎÄÏÊ v É ÐÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ ×ÐÅÒ£Ä ÄÏ ÓÌÏ×Á "ÐÅÒ×ÙÊ". - 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ y (ÌÁÔÉÎÓËÁÑ ÓÔÒÏÞÎÁÑ ÂÕË×Á y) ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ - ÐÏÄÓ×ÅÞÅÎÎÏÇÏ ÔÅËÓÔÁ. + 3. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ y ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÐÏÄÓ×ÅÞÅÎÎÏÇÏ ÔÅËÓÔÁ. 4. ðÅÒÅÍÅÓÔÉÔÅ ËÁÒÅÔËÕ × ËÏÎÅà ÓÌÅÄÕÀÝÅÊ ÓÔÒÏËÉ, ÎÁÂÒÁ× ËÏÍÁÎÄÕ j$ . 5. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ p ÄÌÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ. úÁÔÅÍ ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ a , ÎÁÐÅÞÁÔÁÊÔÅ ÓÌÏ×Ï "×ÔÏÒÏÊ" É ÎÁÖÍÉÔÅ ËÌÁ×ÉÛÕ . @@ -821,8 +835,10 @@ íÏÖÎÏ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ËÏÍÁÎÄÏÊ yw (ÏÐÅÒÁÔÏÒ y É ÏÂßÅËÔ w) ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÏÄÎÏÇÏ ÓÌÏ×Á. ðÏ ËÏÍÁÎÄÅ yy ÂÕÄÅÔ ÓËÏÐÉÒÏ×ÁÎÁ ÃÅÌÁÑ ÓÔÒÏËÁ, Á ÐÏ ËÏÍÁÎÄÅ p ×ÓÔÁ×ÌÅÎÁ. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 6.5. õóôáîï÷ëá ðáòáíåôòï÷ + õÒÏË 1.6.5. õóôáîï÷ëá ðáòáíåôòï÷ ** þÔÏÂÙ ÐÒÉ ÐÏÉÓËÅ ÉÌÉ ÚÁÍÅÎÅ ÎÅ ÕÞÉÔÙ×ÁÌÓÑ ÒÅÇÉÓÔÒ ÓÉÍ×ÏÌÏ×, ÚÁÄÁÊÔÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÎÁÓÔÒÏÊËÉ ** @@ -840,40 +856,37 @@ 5. ðÏ×ÔÏÒÎÏ ××ÅÄÉÔÅ ËÏÍÁÎÄÕ ÐÏÉÓËÁ É ÐÏÓÍÏÔÒÉÔÅ, ÞÔÏ ÐÏÌÕÞÉÔÓÑ /ÉÇÎÏÒÉÒÏ×ÁÔØ 6. äÌÑ ×ÏÚ×ÒÁÔÁ ÕÞ£ÔÁ ÒÅÇÉÓÔÒÁ ÐÒÉ ÐÏÉÓËÅ, ××ÅÄÉÔÅ ËÏÍÁÎÄÕ :set noic - ðÒÉÍÅÞÁÎÉÅ. - äÌÑ ÏÔËÌÀÞÅÎÉÑ ÐÏÄÓ×ÅÔËÉ ÓÏ×ÐÁÄÅÎÉÊ ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ :nohlsearch + äÌÑ ÏÔËÌÀÞÅÎÉÑ ÐÏÄÓ×ÅÔËÉ ÓÏ×ÐÁÄÅÎÉÊ, ÎÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ :nohlsearch ðÒÉÍÅÞÁÎÉÅ. åÓÌÉ ÔÒÅÂÕÅÔÓÑ ÎÅ ÕÞÉÔÙ×ÁÔØ ÒÅÇÉÓÔÒ ÓÉÍ×ÏÌÏ× ÔÏÌØËÏ ÅÄÉÎÏÒÁÚÏ×Ï, ÉÓÐÏÌØÚÕÊÔÅ ËÌÀÞ \c × ËÏÍÁÎÄÅ ÐÏÉÓËÁ, ÎÁÐÒÉÍÅÒ, /ÉÇÎÏÒÉÒÏ×ÁÔØ\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 6 + òåúàíå õòïëá 1.6 1. ðÏ ËÏÍÁÎÄÅ o ÂÕÄÅÔ ÓÏÚÄÁÎÁ ÐÕÓÔÁÑ ÓÔÒÏËÁ ÎÉÖÅ ÓÔÒÏËÉ Ó ËÁÒÅÔËÏÊ É ÒÅÄÁËÔÏÒ ÂÕÄÅÔ ÐÅÒÅËÌÀÞÅÎ × ÒÅÖÉÍ ×ÓÔÁ×ËÉ ðÏ ËÏÍÁÎÄÅ O ÂÕÄÅÔ ÓÏÚÄÁÎÁ ÐÕÓÔÁÑ ÓÔÒÏËÁ ×ÙÛÅ ÓÔÒÏËÉ Ó ËÁÒÅÔËÏÊ É ÒÅÄÁËÔÏÒ ÂÕÄÅÔ ÐÅÒÅËÌÀÞÅÎ × ÒÅÖÉÍ ×ÓÔÁ×ËÉ - 2. ðÏ ËÏÍÁÎÄÅ a ×ÙÐÏÌÎÑÅÔÓÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ ðïóìå ÐÏÚÉÃÉÉ ËÁÒÅÔËÉ. ðÏ ËÏÍÁÎÄÅ A ×ÙÐÏÌÎÑÅÔÓÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ × ËÏÎÃÅ ÓÔÒÏËÉ. 3. ðÏ ËÏÍÁÎÄÅ e ×ÙÐÏÌÎÑÅÔÓÑ ÕÓÔÁÎÏ×ËÁ ËÁÒÅÔËÉ × ËÏÎÃÅ ÓÌÏ×Á. - 4. ïÐÅÒÁÔÏÒ y ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÔÅËÓÔÁ, Á ÐÏ ËÏÍÁÎÄÅ p ÐÒÏÉÓÈÏÄÉÔ ×ÓÔÁ×ËÁ ÓËÏÐÉÒÏ×ÁÎÎÏÇÏ ÔÅËÓÔÁ. 5. ðÒÉ ÎÁÖÁÔÉÉ ËÌÁ×ÉÛ SHIFT-R ×ÙÐÏÌÎÑÅÔÓÑ ÐÅÒÅËÌÀÞÅÎÉÅ × ÒÅÖÉÍ ÚÁÍÅÎÙ, Á ÏÔËÌÀÞÅÎÉÅ - ÎÁÖÁÔÉÅÍ ËÌÁ×ÉÛÉ . - 6. îÁÂÅÒÉÔÅ ":set xxx" ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÐÁÒÁÍÅÔÒÁ 'xxx'. + 6. îÁÂÅÒÉÔÅ :set xxx ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÐÁÒÁÍÅÔÒÁ 'xxx'. ÷ÏÔ ÎÅËÏÔÏÒÙÅ ÐÁÒÁÍÅÔÒÙ (ÍÏÖÎÏ ÕËÁÚÙ×ÁÔØ ÐÏÌÎÙÅ ÉÌÉ ÓÏËÒÁÝ£ÎÎÙÅ ÎÁÉÍÅÎÏ×ÁÎÉÑ): 'ic' 'ignorecase' ÉÇÎÏÒÉÒÏ×ÁÎÉÅ ÒÅÇÉÓÔÒÁ ÓÉÍ×ÏÌÏ× ÐÒÉ ÐÏÉÓËÅ 'is' 'incsearch' ÏÔÏÂÒÁÖÅÎÉÅ ÞÁÓÔÉÞÎÙÈ ÓÏ×ÐÁÄÅÎÉÊ ÐÒÉ ÐÏÉÓËÅ 'hls' 'hlsearch' ÐÏÄÓ×ÅÔËÁ ×ÓÅÈ ÓÏ×ÐÁÄÅÎÉÊ ÐÒÉ ÐÏÉÓËÅ - 7. äÌÑ ÏÔËÌÀÞÅÎÉÑ ÐÁÒÁÍÅÔÒÁ ÄÏÂÁ×ØÔÅ ÐÒÉÓÔÁ×ËÕ "no" Ë ÅÇÏ ÎÁÚ×ÁÎÉÀ :set noic + 7. äÌÑ ÓÂÒÏÓÁ ÐÁÒÁÍÅÔÒÁ, ÄÏÂÁ×ØÔÅ ÐÒÉÓÔÁ×ËÕ "no" Ë ÅÇÏ ÎÁÚ×ÁÎÉÀ :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 7.1. ÷óôòïåîîáñ óðòá÷ïþîáñ óéóôåíá + õòïë 1.7.1. ÷óôòïåîîáñ óðòá÷ïþîáñ óéóôåíá ** éÓÐÏÌØÚÕÊÔÅ ×ÓÔÒÏÅÎÎÕÀ ÓÐÒÁ×ÏÞÎÕÀ ÓÉÓÔÅÍÕ ** @@ -897,7 +910,7 @@ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õÒÏË 7.2. óïúäáîéå óôáòôï÷ïçï ëïíáîäîïçï æáêìá + õÒÏË 1.7.2. óïúäáîéå óôáòôï÷ïçï ëïíáîäîïçï æáêìá ** ÷ËÌÀÞÉÍ ×ÓÅ ×ÏÚÍÏÖÎÏÓÔÉ Vim ** @@ -921,7 +934,7 @@ "vimrc". þÔÏÂÙ ÐÏÌÕÞÉÔØ ÐÏÄÒÏÂÎÕÀ ÉÎÆÏÒÍÁÃÉÀ, ÎÁÂÅÒÉÔÅ :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - õòïë 7.3. ðïäóôáîï÷ëá ëïíáîä + õòïë 1.7.3. ðïäóôáîï÷ëá ëïíáîä ** ðÏÄÓÔÁÎÏ×ËÁ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ ×ÙÐÏÌÎÑÅÔÓÑ ÎÁÖÁÔÉÅÍ ËÌÁ×ÉÛ CTRL-D É ** @@ -933,7 +946,7 @@ 4. îÁÖÍÉÔÅ ËÌÁ×ÉÛÉ CTRL-D , É ÂÕÄÅÔ ÐÏËÁÚÁÎ ÐÅÒÅÞÅÎØ ËÏÍÁÎÄ ÒÅÄÁËÔÏÒÁ Vim ÎÁÞÉÎÁÀÝÉÈÓÑ Ó ÂÕË×Ù "e". 5. îÁÖÍÉÔÅ ËÌÁ×ÉÛÉ d , É ÂÕÄÅÔ ÐÏÄÓÔÁ×ÌÅÎÏ ÐÏÌÎÏÅ ÎÁÚ×ÁÎÉÅ ËÏÍÁÎÄÙ - ":edit". + "edit". 6. ôÅÐÅÒØ ÎÁÐÅÞÁÔÁÊÔÅ ÐÒÏÂÅÌ É ÎÁÞÁÌÏ ÎÁÉÍÅÎÏ×ÁÎÉÑ ÓÕÝÅÓÔ×ÕÀÝÅÇÏ ÆÁÊÌÁ :edit TE 7. îÁÖÍÉÔÅ ËÌÁ×ÉÛÕ É ÂÕÄÅÔ ÐÏÄÓÔÁ×ÌÅÎÏ ÎÁÉÍÅÎÏ×ÁÎÉÅ ÆÁÊÌÁ, ÅÓÌÉ ÏÎÏ @@ -943,8 +956,9 @@ ðÏÄÓÔÁÎÏ×ËÁ ÒÁÂÏÔÁÅÔ ÄÌÑ ÍÎÏÖÅÓÔ×Á ËÏÍÁÎÄ. ðÒÏÓÔÏ ÐÏÐÒÏÂÕÊÔÅ ÎÁÖÁÔØ ËÌÁ×ÉÛÉ CTRL-D É ÄÌÑ ÌÀÂÏÊ ÉÚ ËÏÍÁÎÄ ÒÅÄÁËÔÏÒÁ. üÔÏ ÏÓÏÂÅÎÎÏ ÐÏÌÅÚÎÏ ÄÌÑ ËÏÍÁÎÄÙ :help . + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - òåúàíå õòïëá 7 + òåúàíå õòïëá 1.7 1. þÔÏÂÙ ÏÔËÒÙÔØ ÏËÎÏ ×ÓÔÒÏÅÎÎÏÊ ÓÐÒÁ×ÏÞÎÏÊ ÓÉÓÔÅÍÙ ÒÅÄÁËÔÏÒÁ, ÎÁÂÅÒÉÔÅ @@ -966,31 +980,34 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + îÁ ÜÔÏÍ ÍÏÖÎÏ ÚÁ×ÅÒÛÉÔØ ÐÅÒ×ÕÀ ÞÁÓÔØ ÚÁÎÑÔÉÊ ÐÏÓ×ÑÝ£ÎÎÙÈ ÒÅÄÁËÔÏÒÕ Vim. + äÁÌÅÅ ×Ù ÍÏÖÅÔÅ ÏÚÎÁËÏÍÉÔØÓÑ ÓÏ ×ÔÏÒÏÊ ÞÁÓÔØÀ ÚÁÎÑÔÉÊ. + + ãÅÌØÀ ÄÁÎÎÏÇÏ ËÕÒÓÁ ÂÙÌÏ ÄÁÔØ ËÒÁÔËÉÊ ÏÂÚÏÒ ÒÅÄÁËÔÏÒÁ Vim, ÄÏÓÔÁÔÏÞÎÙÊ ÄÌÑ + ÔÏÇÏ, ÞÔÏÂÙ ÎÅ ×ÏÚÎÉËÁÌÏ ÓÌÏÖÎÏÓÔÅÊ ÐÒÉ ÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÉ. üÔÏ ÄÁÌÅËÏ ÎÅ + ÐÏÌÎÙÊ ÏÂÚÏÒ, ÐÏÓËÏÌØËÕ × ÒÅÄÁËÔÏÒÅ Vim ÅÓÔØ ÅÝ£ ÍÎÏÇÏ-ÍÎÏÇÏ ËÏÍÁÎÄ. - îÁ ÜÔÏÍ ÐÏÚ×ÏÌØÔÅ ÚÁ×ÅÒÛÉÔØ ÎÁÛÉ ÚÁÎÑÔÉÑ ÐÏÓ×ÑÝ£ÎÎÙÅ ÒÅÄÁËÔÏÒÕ Vim. õÒÏËÉ, - ÐÒÅÄÓÔÁ×ÌÅÎÎÙÅ × ÒÁÍËÁÈ ÄÁÎÎÏÇÏ ËÕÒÓÁ, ÄÏÌÖÎÙ ÂÙÌÉ ÄÁÔØ ×ÁÍ ÏÂÝÅÅ - ÐÒÅÄÓÔÁ×ÌÅÎÉÅ Ï ÒÁÂÏÔÅ Ó ÒÅÄÁËÔÏÒÏÍ, ÄÏÓÔÁÔÏÞÎÏÅ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÎÅ ×ÏÚÎÉËÁÌÏ - ÓÌÏÖÎÏÓÔÅÊ ÐÒÉ ÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÉ. üÔÉ ÚÁÎÑÔÉÑ, ËÁË ×Ù ÐÏÎÉÍÁÅÔÅ, ÎÅ ÐÏÚ×ÏÌÑÀÔ - ÏÐÉÓÁÔØ ×ÓÅ ÄÏÓÔÕÐÎÙÅ ËÏÍÁÎÄÙ. þÔÏÂÙ ÒÁÓÛÉÒÉÔØ Ó×ÏÉ ÐÏÚÎÁÎÉÑ, ÏÚÎÁËÏÍØÔÅÓØ Ó - ÒÕËÏ×ÏÄÓÔ×ÏÍ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÎÁÂÒÁ× ËÏÍÁÎÄÕ :help user-manual. + þÔÏÂÙ ÒÁÓÛÉÒÉÔØ Ó×ÏÉ ÐÏÚÎÁÎÉÑ, ÏÚÎÁËÏÍØÔÅÓØ Ó ÒÕËÏ×ÏÄÓÔ×ÏÍ ÐÏÌØÚÏ×ÁÔÅÌÑ, + ÎÁÂÒÁ× ËÏÍÁÎÄÕ :help user-manual. äÌÑ ÄÁÌØÎÅÊÛÅÇÏ ÞÔÅÎÉÑ ÒÅËÏÍÅÎÄÕÅÔÓÑ ËÎÉÇÁ "Vim - Vi Improved", Á×ÔÏÒ Steve Oualline, ÉÚÄÁÔÅÌØÓÔ×Ï New Riders. - üÔÁ ËÎÉÇÁ ÐÏÌÎÏÓÔØÀ ÐÏÓ×ÑÝÅÎÁ ÐÒÏÇÒÁÍÍÅ Vim É ÂÕÄÅÔ ÏÓÏÂÅÎÎÏ ÐÏÌÅÚÎÁ ÎÏ×ÉÞËÁÍ. + ïÎÁ ÐÏÌÎÏÓÔØÀ ÐÏÓ×ÑÝÅÎÁ ÒÅÄÁËÔÏÒÕ Vim É ÂÕÄÅÔ ÏÓÏÂÅÎÎÏ ÐÏÌÅÚÎÁ ÎÏ×ÉÞËÁÍ. ÷ ËÎÉÇÅ ÉÍÅÅÔÓÑ ÍÎÏÖÅÓÔ×Ï ÐÒÉÍÅÒÏ× É ÉÌÌÀÓÔÒÁÃÉÊ. óÍ. https://iccf-holland.org/click5.html - óÌÅÄÕÀÝÁÑ ËÎÉÇÁ ÂÏÌÅÅ ÐÏÞÔÅÎÎÏÇÏ ×ÏÚÒÁÓÔÁ É ÐÏÓ×ÑÝÅÎÁ ÂÏÌØÛÅ ÒÅÄÁËÔÏÒÕ Vi, + åÝ£ ÏÄÎÁ ËÎÉÇÁ ÂÏÌÅÅ ÐÏÞÔÅÎÎÏÇÏ ×ÏÚÒÁÓÔÁ É ÐÏÓ×ÑÝÅÎÁ ÂÏÌØÛÅ ÒÅÄÁËÔÏÒÕ Vi, ÞÅÍ ÒÅÄÁËÔÏÒÕ Vim, ÏÄÎÁËÏ ÔÁËÖÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ Ë ÐÒÏÞÔÅÎÉÀ "Learning the Vi Editor", Á×ÔÏÒ Linda Lamb, ÉÚÄÁÔÅÌØÓÔ×Ï O'Reilly & Associates Inc. üÔÏ ÈÏÒÏÛÁÑ ËÎÉÇÁ, ÞÔÏÂÙ ÕÚÎÁÔØ ×Ó£, ÞÔÏ ÔÏÌØËÏ ÍÏÖÎÏ ÓÄÅÌÁÔØ × ÒÅÄÁËÔÏÒÅ Vi. - ûÅÓÔÏÅ ÉÚÄÁÎÉÅ ÔÁËÖÅ ×ËÌÀÞÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÒÅÄÁËÔÏÒÅ Vim. + ûÅÓÔÏÅ ÉÚÄÁÎÉÅ ÜÔÏÊ ËÎÉÇÉ ×ËÌÀÞÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÒÅÄÁËÔÏÒÅ Vim. üÔÉ ÕÒÏËÉ ÂÙÌÉ ÓÏÓÔÁ×ÌÅÎÙ Michael C. Pierce É Robert K. Ware ÉÚ Colorado School of Mines Ó ÕÞ£ÔÏÍ ÉÄÅÊ, ÐÒÅÄÌÏÖÅÎÎÙÈ Charles Smith ÉÚ Colorado State - University. E-mail: bware@mines.colorado.edu. + University. E-mail: bware@mines.colorado.edu (ÔÅÐÅÒØ ÎÅÄÏÓÔÕÐÅÎ). õÒÏËÉ ÄÏÒÁÂÏÔÁÎÙ Bram Moolenaar ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ÒÅÄÁËÔÏÒÅ Vim. diff --git a/runtime/tutor/tutor.ru.cp1251 b/runtime/tutor/tutor1.ru.cp1251 similarity index 88% rename from runtime/tutor/tutor.ru.cp1251 rename to runtime/tutor/tutor1.ru.cp1251 index 281a1d3dc9..27d567a07d 100644 --- a/runtime/tutor/tutor.ru.cp1251 +++ b/runtime/tutor/tutor1.ru.cp1251 @@ -1,12 +1,13 @@ =============================================================================== - âåðñèÿ 1.7 = ÄÎÁÐÎ ÏÎÆÀËÎÂÀÒÜ ÍÀ ÇÀÍßÒÈß ÏÎ ÐÅÄÀÊÒÎÐÓ Vim = +âåðñèÿ 1.7 = ÄÎÁÐÎ ÏÎÆÀËÎÂÀÒÜ ÍÀ ÇÀÍßÒÈß ÏÎ ÐÅÄÀÊÒÎÐÓ Vim = +=============================================================================== += ÃËÀÂÀ ÏÅÐÂÀß = =============================================================================== Ïðîãðàììà Vim -- ýòî î÷åíü ìîùíûé òåêñòîâûé ðåäàêòîð, èìåþùèé ìíîæåñòâî êîìàíä, è âñå èõ ïðîñòî íåâîçìîæíî îïèñàòü â ðàìêàõ ýòîãî ó÷åáíèêà. Äàííûé æå ó÷åáíèê ïðèçâàí îáúÿñíèòü òå êîìàíäû, êîòîðûå ïîçâîëÿò âàì ñ ë¸ãêîñòüþ èñïîëüçîâàòü ïðîãðàììó Vim â êà÷åñòâå ðåäàêòîðà îáùåãî íàçíà÷åíèÿ. - Íà îñâîåíèå ìàòåðèàëîâ ýòîãî ó÷åáíèêà ïîòðåáóåòñÿ îêîëî 30 ìèíóò, íî ýòî çàâèñèò îò òîãî, ñêîëüêî âðåìåíè âû ïîñâÿòèòå ïðàêòè÷åñêèì çàíÿòèÿì. @@ -18,11 +19,10 @@ Âàæíî ïîìíèòü, ÷òî ýòîò ó÷åáíèê ïðåäíàçíà÷åí äëÿ ïðàêòè÷åñêîãî îáó÷åíèÿ. Ýòî îçíà÷àåò, ÷òî âû äîëæíû ïðèìåíÿòü êîìàíäû äëÿ òîãî, ÷òîáû êàê ñëåäóåò èõ èçó÷èòü. Åñëè âû ïðîñòî ïðî÷èòàåòå ýòîò òåêñò, òî íå çàïîìíèòå êîìàíäû! - Òåïåðü, óáåäèâøèñü, ÷òî íå âêëþ÷åíà êëàâèøà , íàæìèòå êëàâèøó j - íåñêîëüêî ðàç, òàê, ÷òîáû óðîê 1.1 ïîëíîñòüþ ïîìåñòèëñÿ íà ýêðàíå. + íåñêîëüêî ðàç, òàê, ÷òîáû óðîê 1.1.1 ïîëíîñòüþ ïîìåñòèëñÿ íà ýêðàíå. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 1.1. ÏÅÐÅÌÅÙÅÍÈÅ ÊÀÐÅÒÊÈ + Óðîê 1.1.1. ÏÅÐÅÌÅÙÅÍÈÅ ÊÀÐÅÒÊÈ ** ×òîáû ïåðåìåùàòü êàðåòêó â óêàçàííûõ íàïðàâëåíèÿõ, íàæìèòå êëàâèøè h,j,k,l ** ^ Ïîäñêàçêà. @@ -35,7 +35,7 @@ 2. Óäåðæèâàéòå íàæàòîé êëàâèøó "âíèç" (j) äëÿ áåñïðåðûâíîãî ïåðåìåùåíèÿ êàðåòêè. Òåïåðü âû çíàåòå, êàê ïåðåéòè ê ñëåäóþùåìó óðîêó. - 3. Èñïîëüçóÿ êëàâèøó "âíèç", òî åñòü j , ïåðåéäèòå ê óðîêó 1.2. + 3. Èñïîëüçóÿ êëàâèøó "âíèç", òî åñòü j , ïåðåéäèòå ê óðîêó 1.1.2. Ñîâåò. Åñëè âû íå óâåðåíû â ïðàâèëüíîñòè íàáðàííîãî òåêñòà, íàæìèòå êëàâèøó , @@ -46,7 +46,7 @@ âûïîëíÿòü ïåðåìåùåíèå êàðåòêè êëàâèøàìè h j k l íàìíîãî áûñòðåå, ñòîèò òîëüêî íåìíîãî ïîòðåíèðîâàòüñÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 1.2. ÇÀÂÅÐØÅÍÈÅ ÐÀÁÎÒÛ ÏÐÎÃÐÀÌÌÛ + Óðîê 1.1.2. ÇÀÂÅÐØÅÍÈÅ ÐÀÁÎÒÛ ÏÐÎÃÐÀÌÌÛ ÂÍÈÌÀÍÈÅ! Ïåðåä âûïîëíåíèåì îïèñàííûõ íèæå äåéñòâèé, ïðî÷òèòå óðîê ïîëíîñòüþ! @@ -68,9 +68,9 @@ Ïî êîìàíäå :q! áóäóò ñáðîøåíû ëþáûå ñäåëàííûå èçìåíåíèÿ. ×åðåç íåñêîëüêî óðîêîâ âû óçíàåòå, êàê ñîõðàíÿòü èçìåíåíèÿ â ôàéë. - 5. Ïåðåìåñòèòå êàðåòêó âíèç ê óðîêó 1.3. + 5. Ïåðåìåñòèòå êàðåòêó âíèç ê óðîêó 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 1.3. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ - ÓÄÀËÅÍÈÅ ÒÅÊÑÒÀ + Óðîê 1.1.3. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ - ÓÄÀËÅÍÈÅ ÒÅÊÑÒÀ ** ×òîáû óäàëèòü ñèìâîë ïîä êóðñîðîì, íàæìèòå êëàâèøó x ** @@ -79,21 +79,22 @@ 2. ×òîáû èñïðàâèòü îøèáêè, ïåðåìåùàéòå êàðåòêó, ïîêà îíà íå îêàæåòñÿ íàä óäàëÿåìûì ñèìâîëîì. - 3. Íàæìèòå êëàâèøó x äëÿ óäàëåíèÿ òðåáóåìîãî ñèìâîëà (çäåñü x îçíà÷àåò - ëàòèíñêóþ ñòðî÷íóþ áóêâó x íà êëàâèàòóðå). + 3. Íàæìèòå êëàâèøó x äëÿ óäàëåíèÿ òðåáóåìîãî ñèìâîëà. 4. Ïîâòîðèòå øàãè ñî 2 ïî 4, ïîêà ñòðîêà íå áóäåò èñïðàâëåíà. ---> Îò òòòîïîòà êîïûòò ïïïûëü ïïî ïïïîëþ ëåòòèòò. - 5. Òåïåðü, êîãäà ñòðîêà èñïðàâëåíà, ïåðåõîäèòå ê óðîêó 1.4. + 5. Òåïåðü, êîãäà ñòðîêà èñïðàâëåíà, ïåðåõîäèòå ê óðîêó 1.1.4. Ïðèìå÷àíèå.  õîäå ýòèõ çàíÿòèé íå ïûòàéòåñü ñðàçó âñ¸ çàïîìèíàòü, ó÷èòåñü â ïðîöåññå ðàáîòû. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 1.4. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ - ÂÑÒÀÂÊÀ ÒÅÊÑÒÀ + Óðîê 1.1.4. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ - ÂÑÒÀÂÊÀ ÒÅÊÑÒÀ ** ×òîáû âñòàâèòü òåêñò, íàæìèòå êëàâèøó i ** @@ -113,18 +114,18 @@ ---> ×àñòü òåêñòà â ýòîé ñòðîêå áåññëåäíî ïðîïàëî. - 5. Êîãäà îñâîèòå âñòàâêó òåêñòà, ïåðåõîäèòå ê óðîêó 1.5. + 5. Êîãäà îñâîèòå âñòàâêó òåêñòà, ïåðåõîäèòå ê óðîêó 1.1.5. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 1.5. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ - ÄÎÁÀÂËÅÍÈÅ ÒÅÊÑÒÀ + Óðîê 1.1.5. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ - ÄÎÁÀÂËÅÍÈÅ ÒÅÊÑÒÀ ** ×òîáû äîáàâèòü òåêñò, íàæìèòå êëàâèøó A ** 1. Ïåðåìåñòèòå êàðåòêó ê ïåðâîé ñòðîêå ïîìå÷åííîé --->. Ñåé÷àñ íåâàæíî, íà êàêîì ñèìâîëå ðàñïîëîæåíà êàðåòêà â ýòîé ñòðîêå. - 2. Íàæìèòå êëàâèøó A (ëàòèíñêàÿ ïðîïèñíàÿ áóêâà A) è íàáåðèòå òåêñò, - êîòîðûé òðåáóåòñÿ äîáàâèòü. + 2. Íàæìèòå êëàâèøó A è íàáåðèòå òåêñò, êîòîðûé òðåáóåòñÿ äîáàâèòü. 3. Ïîñëå äîáàâëåíèÿ òåêñòà íàæìèòå êëàâèøó äëÿ âîçâðàòà â ðåæèì êîìàíä. @@ -136,16 +137,18 @@ ---> Çäåñü òàêæå íåäîñòà¸ò ÷àñ Çäåñü òàêæå íåäîñòà¸ò ÷àñòè òåêñòà. - 5. Êîãäà îñâîèòå äîáàâëåíèå òåêñòà, ïåðåõîäèòå ê óðîêó 1.6. + 5. Êîãäà îñâîèòå äîáàâëåíèå òåêñòà, ïåðåõîäèòå ê óðîêó 1.1.6. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 1.6. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ È ÇÀÏÈÑÜ ÔÀÉËÀ + ÓÐÎÊ 1.1.6. ÐÅÄÀÊÒÈÐÎÂÀÍÈÅ È ÇÀÏÈÑÜ ÔÀÉËÀ ** ×òîáû ñîõðàíèòü ôàéë è çàêðûòü ðåäàêòîð, èñïîëüçóéòå êîìàíäû :wq ** ÂÍÈÌÀÍÈÅ! Ïåðåä âûïîëíåíèåì îïèñàííûõ íèæå äåéñòâèé, ïðî÷òèòå óðîê ïîëíîñòüþ! - 1. Çàâåðøèòå ðàáîòó ðåäàêòîðà Vim, êàê óêàçàíî â óðîêå 1.2 - :q! + 1. Çàâåðøèòå ðàáîòó ðåäàêòîðà Vim, êàê óêàçàíî â óðîêå 1.1.2 - :q! Åñëè åñòü äîñòóï ê äðóãîìó òåðìèíàëó, òî òàì ìîæåòå ñäåëàòü ñëåäóþùåå: 2.  ïðèãëàøåíèè êîìàíäíîé îáîëî÷êè ââåäèòå êîìàíäó vim tutor @@ -161,8 +164,9 @@ äàëåå ê ðåçþìå. 6. Ïîñëå òîãî êàê âû ïðî÷ëè è ïîíÿëè âûøåñêàçàííîå, âûïîëíèòå îïèñàííûå øàãè. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 1 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.1 1. Êàðåòêó ìîæíî ïåðåìåùàòü ëèáî êëàâèøàìè ñî ñòðåëêàìè, ëèáî êëàâèøàìè hjkl. h (âëåâî) j (âíèç) k (ââåðõ) l (âïðàâî) @@ -184,9 +188,9 @@ Ïî íàæàòèþ êëàâèøè áóäåò âûïîëíåíî ïåðåêëþ÷åíèå ðåäàêòîðà â ðåæèì êîìàíä ñ ïðåðûâàíèåì îáðàáîòêè ëþáîé ðàíåå íàáðàííîé êîìàíäû. -Òåïåðü ïåðåõîäèòå ê óðîêó 2. +Òåïåðü ïåðåõîäèòå ê óðîêó 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.1. ÊÎÌÀÍÄÛ ÓÄÀËÅÍÈß + Óðîê 1.2.1. ÊÎÌÀÍÄÛ ÓÄÀËÅÍÈß ** ×òîáû óäàëèòü ñëîâî ïîä êàðåòêîé, èñïîëüçóéòå êîìàíäó dw ** @@ -206,10 +210,11 @@ ---> Íåñêîëüêî ñëîâ ðàôèíàä â ýòîì ïðåäëîæåíèè àâòîêðàí èçëèøíè. 5. Ïîâòîðèòå øàãè 3 è 4, ïîêà íå èñïðàâèòå âñå îøèáêè, è ïåðåõîäèòå ê - óðîêó 2.2 + óðîêó 1.2.2 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.2. ÅÙ¨ ÎÄÍÀ ÊÎÌÀÍÄÀ ÓÄÀËÅÍÈß + Óðîê 1.2.2. ÅÙ¨ ÎÄÍÀ ÊÎÌÀÍÄÀ ÓÄÀËÅÍÈß ** ×òîáû óäàëèòü òåêñò äî êîíöà ñòðîêè, èñïîëüçóéòå êîìàíäó d$ ** @@ -226,13 +231,14 @@ ---> Êòî-òî íàáðàë îêîí÷àíèå ýòîé ñòðîêè äâàæäû. îêîí÷àíèå ýòîé ñòðîêè äâàæäû. - 5. ×òîáû ëó÷øå ðàçîáðàòüñÿ â òîì, êàê ýòî ïðîèñõîäèò, ïåðåõîäèòå ê óðîêó 2.3. + 5. ×òîáû ëó÷øå ðàçîáðàòüñÿ â òîì êàê ýòî ïðîèñõîäèò, îáðàòèòåñü ê óðîêó 1.2.3. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.3. ÎÏÅÐÀÒÎÐÛ È ÎÁÚÅÊÒÛ + Óðîê 1.2.3. ÎÏÅÐÀÒÎÐÛ È ÎÁÚÅÊÒÛ Ìíîãèå êîìàíäû, èçìåíÿþùèå òåêñò, ÿâëÿþòñÿ ñîñòàâíûìè è ôîðìèðóþòñÿ èç îïåðàòîðà è îáúåêòà, ê êîòîðîìó ïðèìåíÿåòñÿ ýòîò îïåðàòîð. @@ -256,7 +262,7 @@ ñ êîòîðûì àññîöèèðîâàí îáúåêò, òî êàðåòêà áóäåò ïåðåìåùåíà òàê, êàê óêàçàíî â ïåðå÷íå îáúåêòîâ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.4. ÏÐÈÌÅÍÅÍÈÅ ÑרÒ×ÈÊÀ ÑÎÂÌÅÑÒÍÎ Ñ ÎÁÚÅÊÒÀÌÈ + Óðîê 1.2.4. ÏÐÈÌÅÍÅÍÈÅ ÑרÒ×ÈÊÀ ÑÎÂÌÅÑÒÍÎ Ñ ÎÁÚÅÊÒÀÌÈ ** ×òîáû ïåðåìåùåíèå êàðåòêà âûïîëíÿëîñü íåîáõîäèìîå êîëè÷åñòâî ðàç, óêàæèòå ïåðåä îáúåêòîì òðåáóåìîå ÷èñëî ** @@ -276,10 +282,11 @@ ---> Îáû÷íàÿ ñòðîêà èç ñëîâ, ÷òîáû âû íà íåé ïîòðåíèðîâàëèñü ïåðåìåùàòü êóðñîð. - 6. Êîãäà îñâîèòå ýòî, ïåðåõîäèòå ê óðîêó 2.5. + 6. Êîãäà îñâîèòå ýòî, ïåðåõîäèòå ê óðîêó 1.2.5. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.5. ÏÐÈÌÅÍÅÍÈÅ ÑרÒ×ÈÊÀ ÄËß ÌÍÎÆÅÑÒÂÅÍÍÎÃÎ ÓÄÀËÅÍÈß + Óðîê 1.2.5. ÏÐÈÌÅÍÅÍÈÅ ÑרÒ×ÈÊÀ ÄËß ÌÍÎÆÅÑÒÂÅÍÍÎÃÎ ÓÄÀËÅÍÈß ** ×òîáû ïðèìåíèòü îïåðàòîð íåñêîëüêî ðàç, óêàæèòå ÷èñëî òðåáóåìûõ ïîâòîðîâ ** @@ -301,8 +308,9 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.6. ÎÏÅÐÀÖÈÈ ÑÎ ÑÒÐÎÊÀÌÈ + Óðîê 1.2.6. ÎÏÅÐÀÖÈÈ ÑÎ ÑÒÐÎÊÀÌÈ ** ×òîáû óäàëèòü ñòðîêó öåëèêîì, èñïîëüçóéòå êîìàíäó dd ** @@ -326,7 +334,7 @@ Äóáëèðîâàíèå îïåðàòîðà äëÿ îáðàáîòêè öåëîé ñòðîêè ïðèìåíÿåòñÿ è ñ äðóãèìè îïåðàòîðàìè, î êîòîðûõ ãîâîðèòñÿ äàëåå. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 2.7. ÊÎÌÀÍÄÀ ÎÒÌÅÍÛ + Óðîê 1.2.7. ÊÎÌÀÍÄÀ ÎÒÌÅÍÛ ** ×òîáû îòìåíèòü ðåçóëüòàò äåéñòâèÿ ïðåäûäóùåé êîìàíäû, íàæìèòå êëàâèøó u ×òîáû îòìåíèòü ïðàâêè äëÿ âñåé ñòðîêè, íàæìèòå êëàâèøó U ** @@ -335,8 +343,7 @@ 2. Íàæìèòå êëàâèøó x äëÿ óäàëåíèÿ ïåðâîãî îøèáî÷íîãî ñèìâîëà. 3. Òåïåðü íàæìèòå êëàâèøó u äëÿ îòìåíû ïîñëåäíåé âûïîëíåííîé êîìàíäû. 4. Èñïðàâüòå âñå îøèáêè â ñòðîêå, èñïîëüçóÿ êîìàíäó x . - 5. Òåïåðü íàæìèòå êëàâèøó U (ëàòèíñêàÿ ïðîïèñíàÿ áóêâà U), ÷òîáû âåðíóòü - âñþ ñòðîêó â èñõîäíîå ñîñòîÿíèå. + 5. Òåïåðü íàæìèòå êëàâèøó U , ÷òîáû âåðíóòü âñþ ñòðîêó â èñõîäíîå ñîñòîÿíèå. 6. Íàæìèòå êëàâèøó u íåñêîëüêî ðàç äëÿ îòìåíû êîìàíäû U è ïðåäûäóùèõ êîìàíä. 7. Òåïåðü íàæìèòå êëàâèøè CTRL-R (ò. å. óäåðæèâàÿ íàæàòîé êëàâèøó CTRL, @@ -348,9 +355,10 @@ 8. Ýòî î÷åíü íóæíûå è ïîëåçíûå êîìàíäû. -Äàëåå ïåðåõîäèòå ê ðåçþìå óðîêà 2. +Äàëåå ïåðåõîäèòå ê ðåçþìå óðîêà 1.2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 2 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.2 1. ×òîáû óäàëèòü ñëîâî, óñòàíîâèòå êóðñîð â åãî íà÷àëî è íàáåðèòå dw 2. ×òîáû óäàëèòü òåêñò îò ïîçèöèè êàðåòêè äî êîíöà ñëîâà, íàáåðèòå de @@ -372,9 +380,9 @@ 8. ×òîáû îòìåíèòü ïðåäøåñòâóþùèå äåéñòâèÿ, íàæìèòå u (ñòðî÷íàÿ áóêâà u) ×òîáû îòìåíèòü âñå èçìåíåíèÿ â ñòðîêå, íàæìèòå U (ïðîïèñíàÿ áóêâà U) - ×òîáû âåðíóòü îòìåí¸ííûå èçìåíåíèÿ, íàæìèòå CTRL+R + ×òîáû âåðíóòü îòìåí¸ííûå èçìåíåíèÿ, íàæìèòå CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 3.1. ÊÎÌÀÍÄÀ ÂÑÒÀÂÊÈ + Óðîê 1.3.1. ÊÎÌÀÍÄÀ ÂÑÒÀÂÊÈ ** ×òîáû âñòàâèòü ïîñëåäíèé óäàë¸ííûé òåêñò, íàáåðèòå êîìàíäó p ** @@ -396,8 +404,9 @@ ---> â) Îí óâàæàòü ñåáÿ çàñòàâèë ---> à) Ìîé äÿäÿ ñàìûõ ÷åñòíûõ ïðàâèë + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 3.2. ÊÎÌÀÍÄÀ ÇÀÌÅÍÛ + Óðîê 1.3.2. ÊÎÌÀÍÄÀ ÇÀÌÅÍÛ ** ×òîáû çàìåíèòü ñèìâîë ïîä êàðåòêîé, íàáåðèòå r è çàìåíÿþùèé ñèìâîë ** @@ -414,13 +423,14 @@ --->  ìîìåíò íàáîðà ýòîé ñòðîêè êîå-êòî ñ òðóäîì ïîïàäàë ïî êëàâèøàì! - 5. Òåïåðü ïåðåõîäèòå ê óðîêó 3.3. + 5. Òåïåðü ïåðåõîäèòå ê óðîêó 1.3.3. Ïðèìå÷àíèå. Ïîìíèòå, ÷òî âû äîëæíû ó÷èòüñÿ â ïðîöåññå ðàáîòû, à íå ïðîñòî çóáðèòü. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 3.3. ÎÏÅÐÀÒÎÐ ÈÇÌÅÍÅÍÈß + Óðîê 1.3.3. ÎÏÅÐÀÒÎÐ ÈÇÌÅÍÅÍÈß ** ×òîáû èçìåíèòü îêîí÷àíèå ñëîâà, íàáåðèòå êîìàíäó ce ** @@ -442,8 +452,9 @@ Îáðàòèòå âíèìàíèå, ÷òî ïî êîìàíäå ce íå òîëüêî óäàëÿåòñÿ ÷àñòü ñëîâà, íî è ïðîèñõîäèò ïåðåêëþ÷åíèå ðåäàêòîðà â ðåæèì âñòàâêè. Ïî êîìàíäå cc áóäåò âûïîëíÿòñÿ òî æå ñàìîå, íî äëÿ öåëîé ñòðîêè. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 3.4. ÅÙ¨ ÍÅÑÊÎËÜÊÎ ÑÏÎÑÎÁΠÐÀÁÎÒÛ Ñ ÎÏÅÐÀÒÎÐÎÌ ÈÇÌÅÍÅÍÈß c + ÓÐÎÊ 1.3.4. ÅÙ¨ ÍÅÑÊÎËÜÊÎ ÑÏÎÑÎÁΠÐÀÁÎÒÛ Ñ ÎÏÅÐÀÒÎÐÎÌ ÈÇÌÅÍÅÍÈß c ** Ê îïåðàòîðó èçìåíåíèÿ ïðèìåíèìû òå æå îáúåêòû, ÷òî è ê îïåðàòîðó óäàëåíèÿ ** @@ -465,8 +476,9 @@ Ïðèìå÷àíèå. Êëàâèøà ìîæåò èñïîëüçîâàòüñÿ äëÿ èñïðàâëåíèÿ ïðè íàáîðå òåêñòà. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 3 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.3 1. ×òîáû âñòàâèòü òåêñò, êîòîðûé áûë òîëüêî ÷òî óäàë¸í, íàáåðèòå êîìàíäó p . Òåêñò áóäåò âñòàâëåí ÏÎÑËÅ ïîçèöèè êàðåòêè (åñëè áûëà óäàëåíà ñòðîêà, @@ -490,7 +502,7 @@ Òåïåðü ïåðåõîäèòå ê ñëåäóþùåìó óðîêó. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 4.1. ÈÍÔÎÐÌÀÖÈß Î ÔÀÉËÅ È ÏÎÇÈÖÈß ÊÀÐÅÒÊÈ + ÓÐÎÊ 1.4.1. ÈÍÔÎÐÌÀÖÈß Î ÔÀÉËÅ È ÏÎÇÈÖÈß ÊÀÐÅÒÊÈ ** ×òîáû ïîëó÷èòü èíôîðìàöèþ î ôàéëå è ïîçèöèè êàðåòêè, íàæìèòå CTRL-g . ×òîáû ïåðåìåñòèòü êàðåòêó ê çàäàííîé ñòðîêå â ôàéëå, íàæìèòå SHIFT-G ** @@ -514,7 +526,7 @@ 4. Åñëè âû çàïîìíèëè âñ¸ âûøåñêàçàííîå, âûïîëíèòå øàãè ñ 1 ïî 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 4.2. ÊÎÌÀÍÄÛ ÏÎÈÑÊÀ + Óðîê 1.4.2. ÊÎÌÀÍÄÛ ÏÎÈÑÊÀ ** ×òîáû ÷òî-òî íàéòè, íàáåðèòå êîìàíäó / è çàòåì ââåäèòå èñêîìóþ ôðàçó ** @@ -536,8 +548,9 @@ Ïðèìå÷àíèå. Åñëè áóäåò äîñòèãíóò êîíåö ôàéëà, òî ïîèñê áóäåò ïðîäîëæåí îò íà÷àëà ôàéëà. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 4.3. ÏÎÈÑÊ ÏÀÐÍÛÕ ÑÊÎÁÎÊ + Óðîê 1.4.3. ÏÎÈÑÊ ÏÀÐÍÛÕ ÑÊÎÁÎÊ ** ×òîáû íàéòè ïàðíóþ ñêîáêó äëÿ (, [ èëè {, íàáåðèòå êîìàíäó % ** @@ -559,8 +572,9 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 4.4. ÑÏÎÑÎÁ ÇÀÌÅÍÛ ÑËΠ+ Óðîê 1.4.4. ÑÏÎÑÎÁ ÇÀÌÅÍÛ ÑËΠ** ×òîáû "÷òî-òî" çàìåíèòü "÷åì-òî", íàáåðèòå êîìàíäó :s/÷òî/÷åì/g ** @@ -582,15 +596,15 @@ Íàáåðèòå :%s/÷òî/÷åì/g ÷òîáû çàìåíèòü âñå âõîæäåíèÿ âî âñ¸ì ôàéëå. Íàáåðèòå :%s/÷òî/÷åì/gc ÷òîáû âûäàâàëñÿ çàïðîñ ïîäòâåðæäåíèÿ ïåðåä êàæäîé çàìåíîé. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 4 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.4 1. Ïî ïðèâåä¸ííûì íèæå êîìàíäàì áóäåò âûïîëíåíî: CTRL-g - âûâîä èíôîðìàöèè î ôàéëå è òåêóùåé ïîçèöèè êàðåòêè â ýòîì ôàéëå SHIFT-G - ïåðåõîä íà ïîñëåäíþþ ñòðîêó ôàéëà íîìåð è SHIFT-G - ïåðåõîä ê ñòðîêå ñ óêàçàííûì íîìåðîì gg - ïåðåõîä íà ïåðâóþ ñòðîêó ôàéëà - 2. Ïðè ââîäå ñèìâîëà / ñ ïîñëåäóþùèì íàáîðîì ñëîâà, áóäåò âûïîëíåí ïîèñê ýòîãî ñëîâà ÂÏÅÐ¨Ä ïî òåêñòó. Ïðè ââîäå ñèìâîëà ? ñ ïîñëåäóþùèì íàáîðîì ñëîâà, áóäåò âûïîëíåí ïîèñê @@ -600,17 +614,15 @@ ïðîòèâîïîëîæíîì íàïðàâëåíèè. Ïðè íàæàòèè êëàâèø CTRL-O áóäåò âîçâðàò ê ïðåäûäóùåìó ñëîâó, à ïðè íàæàòèè êëàâèø CTRL-I áóäåò ïåðåõîä ê ðàíåå íàéäåííîìó ñëîâó. - 3. Ïðè íàæàòèè % , êîãäà êàðåòêà íà îäíîé èç ñêîáîê ( ), [ ] èëè { }, áóäåò íàéäåíà å¸ ïàðíàÿ ñêîáêà. - 4. ×òîáû çàìåíèòü ïåðâîå íàéäåííîå ñëîâî â ñòðîêå, íàáåðèòå :s/÷òî/÷åì ×òîáû çàìåíèòü âñå íàéäåííûå ñëîâà â ñòðîêå, íàáåðèòå :s/÷òî/÷åì/g ×òîáû çàìåíèòü â óêàçàííûìè èíòåðâàëå ñòðîê, íàáåðèòå :#,#s/÷òî/÷åì/g ×òîáû çàìåíèòü âñå íàéäåííûå ñëîâà â ôàéëå, íàáåðèòå :%s/÷òî/÷åì/g ×òîáû çàïðàøèâàëîñü ïîäòâåðæäåíèå, äîáàâüòå ôëàã 'c' :%s/÷òî/÷åì/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 5.1. ÊÀÊ ÂÛÇÂÀÒÜ ÈÇ ÐÅÄÀÊÒÎÐÀ ÂÍÅØÍÞÞ ÊÎÌÀÍÄÓ + Óðîê 1.5.1. ÊÀÊ ÂÛÇÂÀÒÜ ÈÇ ÐÅÄÀÊÒÎÐÀ ÂÍÅØÍÞÞ ÊÎÌÀÍÄÓ ** ×òîáû áûëà âûïîëíåíà êîìàíäà êîìàíäíîé îáîëî÷êè, íàáåðèòå â ðåäàêòîðå :! ** @@ -632,8 +644,9 @@ Âàæíî. Ïîñëå ââîäà êîìàíäû, íà÷èíàþùåéñÿ ñ : , äîëæíà áûòü íàæàòà êëàâèøà  äàëüíåéøåì ýòî ìîæåò íå óêàçûâàòüñÿ îòäåëüíî, íî ïîäðàçóìåâàòüñÿ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 5.2. ÊÀÊ ÇÀÏÈÑÀÒÜ ÔÀÉË + Óðîê 1.5.2. ÊÀÊ ÇÀÏÈÑÀÒÜ ÔÀÉË ** ×òîáû ñîõðàíèòü ôàéë ñî âñåìè èçìåíåíèÿìè â òåêñòå, íàáåðèòå :w ÔÀÉË ** @@ -655,8 +668,9 @@ 5. Òåïåðü óäàëèòå ýòîò ôàéë, íàáðàâ â ðåäàêòîðå êîìàíäó :!del TEST (äëÿ ÎÑ Windows) èëè :!rm TEST (äëÿ UNIX-ïîäîáíûõ ÎÑ) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 5.3. ÂÛÁÎÐÎ×ÍÀß ÇÀÏÈÑÜ ÑÒÐÎÊ + Óðîê 1.5.3. ÂÛÁÎÐÎ×ÍÀß ÇÀÏÈÑÜ ÑÒÐÎÊ ** ×òîáû ñîõðàíèòü ÷àñòü ôàéëà, íàæìèòå êëàâèøó v , âûäåëèòå ñòðîêè è íàáåðèòå êîìàíäó :w ÔÀÉË ** @@ -674,28 +688,27 @@ 5. Ïî ýòîé êîìàíäå âûáðàííûå ñòðîêè áóäóò çàïèñàíû â ôàéë TEST. Óáåäèòåñü â íàëè÷èè ýòîãî ôàéëà, âîñïîëüçîâàâøèñü êîìàíäîé :!dir èëè :!ls . Íå óäàëÿéòå ýòîò ôàéë, îí ïîòðåáóåòñÿ íà ñëåäóþùåì óðîêå. - Ïðèìå÷àíèå. Ïî íàæàòèþ êëàâèøè v âûïîëíÿåòñÿ ïåðåêëþ÷åíèå â âèçóàëüíûé ðåæèì. ×òîáû èçìåíèòü ðàçìåð âûáðàííîé îáëàñòè, íóæíî ïåðåìåñòèòü êàðåòêó. Ê âûäåëåííîìó ôðàãìåíòó ìîæíî ïðèìåíèòü ëþáîé îïåðàòîð, íàïðèìåð, d äëÿ åãî óäàëåíèÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 5.4. Ñ×ÈÒÛÂÀÍÈÅ È ÎÁÚÅÄÈÍÅÍÈÅ ÔÀÉËΠ+ Óðîê 1.5.4. Ñ×ÈÒÛÂÀÍÈÅ È ÎÁÚÅÄÈÍÅÍÈÅ ÔÀÉËΠ** ×òîáû âñòàâèòü ñîäåðæàùèéñÿ â ôàéëå òåêñò, íàáåðèòå :r ÔÀÉË ** 1. Óñòàíîâèòå êàðåòêó íàä ýòîé ñòðîêîé. Âíèìàíèå! - Ïîñëå âûïîëíåíèÿ îïèñàííîãî â ïóíêòå 2 âû óâèäèòå òåêñò èç óðîêà 5.3. + Ïîñëå âûïîëíåíèÿ îïèñàííîãî â ïóíêòå 2 âû óâèäèòå òåêñò èç óðîêà 1.5.3. Ïåðåìåñòèòå êàðåòêó âíèç ïî òåêñòó äî òåêóùåãî óðîêà. 2. Òåïåðü ñ÷èòàéòå ñîäåðæèìîå ôàéëà TEST, èñïîëüçóÿ êîìàíäó :r TEST , çäåñü TEST - ýòî íàèìåíîâàíèå ôàéëà. 3. Äëÿ ïðîâåðêè, ÷òî ñîäåðæèìîå ôàéëà áûëî âñòàâëåíî, ïåðåìåñòèòå êàðåòêó - ââåðõ ïî òåêñòó è óäîñòîâåðüòåñü, ÷òî òåïåðü çäåñü äâà óðîêà 5.3. - + ââåðõ ïî òåêñòó è óäîñòîâåðüòåñü, ÷òî òåïåðü çäåñü äâà óðîêà 1.5.3. - èñõîäíûé è èç ôàéëà TEST. Ïðèìå÷àíèå. @@ -703,8 +716,9 @@ áóäåò ïîëó÷åí âûâîä êîìàíäû ls è âñòàâëåí íèæå ïîçèöèè êàðåòêè. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 5 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.5 1. Ïî êîìàíäå :!command áóäåò èñïîëíåíà óêàçàííàÿ âíåøíÿÿ êîìàíäà. @@ -726,16 +740,16 @@ ïîçèöèè êàðåòêè. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 6.1. ÊÎÌÀÍÄÛ ÄËß ÑÎÇÄÀÍÈß ÑÒÐÎÊ + ÓÐÎÊ 1.6.1. ÊÎÌÀÍÄÛ ÄËß ÑÎÇÄÀÍÈß ÑÒÐÎÊ ** ×òîáû îòêðûòü íîâóþ ñòðîêó ñ ïåðåêëþ÷åíèåì â ðåæèì âñòàâêè, íàáåðèòå o ** 1. Ïåðåìåñòèòå êàðåòêó âíèç, ê ïåðâîé ñòðîêå ïîìå÷åííîé --->. - 2. Íàæìèòå êëàâèøó o (ëàòèíñêàÿ ñòðî÷íàÿ áóêâà o) äëÿ òîãî, ÷òîáû ñîçäàòü - ïóñòóþ ñòðîêó ÍÈÆÅ ïîçèöèè êàðåòêè è ïåðåêëþ÷èòü ðåäàêòîð â - ðåæèì âñòàâêè. + 2. Íàæìèòå êëàâèøó o äëÿ òîãî, ÷òîáû ñîçäàòü ïóñòóþ ñòðîêó ÍÈÆÅ ïîçèöèè + êàðåòêè è ïåðåêëþ÷èòü ðåäàêòîð â ðåæèì âñòàâêè. 3. Òåïåðü íàáåðèòå êàêîé-íèáóäü òåêñò è íàæìèòå êëàâèøó äëÿ âûõîäà èç ðåæèìà âñòàâêè. @@ -749,40 +763,41 @@ ---> Ñîçäàéòå íîâóþ ñòðîêó íàä ýòîé, ïîìåñòèâ ñþäà êàðåòêó è íàæàâ SHIFT-O. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 6.2. ÊÎÌÀÍÄÀ ÄËß ÄÎÁÀÂËÅÍÈß ÒÅÊÑÒÀ + ÓÐÎÊ 1.6.2. ÊÎÌÀÍÄÀ ÄËß ÄÎÁÀÂËÅÍÈß ÒÅÊÑÒÀ ** ×òîáû âñòàâèòü òåêñò ïîñëå ïîçèöèè êàðåòêè, íàáåðèòå a ** 1. Ïåðåìåñòèòå êàðåòêó âíèç, â íà÷àëî ïåðâîé ñòðîêè ïîìå÷åííîé --->. - 2. Íàæìèòå êëàâèøó e , ïîêà êàðåòêà íå îêàæåòñÿ íà ïîñëåäíåì ñèìâîëå ñëîâà "ñòðî". - 3. Íàæìèòå êëàâèøó a (ëàòèíñêàÿ ñòðî÷íàÿ áóêâà a) äëÿ äîáàâëåíèÿ òåêñòà - ÏÎÑËÅ ñèìâîëà, íàõîäÿùåãîñÿ ïîä êàðåòêîé. + 3. Íàæìèòå êëàâèøó a äëÿ äîáàâëåíèÿ òåêñòà ÏÎÑËÅ ñèìâîëà, íàõîäÿùåãîñÿ ïîä + êàðåòêîé. 4. Äîïèøèòå ñëîâî êàê â ñòðîêå íèæå. Íàæìèòå êëàâèøó äëÿ âûõîäà èç ðåæèìà âñòàâêè. - 5. Èñïîëüçóéòå e äëÿ ïåðåõîäà ê ñëåäóþùåìó íåçàâåðø¸ííîìó ñëîâó è ïîâòîðèòå - äåéñòâèÿ, îïèñàííûå â ïóíêòàõ 3 è 4. + 5. Èñïîëüçóéòå êëàâèøó e äëÿ ïåðåõîäà ê ñëåäóþùåìó íåçàâåðø¸ííîìó ñëîâó + è ïîâòîðèòå äåéñòâèÿ, îïèñàííûå â ïóíêòàõ 3 è 4. ----> Ýòà ñòðî ïîçâîëèò âàì ïîïðàêòèêîâ â äîáàâëå òåêñòà. ----> Ýòà ñòðî÷êà ïîçâîëèò âàì ïîïðàêòèêîâàòüñÿ â äîáàâëåíèè òåêñòà. +---> Íà ýòîé ñòðî âû ìîæåòå ïîïðàêòèêîâ â äîáàâëå òåêñòà. +---> Íà ýòîé ñòðîêå âû ìîæåòå ïîïðàêòèêîâàòüñÿ â äîáàâëåíèè òåêñòà. Ïðèìå÷àíèå. Ïî êîìàíäå a , i è A áóäåò âûïîëíåíî ïåðåêëþ÷åíèå â îäèí è òîò æå ðåæèì âñòàâêè, ðàçëè÷èå òîëüêî â òîì, ãäå âñòàâëÿþòñÿ ñèìâîëû. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 6.3. ÅÙ¨ ÎÄÈÍ ÑÏÎÑÎÁ ÇÀÌÅÍÛ + Óðîê 1.6.3. ÅÙ¨ ÎÄÈÍ ÑÏÎÑÎÁ ÇÀÌÅÍÛ ** ×òîáû çàìåíèòü íåñêîëüêî ñèìâîëîâ â ñòðîêå, íàáåðèòå R ** 1. Ïåðåìåñòèòå êàðåòêó â íà÷àëî ïåðâîãî ñëîâà xxx â ñòðîêå ïîìå÷åííîé ---> - 2. Òåïåðü íàæìèòå SHIFT-R (ëàòèíñêàÿ ïðîïèñíàÿ áóêâà R) è ââåäèòå ÷èñëî, - óêàçàííîå íèæå âî âòîðîé ñòðîêå, ÷òîáû çàìåíèòü ñèìâîëû xxx. + 2. Òåïåðü íàæìèòå SHIFT-R è ââåäèòå ÷èñëî, óêàçàííîå íèæå âî âòîðîé ñòðîêå, + ÷òîáû çàìåíèòü ñèìâîëû xxx. 3. Íàæìèòå êëàâèøó äëÿ âûõîäà èç ðåæèìà çàìåíû. Çàìåòüòå, ÷òî îñòàòîê ñòðîêè íå áûë èçìåí¸í. @@ -799,15 +814,14 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 6.4. ÊÎÏÈÐÎÂÀÍÈÅ È ÂÑÒÀÂÊÀ ÒÅÊÑÒÀ + Óðîê 1.6.4. ÊÎÏÈÐÎÂÀÍÈÅ È ÂÑÒÀÂÊÀ ÒÅÊÑÒÀ ** ×òîáû êîïèðîâàòü, èñïîëüçóéòå îïåðàòîð y , ÷òîáû âñòàâèòü - êîìàíäó p ** - 1. Óñòàíîâèòå êàðåòêó ïîñëå ñèìâîëîâ "à)" â ñòðîêå ïîìå÷åííîé --->. + 1. Óñòàíîâèòå êàðåòêó ïîñëå ñèìâîëîâ "à)" â ñòðîêå, ïîìå÷åííîé --->. 2. Ïåðåêëþ÷èòå ðåäàêòîð â âèçóàëüíûé ðåæèì êîìàíäîé v è ïåðåìåñòèòå êàðåòêó âïåð¸ä äî ñëîâà "ïåðâûé". - 3. Íàæìèòå êëàâèøó y (ëàòèíñêàÿ ñòðî÷íàÿ áóêâà y) äëÿ êîïèðîâàíèÿ - ïîäñâå÷åííîãî òåêñòà. + 3. Íàæìèòå êëàâèøó y äëÿ êîïèðîâàíèÿ ïîäñâå÷åííîãî òåêñòà. 4. Ïåðåìåñòèòå êàðåòêó â êîíåö ñëåäóþùåé ñòðîêè, íàáðàâ êîìàíäó j$ . 5. Íàæìèòå êëàâèøó p äëÿ âñòàâêè òåêñòà. Çàòåì íàáåðèòå êîìàíäó a , íàïå÷àòàéòå ñëîâî "âòîðîé" è íàæìèòå êëàâèøó . @@ -821,8 +835,10 @@ Ìîæíî âîñïîëüçîâàòüñÿ êîìàíäîé yw (îïåðàòîð y è îáúåêò w) äëÿ êîïèðîâàíèÿ îäíîãî ñëîâà. Ïî êîìàíäå yy áóäåò ñêîïèðîâàíà öåëàÿ ñòðîêà, à ïî êîìàíäå p âñòàâëåíà. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 6.5. ÓÑÒÀÍÎÂÊÀ ÏÀÐÀÌÅÒÐΠ+ Óðîê 1.6.5. ÓÑÒÀÍÎÂÊÀ ÏÀÐÀÌÅÒÐΠ** ×òîáû ïðè ïîèñêå èëè çàìåíå íå ó÷èòûâàëñÿ ðåãèñòð ñèìâîëîâ, çàäàéòå ñîîòâåòñòâóþùèå íàñòðîéêè ** @@ -840,40 +856,37 @@ 5. Ïîâòîðíî ââåäèòå êîìàíäó ïîèñêà è ïîñìîòðèòå, ÷òî ïîëó÷èòñÿ /èãíîðèðîâàòü 6. Äëÿ âîçâðàòà ó÷¸òà ðåãèñòðà ïðè ïîèñêå, ââåäèòå êîìàíäó :set noic - Ïðèìå÷àíèå. - Äëÿ îòêëþ÷åíèÿ ïîäñâåòêè ñîâïàäåíèé íàáåðèòå êîìàíäó :nohlsearch + Äëÿ îòêëþ÷åíèÿ ïîäñâåòêè ñîâïàäåíèé, íàáåðèòå êîìàíäó :nohlsearch Ïðèìå÷àíèå. Åñëè òðåáóåòñÿ íå ó÷èòûâàòü ðåãèñòð ñèìâîëîâ òîëüêî åäèíîðàçîâî, èñïîëüçóéòå êëþ÷ \c â êîìàíäå ïîèñêà, íàïðèìåð, /èãíîðèðîâàòü\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 6 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.6 1. Ïî êîìàíäå o áóäåò ñîçäàíà ïóñòàÿ ñòðîêà íèæå ñòðîêè ñ êàðåòêîé è ðåäàêòîð áóäåò ïåðåêëþ÷åí â ðåæèì âñòàâêè Ïî êîìàíäå O áóäåò ñîçäàíà ïóñòàÿ ñòðîêà âûøå ñòðîêè ñ êàðåòêîé è ðåäàêòîð áóäåò ïåðåêëþ÷åí â ðåæèì âñòàâêè - 2. Ïî êîìàíäå a âûïîëíÿåòñÿ âñòàâêè òåêñòà ÏÎÑËÅ ïîçèöèè êàðåòêè. Ïî êîìàíäå A âûïîëíÿåòñÿ âñòàâêè òåêñòà â êîíöå ñòðîêè. 3. Ïî êîìàíäå e âûïîëíÿåòñÿ óñòàíîâêà êàðåòêè â êîíöå ñëîâà. - 4. Îïåðàòîð y èñïîëüçóåòñÿ äëÿ êîïèðîâàíèÿ òåêñòà, à ïî êîìàíäå p ïðîèñõîäèò âñòàâêà ñêîïèðîâàííîãî òåêñòà. 5. Ïðè íàæàòèè êëàâèø SHIFT-R âûïîëíÿåòñÿ ïåðåêëþ÷åíèå â ðåæèì çàìåíû, à îòêëþ÷åíèå - íàæàòèåì êëàâèøè . - 6. Íàáåðèòå ":set xxx" äëÿ óñòàíîâêè ïàðàìåòðà 'xxx'. + 6. Íàáåðèòå :set xxx äëÿ óñòàíîâêè ïàðàìåòðà 'xxx'. Âîò íåêîòîðûå ïàðàìåòðû (ìîæíî óêàçûâàòü ïîëíûå èëè ñîêðàù¸ííûå íàèìåíîâàíèÿ): 'ic' 'ignorecase' èãíîðèðîâàíèå ðåãèñòðà ñèìâîëîâ ïðè ïîèñêå 'is' 'incsearch' îòîáðàæåíèå ÷àñòè÷íûõ ñîâïàäåíèé ïðè ïîèñêå 'hls' 'hlsearch' ïîäñâåòêà âñåõ ñîâïàäåíèé ïðè ïîèñêå - 7. Äëÿ îòêëþ÷åíèÿ ïàðàìåòðà äîáàâüòå ïðèñòàâêó "no" ê åãî íàçâàíèþ :set noic + 7. Äëÿ ñáðîñà ïàðàìåòðà, äîáàâüòå ïðèñòàâêó "no" ê åãî íàçâàíèþ :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 7.1. ÂÑÒÐÎÅÍÍÀß ÑÏÐÀÂÎ×ÍÀß ÑÈÑÒÅÌÀ + ÓÐÎÊ 1.7.1. ÂÑÒÐÎÅÍÍÀß ÑÏÐÀÂÎ×ÍÀß ÑÈÑÒÅÌÀ ** Èñïîëüçóéòå âñòðîåííóþ ñïðàâî÷íóþ ñèñòåìó ** @@ -897,7 +910,7 @@ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Óðîê 7.2. ÑÎÇÄÀÍÈÅ ÑÒÀÐÒÎÂÎÃÎ ÊÎÌÀÍÄÍÎÃÎ ÔÀÉËÀ + Óðîê 1.7.2. ÑÎÇÄÀÍÈÅ ÑÒÀÐÒÎÂÎÃÎ ÊÎÌÀÍÄÍÎÃÎ ÔÀÉËÀ ** Âêëþ÷èì âñå âîçìîæíîñòè Vim ** @@ -921,7 +934,7 @@ "vimrc". ×òîáû ïîëó÷èòü ïîäðîáíóþ èíôîðìàöèþ, íàáåðèòå :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÓÐÎÊ 7.3. ÏÎÄÑÒÀÍÎÂÊÀ ÊÎÌÀÍÄ + ÓÐÎÊ 1.7.3. ÏÎÄÑÒÀÍÎÂÊÀ ÊÎÌÀÍÄ ** Ïîäñòàíîâêà â êîìàíäíîé ñòðîêå âûïîëíÿåòñÿ íàæàòèåì êëàâèø CTRL-D è ** @@ -933,7 +946,7 @@ 4. Íàæìèòå êëàâèøè CTRL-D , è áóäåò ïîêàçàí ïåðå÷åíü êîìàíä ðåäàêòîðà Vim íà÷èíàþùèõñÿ ñ áóêâû "e". 5. Íàæìèòå êëàâèøè d , è áóäåò ïîäñòàâëåíî ïîëíîå íàçâàíèå êîìàíäû - ":edit". + "edit". 6. Òåïåðü íàïå÷àòàéòå ïðîáåë è íà÷àëî íàèìåíîâàíèÿ ñóùåñòâóþùåãî ôàéëà :edit TE 7. Íàæìèòå êëàâèøó è áóäåò ïîäñòàâëåíî íàèìåíîâàíèå ôàéëà, åñëè îíî @@ -943,8 +956,9 @@ Ïîäñòàíîâêà ðàáîòàåò äëÿ ìíîæåñòâà êîìàíä. Ïðîñòî ïîïðîáóéòå íàæàòü êëàâèøè CTRL-D è äëÿ ëþáîé èç êîìàíä ðåäàêòîðà. Ýòî îñîáåííî ïîëåçíî äëÿ êîìàíäû :help . + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ÐÅÇÞÌÅ ÓÐÎÊÀ 7 + ÐÅÇÞÌÅ ÓÐÎÊÀ 1.7 1. ×òîáû îòêðûòü îêíî âñòðîåííîé ñïðàâî÷íîé ñèñòåìû ðåäàêòîðà, íàáåðèòå @@ -966,31 +980,34 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Íà ýòîì ìîæíî çàâåðøèòü ïåðâóþ ÷àñòü çàíÿòèé ïîñâÿù¸ííûõ ðåäàêòîðó Vim. + Äàëåå âû ìîæåòå îçíàêîìèòüñÿ ñî âòîðîé ÷àñòüþ çàíÿòèé. + + Öåëüþ äàííîãî êóðñà áûëî äàòü êðàòêèé îáçîð ðåäàêòîðà Vim, äîñòàòî÷íûé äëÿ + òîãî, ÷òîáû íå âîçíèêàëî ñëîæíîñòåé ïðè åãî èñïîëüçîâàíèè. Ýòî äàëåêî íå + ïîëíûé îáçîð, ïîñêîëüêó â ðåäàêòîðå Vim åñòü åù¸ ìíîãî-ìíîãî êîìàíä. - Íà ýòîì ïîçâîëüòå çàâåðøèòü íàøè çàíÿòèÿ ïîñâÿù¸ííûå ðåäàêòîðó Vim. Óðîêè, - ïðåäñòàâëåííûå â ðàìêàõ äàííîãî êóðñà, äîëæíû áûëè äàòü âàì îáùåå - ïðåäñòàâëåíèå î ðàáîòå ñ ðåäàêòîðîì, äîñòàòî÷íîå äëÿ òîãî, ÷òîáû íå âîçíèêàëî - ñëîæíîñòåé ïðè åãî èñïîëüçîâàíèè. Ýòè çàíÿòèÿ, êàê âû ïîíèìàåòå, íå ïîçâîëÿþò - îïèñàòü âñå äîñòóïíûå êîìàíäû. ×òîáû ðàñøèðèòü ñâîè ïîçíàíèÿ, îçíàêîìüòåñü ñ - ðóêîâîäñòâîì ïîëüçîâàòåëÿ, íàáðàâ êîìàíäó :help user-manual. + ×òîáû ðàñøèðèòü ñâîè ïîçíàíèÿ, îçíàêîìüòåñü ñ ðóêîâîäñòâîì ïîëüçîâàòåëÿ, + íàáðàâ êîìàíäó :help user-manual. Äëÿ äàëüíåéøåãî ÷òåíèÿ ðåêîìåíäóåòñÿ êíèãà "Vim - Vi Improved", àâòîð Steve Oualline, èçäàòåëüñòâî New Riders. - Ýòà êíèãà ïîëíîñòüþ ïîñâÿùåíà ïðîãðàììå Vim è áóäåò îñîáåííî ïîëåçíà íîâè÷êàì. + Îíà ïîëíîñòüþ ïîñâÿùåíà ðåäàêòîðó Vim è áóäåò îñîáåííî ïîëåçíà íîâè÷êàì.  êíèãå èìååòñÿ ìíîæåñòâî ïðèìåðîâ è èëëþñòðàöèé. Ñì. https://iccf-holland.org/click5.html - Ñëåäóþùàÿ êíèãà áîëåå ïî÷òåííîãî âîçðàñòà è ïîñâÿùåíà áîëüøå ðåäàêòîðó Vi, + Åù¸ îäíà êíèãà áîëåå ïî÷òåííîãî âîçðàñòà è ïîñâÿùåíà áîëüøå ðåäàêòîðó Vi, ÷åì ðåäàêòîðó Vim, îäíàêî òàêæå ðåêîìåíäóåòñÿ ê ïðî÷òåíèþ "Learning the Vi Editor", àâòîð Linda Lamb, èçäàòåëüñòâî O'Reilly & Associates Inc. Ýòî õîðîøàÿ êíèãà, ÷òîáû óçíàòü âñ¸, ÷òî òîëüêî ìîæíî ñäåëàòü â ðåäàêòîðå Vi. - Øåñòîå èçäàíèå òàêæå âêëþ÷àåò èíôîðìàöèþ î ðåäàêòîðå Vim. + Øåñòîå èçäàíèå ýòîé êíèãè âêëþ÷àåò èíôîðìàöèþ î ðåäàêòîðå Vim. Ýòè óðîêè áûëè ñîñòàâëåíû Michael C. Pierce è Robert K. Ware èç Colorado School of Mines ñ ó÷¸òîì èäåé, ïðåäëîæåííûõ Charles Smith èç Colorado State - University. E-mail: bware@mines.colorado.edu. + University. E-mail: bware@mines.colorado.edu (òåïåðü íåäîñòóïåí). Óðîêè äîðàáîòàíû Bram Moolenaar äëÿ èñïîëüçîâàíèÿ â ðåäàêòîðå Vim. diff --git a/runtime/tutor/tutor.ru.utf-8 b/runtime/tutor/tutor1.ru.utf-8 similarity index 89% rename from runtime/tutor/tutor.ru.utf-8 rename to runtime/tutor/tutor1.ru.utf-8 index 2976584618..a856560e5b 100644 --- a/runtime/tutor/tutor.ru.utf-8 +++ b/runtime/tutor/tutor1.ru.utf-8 @@ -1,12 +1,13 @@ =============================================================================== - верÑÐ¸Ñ 1.7 = ДОБРО ПОЖÐЛОВÐТЬ ÐРЗÐÐЯТИЯ ПО РЕДÐКТОРУ Vim = +верÑÐ¸Ñ 1.7 = ДОБРО ПОЖÐЛОВÐТЬ ÐРЗÐÐЯТИЯ ПО РЕДÐКТОРУ Vim = +=============================================================================== += ГЛÐВРПЕРВÐЯ = =============================================================================== Программа Vim -- Ñто очень мощный текÑтовый редактор, имеющий множеÑтво команд, и вÑе их проÑто невозможно опиÑать в рамках Ñтого учебника. Данный же учебник призван объÑÑнить те команды, которые позволÑÑ‚ вам Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью иÑпользовать программу Vim в качеÑтве редактора общего назначениÑ. - Ðа оÑвоение материалов Ñтого учебника потребуетÑÑ Ð¾ÐºÐ¾Ð»Ð¾ 30 минут, но Ñто завиÑит от того, Ñколько времени вы поÑвÑтите практичеÑким занÑтиÑм. @@ -18,11 +19,10 @@ Важно помнить, что Ñтот учебник предназначен Ð´Ð»Ñ Ð¿Ñ€Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑкого обучениÑ. Это означает, что вы должны применÑÑ‚ÑŒ команды Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы как Ñледует их изучить. ЕÑли вы проÑто прочитаете Ñтот текÑÑ‚, то не запомните команды! - Теперь, убедившиÑÑŒ, что не включена клавиша , нажмите клавишу j - неÑколько раз, так, чтобы урок 1.1 полноÑтью помеÑтилÑÑ Ð½Ð° Ñкране. + неÑколько раз, так, чтобы урок 1.1.1 полноÑтью помеÑтилÑÑ Ð½Ð° Ñкране. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.1. ПЕРЕМЕЩЕÐИЕ КÐРЕТКИ + Урок 1.1.1. ПЕРЕМЕЩЕÐИЕ КÐРЕТКИ ** Чтобы перемещать каретку в указанных направлениÑÑ…, нажмите клавиши h,j,k,l ** ^ ПодÑказка. @@ -35,7 +35,7 @@ 2. Удерживайте нажатой клавишу "вниз" (j) Ð´Ð»Ñ Ð±ÐµÑпрерывного Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€ÐµÑ‚ÐºÐ¸. Теперь вы знаете, как перейти к Ñледующему уроку. - 3. ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ»Ð°Ð²Ð¸ÑˆÑƒ "вниз", то еÑÑ‚ÑŒ j , перейдите к уроку 1.2. + 3. ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ»Ð°Ð²Ð¸ÑˆÑƒ "вниз", то еÑÑ‚ÑŒ j , перейдите к уроку 1.1.2. Совет. ЕÑли вы не уверены в правильноÑти набранного текÑта, нажмите клавишу , @@ -46,7 +46,7 @@ выполнÑÑ‚ÑŒ перемещение каретки клавишами h j k l намного быÑтрее, Ñтоит только немного потренироватьÑÑ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.2. ЗÐВЕРШЕÐИЕ РÐБОТЫ ПРОГРÐММЫ + Урок 1.1.2. ЗÐВЕРШЕÐИЕ РÐБОТЫ ПРОГРÐММЫ Ð’ÐИМÐÐИЕ! Перед выполнением опиÑанных ниже дейÑтвий, прочтите урок полноÑтью! @@ -68,9 +68,9 @@ По команде :q! будут Ñброшены любые Ñделанные изменениÑ. Через неÑколько уроков вы узнаете, как ÑохранÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² файл. - 5. ПеремеÑтите каретку вниз к уроку 1.3. + 5. ПеремеÑтите каретку вниз к уроку 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.3. РЕДÐКТИРОВÐÐИЕ - УДÐЛЕÐИЕ ТЕКСТР+ Урок 1.1.3. РЕДÐКТИРОВÐÐИЕ - УДÐЛЕÐИЕ ТЕКСТР** Чтобы удалить Ñимвол под курÑором, нажмите клавишу x ** @@ -79,21 +79,22 @@ 2. Чтобы иÑправить ошибки, перемещайте каретку, пока она не окажетÑÑ Ð½Ð°Ð´ удалÑемым Ñимволом. - 3. Ðажмите клавишу x Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñимвола (здеÑÑŒ x означает - латинÑкую Ñтрочную букву x на клавиатуре). + 3. Ðажмите клавишу x Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñимвола. 4. Повторите шаги Ñо 2 по 4, пока Ñтрока не будет иÑправлена. ---> От тттопота копытт пппыль ппо ппполю леттитт. - 5. Теперь, когда Ñтрока иÑправлена, переходите к уроку 1.4. + 5. Теперь, когда Ñтрока иÑправлена, переходите к уроку 1.1.4. Примечание. Ð’ ходе Ñтих занÑтий не пытайтеÑÑŒ Ñразу вÑÑ‘ запоминать, учитеÑÑŒ в процеÑÑе работы. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.4. РЕДÐКТИРОВÐÐИЕ - ВСТÐВКРТЕКСТР+ Урок 1.1.4. РЕДÐКТИРОВÐÐИЕ - ВСТÐВКРТЕКСТР** Чтобы вÑтавить текÑÑ‚, нажмите клавишу i ** @@ -113,18 +114,18 @@ ---> ЧаÑÑ‚ÑŒ текÑта в Ñтой Ñтроке беÑÑледно пропало. - 5. Когда оÑвоите вÑтавку текÑта, переходите к уроку 1.5. + 5. Когда оÑвоите вÑтавку текÑта, переходите к уроку 1.1.5. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.5. РЕДÐКТИРОВÐÐИЕ - ДОБÐВЛЕÐИЕ ТЕКСТР+ Урок 1.1.5. РЕДÐКТИРОВÐÐИЕ - ДОБÐВЛЕÐИЕ ТЕКСТР** Чтобы добавить текÑÑ‚, нажмите клавишу A ** 1. ПеремеÑтите каретку к первой Ñтроке помеченной --->. Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÐ²Ð°Ð¶Ð½Ð¾, на каком Ñимволе раÑположена каретка в Ñтой Ñтроке. - 2. Ðажмите клавишу A (латинÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð¿Ð¸ÑÐ½Ð°Ñ Ð±ÑƒÐºÐ²Ð° A) и наберите текÑÑ‚, - который требуетÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ. + 2. Ðажмите клавишу A и наберите текÑÑ‚, который требуетÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ. 3. ПоÑле Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта нажмите клавишу Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° в режим команд. @@ -136,16 +137,18 @@ ---> ЗдеÑÑŒ также недоÑтаёт Ñ‡Ð°Ñ Ð—Ð´ÐµÑÑŒ также недоÑтаёт чаÑти текÑта. - 5. Когда оÑвоите добавление текÑта, переходите к уроку 1.6. + 5. Когда оÑвоите добавление текÑта, переходите к уроку 1.1.6. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 1.6. РЕДÐКТИРОВÐÐИЕ И ЗÐПИСЬ ФÐЙЛР+ УРОК 1.1.6. РЕДÐКТИРОВÐÐИЕ И ЗÐПИСЬ ФÐЙЛР** Чтобы Ñохранить файл и закрыть редактор, иÑпользуйте команды :wq ** Ð’ÐИМÐÐИЕ! Перед выполнением опиÑанных ниже дейÑтвий, прочтите урок полноÑтью! - 1. Завершите работу редактора Vim, как указано в уроке 1.2 - :q! + 1. Завершите работу редактора Vim, как указано в уроке 1.1.2 - :q! ЕÑли еÑÑ‚ÑŒ доÑтуп к другому терминалу, то там можете Ñделать Ñледующее: 2. Ð’ приглашении командной оболочки введите команду vim tutor @@ -161,8 +164,9 @@ далее к резюме. 6. ПоÑле того как вы прочли и понÑли вышеÑказанное, выполните опиÑанные шаги. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР1 + РЕЗЮМЕ УРОКР1.1 1. Каретку можно перемещать либо клавишами Ñо Ñтрелками, либо клавишами hjkl. h (влево) j (вниз) k (вверх) l (вправо) @@ -184,9 +188,9 @@ По нажатию клавиши будет выполнено переключение редактора в режим команд Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸ÐµÐ¼ обработки любой ранее набранной команды. -Теперь переходите к уроку 2. +Теперь переходите к уроку 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.1. КОМÐÐДЫ УДÐЛЕÐИЯ + Урок 1.2.1. КОМÐÐДЫ УДÐЛЕÐИЯ ** Чтобы удалить Ñлово под кареткой, иÑпользуйте команду dw ** @@ -206,10 +210,11 @@ ---> ÐеÑколько Ñлов рафинад в Ñтом предложении автокран излишни. 5. Повторите шаги 3 и 4, пока не иÑправите вÑе ошибки, и переходите к - уроку 2.2 + уроку 1.2.2 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.2. ЕЩРОДÐРКОМÐÐДРУДÐЛЕÐИЯ + Урок 1.2.2. ЕЩРОДÐРКОМÐÐДРУДÐЛЕÐИЯ ** Чтобы удалить текÑÑ‚ до конца Ñтроки, иÑпользуйте команду d$ ** @@ -226,13 +231,14 @@ ---> Кто-то набрал окончание Ñтой Ñтроки дважды. окончание Ñтой Ñтроки дважды. - 5. Чтобы лучше разобратьÑÑ Ð² том, как Ñто проиÑходит, переходите к уроку 2.3. + 5. Чтобы лучше разобратьÑÑ Ð² том как Ñто проиÑходит, обратитеÑÑŒ к уроку 1.2.3. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.3. ОПЕРÐТОРЫ И ОБЪЕКТЫ + Урок 1.2.3. ОПЕРÐТОРЫ И ОБЪЕКТЫ Многие команды, изменÑющие текÑÑ‚, ÑвлÑÑŽÑ‚ÑÑ ÑоÑтавными и формируютÑÑ Ð¸Ð· оператора и объекта, к которому применÑетÑÑ Ñтот оператор. @@ -256,7 +262,7 @@ Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ аÑÑоциирован объект, то каретка будет перемещена так, как указано в перечне объектов. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.4. ПРИМЕÐЕÐИЕ СЧÐТЧИКРСОВМЕСТÐО С ОБЪЕКТÐМИ + Урок 1.2.4. ПРИМЕÐЕÐИЕ СЧÐТЧИКРСОВМЕСТÐО С ОБЪЕКТÐМИ ** Чтобы перемещение каретка выполнÑлоÑÑŒ необходимое количеÑтво раз, укажите перед объектом требуемое чиÑло ** @@ -276,10 +282,11 @@ ---> ÐžÐ±Ñ‹Ñ‡Ð½Ð°Ñ Ñтрока из Ñлов, чтобы вы на ней потренировалиÑÑŒ перемещать курÑор. - 6. Когда оÑвоите Ñто, переходите к уроку 2.5. + 6. Когда оÑвоите Ñто, переходите к уроку 1.2.5. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.5. ПРИМЕÐЕÐИЕ СЧÐТЧИКРДЛЯ ÐœÐОЖЕСТВЕÐÐОГО УДÐЛЕÐИЯ + Урок 1.2.5. ПРИМЕÐЕÐИЕ СЧÐТЧИКРДЛЯ ÐœÐОЖЕСТВЕÐÐОГО УДÐЛЕÐИЯ ** Чтобы применить оператор неÑколько раз, укажите чиÑло требуемых повторов ** @@ -301,8 +308,9 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.6. ОПЕРÐЦИИ СО СТРОКÐМИ + Урок 1.2.6. ОПЕРÐЦИИ СО СТРОКÐМИ ** Чтобы удалить Ñтроку целиком, иÑпользуйте команду dd ** @@ -326,7 +334,7 @@ Дублирование оператора Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ целой Ñтроки применÑетÑÑ Ð¸ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ операторами, о которых говоритÑÑ Ð´Ð°Ð»ÐµÐµ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.7. КОМÐÐДРОТМЕÐЫ + Урок 1.2.7. КОМÐÐДРОТМЕÐЫ ** Чтобы отменить результат дейÑÑ‚Ð²Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ команды, нажмите клавишу u Чтобы отменить правки Ð´Ð»Ñ Ð²Ñей Ñтроки, нажмите клавишу U ** @@ -335,8 +343,7 @@ 2. Ðажмите клавишу x Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ ошибочного Ñимвола. 3. Теперь нажмите клавишу u Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹ поÑледней выполненной команды. 4. ИÑправьте вÑе ошибки в Ñтроке, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ x . - 5. Теперь нажмите клавишу U (латинÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð¿Ð¸ÑÐ½Ð°Ñ Ð±ÑƒÐºÐ²Ð° U), чтобы вернуть - вÑÑŽ Ñтроку в иÑходное ÑоÑтоÑние. + 5. Теперь нажмите клавишу U , чтобы вернуть вÑÑŽ Ñтроку в иÑходное ÑоÑтоÑние. 6. Ðажмите клавишу u неÑколько раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹ команды U и предыдущих команд. 7. Теперь нажмите клавиши CTRL-R (Ñ‚. е. ÑƒÐ´ÐµÑ€Ð¶Ð¸Ð²Ð°Ñ Ð½Ð°Ð¶Ð°Ñ‚Ð¾Ð¹ клавишу CTRL, @@ -348,9 +355,10 @@ 8. Это очень нужные и полезные команды. -Далее переходите к резюме урока 2. +Далее переходите к резюме урока 1.2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР2 + РЕЗЮМЕ УРОКР1.2 1. Чтобы удалить Ñлово, уÑтановите курÑор в его начало и наберите dw 2. Чтобы удалить текÑÑ‚ от позиции каретки до конца Ñлова, наберите de @@ -372,9 +380,9 @@ 8. Чтобы отменить предшеÑтвующие дейÑтвиÑ, нажмите u (ÑÑ‚Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ð±ÑƒÐºÐ²Ð° u) Чтобы отменить вÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñтроке, нажмите U (пропиÑÐ½Ð°Ñ Ð±ÑƒÐºÐ²Ð° U) - Чтобы вернуть отменённые изменениÑ, нажмите CTRL+R + Чтобы вернуть отменённые изменениÑ, нажмите CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.1. КОМÐÐДРВСТÐВКИ + Урок 1.3.1. КОМÐÐДРВСТÐВКИ ** Чтобы вÑтавить поÑледний удалённый текÑÑ‚, наберите команду p ** @@ -396,8 +404,9 @@ ---> в) Он уважать ÑÐµÐ±Ñ Ð·Ð°Ñтавил ---> а) Мой дÑÐ´Ñ Ñамых чеÑтных правил + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.2. КОМÐÐДРЗÐМЕÐЫ + Урок 1.3.2. КОМÐÐДРЗÐМЕÐЫ ** Чтобы заменить Ñимвол под кареткой, наберите r и заменÑющий Ñимвол ** @@ -414,13 +423,14 @@ ---> Ð’ момент набора Ñтой Ñтроки кое-кто Ñ Ñ‚Ñ€ÑƒÐ´Ð¾Ð¼ попадал по клавишам! - 5. Теперь переходите к уроку 3.3. + 5. Теперь переходите к уроку 1.3.3. Примечание. Помните, что вы должны учитьÑÑ Ð² процеÑÑе работы, а не проÑто зубрить. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.3. ОПЕРÐТОР ИЗМЕÐЕÐИЯ + Урок 1.3.3. ОПЕРÐТОР ИЗМЕÐЕÐИЯ ** Чтобы изменить окончание Ñлова, наберите команду ce ** @@ -442,8 +452,9 @@ Обратите внимание, что по команде ce не только удалÑетÑÑ Ñ‡Ð°ÑÑ‚ÑŒ Ñлова, но и проиÑходит переключение редактора в режим вÑтавки. По команде cc будет выполнÑÑ‚ÑÑ Ñ‚Ð¾ же Ñамое, но Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ð¹ Ñтроки. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 3.4. ЕЩРÐЕСКОЛЬКО СПОСОБОВ РÐБОТЫ С ОПЕРÐТОРОМ ИЗМЕÐЕÐИЯ c + УРОК 1.3.4. ЕЩРÐЕСКОЛЬКО СПОСОБОВ РÐБОТЫ С ОПЕРÐТОРОМ ИЗМЕÐЕÐИЯ c ** К оператору Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ñ‹ те же объекты, что и к оператору ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ** @@ -465,8 +476,9 @@ Примечание. Клавиша может иÑпользоватьÑÑ Ð´Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ наборе текÑта. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР3 + РЕЗЮМЕ УРОКР1.3 1. Чтобы вÑтавить текÑÑ‚, который был только что удалён, наберите команду p . ТекÑÑ‚ будет вÑтавлен ПОСЛЕ позиции каретки (еÑли была удалена Ñтрока, @@ -490,7 +502,7 @@ Теперь переходите к Ñледующему уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 4.1. ИÐФОРМÐЦИЯ О ФÐЙЛЕ И ПОЗИЦИЯ КÐРЕТКИ + УРОК 1.4.1. ИÐФОРМÐЦИЯ О ФÐЙЛЕ И ПОЗИЦИЯ КÐРЕТКИ ** Чтобы получить информацию о файле и позиции каретки, нажмите CTRL-g . Чтобы перемеÑтить каретку к заданной Ñтроке в файле, нажмите SHIFT-G ** @@ -514,7 +526,7 @@ 4. ЕÑли вы запомнили вÑÑ‘ вышеÑказанное, выполните шаги Ñ 1 по 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.2. КОМÐÐДЫ ПОИСКР+ Урок 1.4.2. КОМÐÐДЫ ПОИСКР** Чтобы что-то найти, наберите команду / и затем введите иÑкомую фразу ** @@ -536,8 +548,9 @@ Примечание. ЕÑли будет доÑтигнут конец файла, то поиÑк будет продолжен от начала файла. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.3. ПОИСК ПÐРÐЫХ СКОБОК + Урок 1.4.3. ПОИСК ПÐРÐЫХ СКОБОК ** Чтобы найти парную Ñкобку Ð´Ð»Ñ (, [ или {, наберите команду % ** @@ -559,8 +572,9 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.4. СПОСОБ ЗÐМЕÐЫ СЛОВ + Урок 1.4.4. СПОСОБ ЗÐМЕÐЫ СЛОВ ** Чтобы "что-то" заменить "чем-то", наберите команду :s/что/чем/g ** @@ -582,15 +596,15 @@ Ðаберите :%s/что/чем/g чтобы заменить вÑе Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð¾ вÑём файле. Ðаберите :%s/что/чем/gc чтобы выдавалÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ каждой заменой. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР4 + РЕЗЮМЕ УРОКР1.4 1. По приведённым ниже командам будет выполнено: CTRL-g - вывод информации о файле и текущей позиции каретки в Ñтом файле SHIFT-G - переход на поÑледнюю Ñтроку файла номер и SHIFT-G - переход к Ñтроке Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером gg - переход на первую Ñтроку файла - 2. При вводе Ñимвола / Ñ Ð¿Ð¾Ñледующим набором Ñлова, будет выполнен поиÑк Ñтого Ñлова ВПЕРÐД по текÑту. При вводе Ñимвола ? Ñ Ð¿Ð¾Ñледующим набором Ñлова, будет выполнен поиÑк @@ -600,17 +614,15 @@ противоположном направлении. При нажатии клавиш CTRL-O будет возврат к предыдущему Ñлову, а при нажатии клавиш CTRL-I будет переход к ранее найденному Ñлову. - 3. При нажатии % , когда каретка на одной из Ñкобок ( ), [ ] или { }, будет найдена её Ð¿Ð°Ñ€Ð½Ð°Ñ Ñкобка. - 4. Чтобы заменить первое найденное Ñлово в Ñтроке, наберите :s/что/чем Чтобы заменить вÑе найденные Ñлова в Ñтроке, наберите :s/что/чем/g Чтобы заменить в указанными интервале Ñтрок, наберите :#,#s/что/чем/g Чтобы заменить вÑе найденные Ñлова в файле, наберите :%s/что/чем/g Чтобы запрашивалоÑÑŒ подтверждение, добавьте флаг 'c' :%s/что/чем/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.1. КÐК ВЫЗВÐТЬ ИЗ РЕДÐКТОРРВÐЕШÐЮЮ КОМÐÐДУ + Урок 1.5.1. КÐК ВЫЗВÐТЬ ИЗ РЕДÐКТОРРВÐЕШÐЮЮ КОМÐÐДУ ** Чтобы была выполнена команда командной оболочки, наберите в редакторе :! ** @@ -632,8 +644,9 @@ Важно. ПоÑле ввода команды, начинающейÑÑ Ñ : , должна быть нажата клавиша Ð’ дальнейшем Ñто может не указыватьÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾, но подразумеватьÑÑ. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.2. КÐК ЗÐПИСÐТЬ ФÐЙЛ + Урок 1.5.2. КÐК ЗÐПИСÐТЬ ФÐЙЛ ** Чтобы Ñохранить файл Ñо вÑеми изменениÑми в текÑте, наберите :w ФÐЙЛ ** @@ -655,8 +668,9 @@ 5. Теперь удалите Ñтот файл, набрав в редакторе команду :!del TEST (Ð´Ð»Ñ ÐžÐ¡ Windows) или :!rm TEST (Ð´Ð»Ñ UNIX-подобных ОС) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.3. ВЫБОРОЧÐÐЯ ЗÐПИСЬ СТРОК + Урок 1.5.3. ВЫБОРОЧÐÐЯ ЗÐПИСЬ СТРОК ** Чтобы Ñохранить чаÑÑ‚ÑŒ файла, нажмите клавишу v , выделите Ñтроки и наберите команду :w ФÐЙЛ ** @@ -674,28 +688,27 @@ 5. По Ñтой команде выбранные Ñтроки будут запиÑаны в файл TEST. УбедитеÑÑŒ в наличии Ñтого файла, воÑпользовавшиÑÑŒ командой :!dir или :!ls . Ðе удалÑйте Ñтот файл, он потребуетÑÑ Ð½Ð° Ñледующем уроке. - Примечание. По нажатию клавиши v выполнÑетÑÑ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ в визуальный режим. Чтобы изменить размер выбранной облаÑти, нужно перемеÑтить каретку. К выделенному фрагменту можно применить любой оператор, например, d Ð´Ð»Ñ ÐµÐ³Ð¾ удалениÑ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.4. СЧИТЫВÐÐИЕ И ОБЪЕДИÐЕÐИЕ ФÐЙЛОВ + Урок 1.5.4. СЧИТЫВÐÐИЕ И ОБЪЕДИÐЕÐИЕ ФÐЙЛОВ ** Чтобы вÑтавить ÑодержащийÑÑ Ð² файле текÑÑ‚, наберите :r ФÐЙЛ ** 1. УÑтановите каретку над Ñтой Ñтрокой. Внимание! - ПоÑле Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸Ñанного в пункте 2 вы увидите текÑÑ‚ из урока 5.3. + ПоÑле Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸Ñанного в пункте 2 вы увидите текÑÑ‚ из урока 1.5.3. ПеремеÑтите каретку вниз по текÑту до текущего урока. 2. Теперь Ñчитайте Ñодержимое файла TEST, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ :r TEST , здеÑÑŒ TEST - Ñто наименование файла. 3. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸, что Ñодержимое файла было вÑтавлено, перемеÑтите каретку - вверх по текÑту и удоÑтоверьтеÑÑŒ, что теперь здеÑÑŒ два урока 5.3. - + вверх по текÑту и удоÑтоверьтеÑÑŒ, что теперь здеÑÑŒ два урока 1.5.3. - иÑходный и из файла TEST. Примечание. @@ -703,8 +716,9 @@ будет получен вывод команды ls и вÑтавлен ниже позиции каретки. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР5 + РЕЗЮМЕ УРОКР1.5 1. По команде :!command будет иÑполнена ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð²Ð½ÐµÑˆÐ½ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°. @@ -726,16 +740,16 @@ позиции каретки. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 6.1. КОМÐÐДЫ ДЛЯ СОЗДÐÐИЯ СТРОК + УРОК 1.6.1. КОМÐÐДЫ ДЛЯ СОЗДÐÐИЯ СТРОК ** Чтобы открыть новую Ñтроку Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸ÐµÐ¼ в режим вÑтавки, наберите o ** 1. ПеремеÑтите каретку вниз, к первой Ñтроке помеченной --->. - 2. Ðажмите клавишу o (латинÑÐºÐ°Ñ ÑÑ‚Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ð±ÑƒÐºÐ²Ð° o) Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñоздать - пуÑтую Ñтроку ÐИЖЕ позиции каретки и переключить редактор в - режим вÑтавки. + 2. Ðажмите клавишу o Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñоздать пуÑтую Ñтроку ÐИЖЕ позиции + каретки и переключить редактор в режим вÑтавки. 3. Теперь наберите какой-нибудь текÑÑ‚ и нажмите клавишу Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из режима вÑтавки. @@ -749,40 +763,41 @@ ---> Создайте новую Ñтроку над Ñтой, помеÑтив Ñюда каретку и нажав SHIFT-O. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 6.2. КОМÐÐДРДЛЯ ДОБÐВЛЕÐИЯ ТЕКСТР+ УРОК 1.6.2. КОМÐÐДРДЛЯ ДОБÐВЛЕÐИЯ ТЕКСТР** Чтобы вÑтавить текÑÑ‚ поÑле позиции каретки, наберите a ** 1. ПеремеÑтите каретку вниз, в начало первой Ñтроки помеченной --->. - 2. Ðажмите клавишу e , пока каретка не окажетÑÑ Ð½Ð° поÑледнем Ñимволе Ñлова "Ñтро". - 3. Ðажмите клавишу a (латинÑÐºÐ°Ñ ÑÑ‚Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ð±ÑƒÐºÐ²Ð° a) Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта - ПОСЛЕ Ñимвола, находÑщегоÑÑ Ð¿Ð¾Ð´ кареткой. + 3. Ðажмите клавишу a Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта ПОСЛЕ Ñимвола, находÑщегоÑÑ Ð¿Ð¾Ð´ + кареткой. 4. Допишите Ñлово как в Ñтроке ниже. Ðажмите клавишу Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из режима вÑтавки. - 5. ИÑпользуйте e Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° к Ñледующему незавершённому Ñлову и повторите - дейÑтвиÑ, опиÑанные в пунктах 3 и 4. + 5. ИÑпользуйте клавишу e Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° к Ñледующему незавершённому Ñлову + и повторите дейÑтвиÑ, опиÑанные в пунктах 3 и 4. ----> Эта Ñтро позволит вам попрактиков в добавле текÑта. ----> Эта Ñтрочка позволит вам попрактиковатьÑÑ Ð² добавлении текÑта. +---> Ðа Ñтой Ñтро вы можете попрактиков в добавле текÑта. +---> Ðа Ñтой Ñтроке вы можете попрактиковатьÑÑ Ð² добавлении текÑта. Примечание. По команде a , i и A будет выполнено переключение в один и тот же режим вÑтавки, различие только в том, где вÑтавлÑÑŽÑ‚ÑÑ Ñимволы. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.3. ЕЩРОДИРСПОСОБ ЗÐМЕÐЫ + Урок 1.6.3. ЕЩРОДИРСПОСОБ ЗÐМЕÐЫ ** Чтобы заменить неÑколько Ñимволов в Ñтроке, наберите R ** 1. ПеремеÑтите каретку в начало первого Ñлова xxx в Ñтроке помеченной ---> - 2. Теперь нажмите SHIFT-R (латинÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð¿Ð¸ÑÐ½Ð°Ñ Ð±ÑƒÐºÐ²Ð° R) и введите чиÑло, - указанное ниже во второй Ñтроке, чтобы заменить Ñимволы xxx. + 2. Теперь нажмите SHIFT-R и введите чиÑло, указанное ниже во второй Ñтроке, + чтобы заменить Ñимволы xxx. 3. Ðажмите клавишу Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из режима замены. Заметьте, что оÑтаток Ñтроки не был изменён. @@ -799,15 +814,14 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.4. КОПИРОВÐÐИЕ И ВСТÐВКРТЕКСТР+ Урок 1.6.4. КОПИРОВÐÐИЕ И ВСТÐВКРТЕКСТР** Чтобы копировать, иÑпользуйте оператор y , чтобы вÑтавить - команду p ** - 1. УÑтановите каретку поÑле Ñимволов "а)" в Ñтроке помеченной --->. + 1. УÑтановите каретку поÑле Ñимволов "а)" в Ñтроке, помеченной --->. 2. Переключите редактор в визуальный режим командой v и перемеÑтите каретку вперёд до Ñлова "первый". - 3. Ðажмите клавишу y (латинÑÐºÐ°Ñ ÑÑ‚Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ð±ÑƒÐºÐ²Ð° y) Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - подÑвеченного текÑта. + 3. Ðажмите клавишу y Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ñвеченного текÑта. 4. ПеремеÑтите каретку в конец Ñледующей Ñтроки, набрав команду j$ . 5. Ðажмите клавишу p Ð´Ð»Ñ Ð²Ñтавки текÑта. Затем наберите команду a , напечатайте Ñлово "второй" и нажмите клавишу . @@ -821,8 +835,10 @@ Можно воÑпользоватьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ yw (оператор y и объект w) Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñлова. По команде yy будет Ñкопирована Ñ†ÐµÐ»Ð°Ñ Ñтрока, а по команде p вÑтавлена. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.5. УСТÐÐОВКРПÐРÐМЕТРОВ + Урок 1.6.5. УСТÐÐОВКРПÐРÐМЕТРОВ ** Чтобы при поиÑке или замене не учитывалÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€ Ñимволов, задайте ÑоответÑтвующие наÑтройки ** @@ -840,40 +856,37 @@ 5. Повторно введите команду поиÑка и поÑмотрите, что получитÑÑ /игнорировать 6. Ð”Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° учёта региÑтра при поиÑке, введите команду :set noic - Примечание. - Ð”Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñветки Ñовпадений наберите команду :nohlsearch + Ð”Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñветки Ñовпадений, наберите команду :nohlsearch Примечание. ЕÑли требуетÑÑ Ð½Ðµ учитывать региÑÑ‚Ñ€ Ñимволов только единоразово, иÑпользуйте ключ \c в команде поиÑка, например, /игнорировать\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР6 + РЕЗЮМЕ УРОКР1.6 1. По команде o будет Ñоздана пуÑÑ‚Ð°Ñ Ñтрока ниже Ñтроки Ñ ÐºÐ°Ñ€ÐµÑ‚ÐºÐ¾Ð¹ и редактор будет переключен в режим вÑтавки По команде O будет Ñоздана пуÑÑ‚Ð°Ñ Ñтрока выше Ñтроки Ñ ÐºÐ°Ñ€ÐµÑ‚ÐºÐ¾Ð¹ и редактор будет переключен в режим вÑтавки - 2. По команде a выполнÑетÑÑ Ð²Ñтавки текÑта ПОСЛЕ позиции каретки. По команде A выполнÑетÑÑ Ð²Ñтавки текÑта в конце Ñтроки. 3. По команде e выполнÑетÑÑ ÑƒÑтановка каретки в конце Ñлова. - 4. Оператор y иÑпользуетÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта, а по команде p проиÑходит вÑтавка Ñкопированного текÑта. 5. При нажатии клавиш SHIFT-R выполнÑетÑÑ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ в режим замены, а отключение - нажатием клавиши . - 6. Ðаберите ":set xxx" Ð´Ð»Ñ ÑƒÑтановки параметра 'xxx'. + 6. Ðаберите :set xxx Ð´Ð»Ñ ÑƒÑтановки параметра 'xxx'. Вот некоторые параметры (можно указывать полные или Ñокращённые наименованиÑ): 'ic' 'ignorecase' игнорирование региÑтра Ñимволов при поиÑке 'is' 'incsearch' отображение чаÑтичных Ñовпадений при поиÑке 'hls' 'hlsearch' подÑветка вÑех Ñовпадений при поиÑке - 7. Ð”Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° добавьте приÑтавку "no" к его названию :set noic + 7. Ð”Ð»Ñ ÑброÑа параметра, добавьте приÑтавку "no" к его названию :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 7.1. ВСТРОЕÐÐÐЯ СПРÐВОЧÐÐЯ СИСТЕМР+ УРОК 1.7.1. ВСТРОЕÐÐÐЯ СПРÐВОЧÐÐЯ СИСТЕМР** ИÑпользуйте вÑтроенную Ñправочную ÑиÑтему ** @@ -897,7 +910,7 @@ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.2. СОЗДÐÐИЕ СТÐРТОВОГО КОМÐÐДÐОГО ФÐЙЛР+ Урок 1.7.2. СОЗДÐÐИЕ СТÐРТОВОГО КОМÐÐДÐОГО ФÐЙЛР** Включим вÑе возможноÑти Vim ** @@ -921,7 +934,7 @@ "vimrc". Чтобы получить подробную информацию, наберите :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - УРОК 7.3. ПОДСТÐÐОВКРКОМÐÐД + УРОК 1.7.3. ПОДСТÐÐОВКРКОМÐÐД ** ПодÑтановка в командной Ñтроке выполнÑетÑÑ Ð½Ð°Ð¶Ð°Ñ‚Ð¸ÐµÐ¼ клавиш CTRL-D и ** @@ -933,7 +946,7 @@ 4. Ðажмите клавиши CTRL-D , и будет показан перечень команд редактора Vim начинающихÑÑ Ñ Ð±ÑƒÐºÐ²Ñ‹ "e". 5. Ðажмите клавиши d , и будет подÑтавлено полное название команды - ":edit". + "edit". 6. Теперь напечатайте пробел и начало Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÑущеÑтвующего файла :edit TE 7. Ðажмите клавишу и будет подÑтавлено наименование файла, еÑли оно @@ -943,8 +956,9 @@ ПодÑтановка работает Ð´Ð»Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтва команд. ПроÑто попробуйте нажать клавиши CTRL-D и Ð´Ð»Ñ Ð»ÑŽÐ±Ð¾Ð¹ из команд редактора. Это оÑобенно полезно Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ :help . + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - РЕЗЮМЕ УРОКР7 + РЕЗЮМЕ УРОКР1.7 1. Чтобы открыть окно вÑтроенной Ñправочной ÑиÑтемы редактора, наберите @@ -966,31 +980,34 @@ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Ðа Ñтом можно завершить первую чаÑÑ‚ÑŒ занÑтий поÑвÑщённых редактору Vim. + Далее вы можете ознакомитьÑÑ Ñо второй чаÑтью занÑтий. + + Целью данного курÑа было дать краткий обзор редактора Vim, доÑтаточный Ð´Ð»Ñ + того, чтобы не возникало ÑложноÑтей при его иÑпользовании. Это далеко не + полный обзор, поÑкольку в редакторе Vim еÑÑ‚ÑŒ ещё много-много команд. - Ðа Ñтом позвольте завершить наши занÑÑ‚Ð¸Ñ Ð¿Ð¾ÑвÑщённые редактору Vim. Уроки, - предÑтавленные в рамках данного курÑа, должны были дать вам общее - предÑтавление о работе Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼, доÑтаточное Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы не возникало - ÑложноÑтей при его иÑпользовании. Эти занÑтиÑ, как вы понимаете, не позволÑÑŽÑ‚ - опиÑать вÑе доÑтупные команды. Чтобы раÑширить Ñвои познаниÑ, ознакомьтеÑÑŒ Ñ - руководÑтвом пользователÑ, набрав команду :help user-manual. + Чтобы раÑширить Ñвои познаниÑ, ознакомьтеÑÑŒ Ñ Ñ€ÑƒÐºÐ¾Ð²Ð¾Ð´Ñтвом пользователÑ, + набрав команду :help user-manual. Ð”Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ³Ð¾ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÑ‚ÑÑ ÐºÐ½Ð¸Ð³Ð° "Vim - Vi Improved", автор Steve Oualline, издательÑтво New Riders. - Эта книга полноÑтью поÑвÑщена программе Vim и будет оÑобенно полезна новичкам. + Она полноÑтью поÑвÑщена редактору Vim и будет оÑобенно полезна новичкам. Ð’ книге имеетÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑтво примеров и иллюÑтраций. См. https://iccf-holland.org/click5.html - Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ½Ð¸Ð³Ð° более почтенного возраÑта и поÑвÑщена больше редактору Vi, + Ещё одна книга более почтенного возраÑта и поÑвÑщена больше редактору Vi, чем редактору Vim, однако также рекомендуетÑÑ Ðº прочтению "Learning the Vi Editor", автор Linda Lamb, издательÑтво O'Reilly & Associates Inc. Это Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ ÐºÐ½Ð¸Ð³Ð°, чтобы узнать вÑÑ‘, что только можно Ñделать в редакторе Vi. - ШеÑтое издание также включает информацию о редакторе Vim. + ШеÑтое издание Ñтой книги включает информацию о редакторе Vim. Эти уроки были ÑоÑтавлены Michael C. Pierce и Robert K. Ware из Colorado School of Mines Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ идей, предложенных Charles Smith из Colorado State - University. E-mail: bware@mines.colorado.edu. + University. E-mail: bware@mines.colorado.edu (теперь недоÑтупен). Уроки доработаны Bram Moolenaar Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² редакторе Vim. diff --git a/runtime/tutor/tutor.sk b/runtime/tutor/tutor1.sk similarity index 93% rename from runtime/tutor/tutor.sk rename to runtime/tutor/tutor1.sk index 35b04c804b..a34cd0ac5e 100644 --- a/runtime/tutor/tutor.sk +++ b/runtime/tutor/tutor1.sk @@ -19,11 +19,11 @@ uèenie správne. Ak len èitas text, príkazy zabudne¹! Presvedè sa, ¾e Caps-Lock NIEJE stlaèený a stlaèt klávesu - j niekoµko krát, aby sa kurzor posunul natoµko, ¾e lekcia 1.1 + j niekoµko krát, aby sa kurzor posunul natoµko, ¾e lekcia 1.1.1 celkom zaplní obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.1: POHYB KURZOROM + Lekcia 1.1.1: POHYB KURZOROM ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** @@ -37,7 +37,7 @@ 2. Dr¾ stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ---> Teraz sa u¾ vie¹ pohybova» na nasledujúcu lekciu. - 3. Pou¾itím klávesy pre pohyb dole prejdi na Lekciu 1.2. + 3. Pou¾itím klávesy pre pohyb dole prejdi na Lekciu 1.1.2. Poznámka: Ak si niesi istý tým èo si napísal, stlaè na prechod do normálneho módu. @@ -46,7 +46,7 @@ Pozn schopný pohybova» rýchlej¹ie, keï si zvykne¹ ich pou¾íva». Naozaj! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.2: ZATVÁRANIE VIMU + LEKCIA 1.1.2: ZATVÁRANIE VIMU !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! @@ -65,10 +65,10 @@ Pozn POZNÁMKA: :q! neulo¾í zmeny, ktoré si vykonal. O niekoµko lekcií sa nauèí¹ ako ulo¾i» zmeny do súboru - 5. presuò kurzor dole na lekciu 1.3. + 5. presuò kurzor dole na lekciu 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE + Lekcia 1.1.3: EDITÁCIA TEXTU - MAZANIE ** Stlaèenie klávesy x v normálnom móde zma¾e znak na mieste kurzora. ** @@ -84,14 +84,14 @@ POZN ---> Kraava skooèilla ccezz mesiiac. - 5. Ak je veta správna, prejdi na lekciu 1.4. + 5. Ak je veta správna, prejdi na lekciu 1.1.4. POZNÁMKA: Neskú¹aj si zapamäta» obsah tejto výuky, ale sa uè pou¾ívaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE + Lekcia 1.1.4: EDITÁCIA TEXTU - VKLADANIE ** Stlaèenie klávesy i umo¾òuje vkladanie textu. ** @@ -113,7 +113,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE + Lekcia 1.1.5: EDITÁCIA TEXTU - PRIDÁVANIE ** Stlaèenie klávesy A umo¾òuje pridáva» text. ** @@ -133,18 +133,18 @@ POZN ---> Tu tie¾ chýba nej Tu tie¾ chýba nejaký text. - 5. Keï sa dostatoène nauèí¹ pridáva» text, prejdi na lekciu 1.6. + 5. Keï sa dostatoène nauèí¹ pridáva» text, prejdi na lekciu 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6: EDITÁCIA SÚBORU + Lekcia 1.1.6: EDITÁCIA SÚBORU ** Napísaním :wq sa súbor ulo¾í a zavrie ** !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! -1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! +1. Opusti túto výuku, ako si to urobil v lekcii 1.1.2: :q! 2. Do príkazového riadku napí¹ príkaz: vim tutor 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, @@ -160,7 +160,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZHRNUTIE LEKCIE 1 + ZHRNUTIE LEKCIE 1.1 1. Kurzor sa pohybuje pou¾itím kláves so ¹ípkami alebo klávesmi hjkl. @@ -180,11 +180,11 @@ POZN POZNÁMKA: Stlaèenie »a premiestní do normálneho módu alebo zru¹í nejaký nechcený a èiastoène dokonèený príkaz. -Teraz pokraèuj lekciou 2. +Teraz pokraèuj lekciou 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.1: Mazacie príkazy + Lekcia 1.2.1: Mazacie príkazy ** Napísanie príkazu dw zma¾e znaky do konca slova. ** @@ -204,12 +204,12 @@ POZN ---> Tu je niekoµko slov zábava, ktoré nie patria list do tejto vety. -5. Zopakuj kroky 3 a¾ 4 kým veta nieje správna a prejdi na lekciu 2.2. +5. Zopakuj kroky 3 a¾ 4 kým veta nieje správna a prejdi na lekciu 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV + Lekcia 1.2.2: VIAC MAZACÍCH PRÍKAZOV ** Napísanie príkazu d$ zma¾e znaky do konca riadku ** @@ -225,11 +225,11 @@ POZN ---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. -5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo. +5. Prejdi na lekciu 1.2.3 pre pochopenie toho èo sa stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.3: OPERÁTORY A POHYBY + Lekcia 1.2.3: OPERÁTORY A POHYBY Veµa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. Formát pre príkaz mazania klávesou d je nasledovný: @@ -251,7 +251,7 @@ POZN sa presunie kurzor tak ako je to ¹pecivikované. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.4: Pou¾itie viacnásobného pohybu + Lekcia 1.2.4: Pou¾itie viacnásobného pohybu ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** @@ -268,11 +268,11 @@ POZN ---> Toto je riadok so slovami po kotrých sa mô¾ete pohybova». - 6. Prejdi na lekciu 2.5. + 6. Prejdi na lekciu 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.5: POU®ITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE + Lekcia 1.2.5: POU®ITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** @@ -296,7 +296,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.6: OPERÁCIE S RIADKAMI + Lekcia 1.2.6: OPERÁCIE S RIADKAMI ** Napísanie príkazu dd zma¾e celý riadok. ** @@ -319,7 +319,7 @@ Vzh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.7: PRÍKAZ UNDO + Lekcia 1.2.7: PRÍKAZ UNDO ** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** @@ -336,13 +336,13 @@ Vzh ---> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. - 8. Tieto príkazy sú èasto pou¾ívané. Teraz prejdi na zhrnutie lekcie 2. + 8. Tieto príkazy sú èasto pou¾ívané. Teraz prejdi na zhrnutie lekcie 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 2 ZHRNUTIE + LEKCIA 1.2 ZHRNUTIE 1. Pre zmazanie znakov od kurzora do konca slova napí¹: dw @@ -369,7 +369,7 @@ Vzh Pre vrátenie vrátených úprav napí¹: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.1: PRÍKAZ VLO®I« + Lekcia 1.3.1: PRÍKAZ VLO®I« ** Napísanie príkazu p vlo¾í psledný výmaz za kurzor. ** @@ -392,7 +392,7 @@ Vzh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.2: PRÍKAZ NAHRADENIA + Lekcia 1.3.2: PRÍKAZ NAHRADENIA ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** @@ -408,14 +408,14 @@ Vzh ---> Kaï bol tento riasok píaaný, niekro stla¹il nesprábne klávesy! ---> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! - 5. Teraz prejdi na lekciu 3.2. + 5. Teraz prejdi na lekciu 1.3.2. POZNÁMKA: Pamätaj si, ¾e nauèi» sa mô¾e¹ len pou¾ívanim, nie pamätaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.3. PRÍKAZ ÚPRAVY + Lekcia 1.3.3: PRÍKAZ ÚPRAVY ** Ak chce¹ zmeni» èas» slova do konca slova, napí¹ ce . ** @@ -438,7 +438,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.4: VIAC ZMIEN POU®ITÍM c + Lekcia 1.3.4: VIAC ZMIEN POU®ITÍM c ** Príkaz pre úpravy sa pou¾íva s rovnakými pohybmi ako pre mazanie ** @@ -463,7 +463,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 3 ZHRNUTIE + LEKCIA 1.3 ZHRNUTIE 1. Na vlo¾enie textu, ktorý u¾ bol zmazaný, napí¹ p . To vlo¾í zmazaný @@ -486,7 +486,7 @@ Teraz prejdi na nalseduj ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.1: POZÍCIA A STATUS SÚBORU + Lekcia 1.4.1: POZÍCIA A STATUS SÚBORU ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. @@ -509,7 +509,7 @@ Teraz prejdi na nalseduj ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.2: PRÍKAZ VYH¥ADÁVANIA + Lekcia 1.4.2: PRÍKAZ VYH¥ADÁVANIA ** Napí¹ / nasledované re»azcom pre vyhµadanie príslu¹ného re»azca. ** @@ -536,7 +536,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.3: VYH¥ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK + Lekcia 1.4.3: VYH¥ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK ** Napí¹ % pre vyhµadanie príslu¹ného znaku ),], alebo } . ** @@ -561,7 +561,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.4: PRÍKAZ NAHRADENIA + Lekcia 1.4.4: PRÍKAZ NAHRADENIA ** Napí¹ :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** @@ -586,7 +586,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 4 ZHRNUTIE + LEKCIA 1.4 ZHRNUTIE 1. CTRL-g vypí¹e tvoju pozíciu v súbore a status súboru. @@ -611,7 +611,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.1 AKO SPUSTI« VONKAJ©Í PRÍKAZ + Lekcia 1.5.1: AKO SPUSTI« VONKAJ©Í PRÍKAZ ** Napí¹ príkaz :! nasledovaný vonkaj¹ím príkazom pre spustenie príkazu ** @@ -633,7 +633,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV + Lekcia 1.5.2: VIAC O UKLADANÍ SÚBOROV ** Pre ulo¾enie zmien v súbore, napí¹ :w FILENAME. ** @@ -656,7 +656,7 @@ Pozn ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.3 VÝBER TEXTU PRE ULO®ENIE + Lekcia 1.5.3: VÝBER TEXTU PRE ULO®ENIE ** Pre ulo¾enie èasti súboru, napí¹ v pohyb :w FILENAME ** @@ -681,14 +681,14 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV + Lekcia 1.5.4: VÝBER A ZLUÈOVANIE SÚBOROV ** Pre vlo¾enie obsahu súboru, napí¹ :r FILENAME ** 1. Premiestni kurzor nad tento riadok. -POZNÁMKA: Po vykonaní kroku 2 uvidí¹ text z lekcie 5.3. Potom sa presuò +POZNÁMKA: Po vykonaní kroku 2 uvidí¹ text z lekcie 1.5.3. Potom sa presuò dole, aby si videl túto lekciu. 3. Teraz vlo¾ súbor TEST pou¾itím príkazu :r TEST kde TEST je názov @@ -699,7 +699,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 5 ZHRNUTIE + LEKCIA 1.5 ZHRNUTIE 1. :!príkaz spustí vonkaj¹í príkaz. @@ -722,7 +722,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.1: PRÍKAZ OTVORI« + Lekcia 1.6.1: PRÍKAZ OTVORI« ** Napí¹ o pre vlo¾enie riadku pod kurzor a prepnutie do vkladacieho módu ** @@ -746,7 +746,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.2: PRÍKAZ PRIDA« + Lekcia 1.6.2: PRÍKAZ PRIDA« ** Napí¹ a pre vlo¾enie textu ZA kurzor. ** @@ -770,7 +770,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA + Lekcia 1.6.3: INÝ SPOSOB NAHRADZOVANIA ** Napí¹ veµké R pre nahradenie viac ako jedného znaku. ** @@ -795,7 +795,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.4: Copy Paste textu + Lekcia 1.6.4: Copy Paste textu ** pou¾í operátor y pre copy textku a p pre jeho paste ** @@ -820,7 +820,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.5: NASTAVENIE MO®NOSTÍ + Lekcia 1.6.5: NASTAVENIE MO®NOSTÍ ** Nastav mo¾nosti, tak¾e vyhµadávanie alebo nahradzovanie ignoruje @@ -851,7 +851,7 @@ POZN pou¾itie vyhµadávacieho príkazu, pou¾i \c: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 6 ZHRNUTIE + LEKCIA 1.6 ZHRNUTIE 1. Napí¹ o pre otvorenie riadku pod kurzorom a ¹tart vkladacieho módu. @@ -882,7 +882,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.1: ZÍSKANIE NÁPOVEDY + LEKCIA 1.7.1: ZÍSKANIE NÁPOVEDY ** Pou¾ívaj on-line systém nápovedy ** @@ -907,7 +907,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.2: VYTVORENIE ©TARTOVACIEHO SKRIPTU + LEKCIA 1.7.2: VYTVORENIE ©TARTOVACIEHO SKRIPTU ** Zapni funkcie editora Vim ** @@ -931,7 +931,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.3 DOKONÈENIE + LEKCIA 1.7.3: DOKONÈENIE ** Dokonèi príkaz na príkazovom riadku pou¾itím CTRL-D a ** @@ -956,7 +956,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7 ZHRNUTIE + LEKCIA 1.7 ZHRNUTIE 1. Napí¹ :help alebo stlaè alebo pre otvorenie okna nápovedy. diff --git a/runtime/tutor/tutor1.sk.cp1250 b/runtime/tutor/tutor1.sk.cp1250 new file mode 100644 index 0000000000..69dabd0adb --- /dev/null +++ b/runtime/tutor/tutor1.sk.cp1250 @@ -0,0 +1,1008 @@ +=============================================================================== += V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = +=============================================================================== + + Vim je velmi výkonný editor, ktorý má príliž vela príkazov na to aby + mohli byt všetky popísané vo výuke akou je táto. Táto výuka + popisuje dostatocné množstvo príkazov nato aby bolo možné používat + Vim ako viacúcelový editor. + + Približný cas potrebný na prebratie tejto výuky je 25-30 minút, + závisí na tom, kolko je stráveného casu s preskúšavaním. + + UPOZORNENIE: + Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby + sa mohlo precvicovat na nom (pri štarte "vimtutor" je toto kópia). + + Je dôležité zapamätat si, že táto výuka je vytvorená pre výuku + používaním. To znamená, že je potrebné si príkazy vyskúšat, aby bolo + ucenie správne. Ak len citas text, príkazy zabudneš! + + Presvedc sa, že Caps-Lock NIEJE stlacený a stlact klávesu + j niekolko krát, aby sa kurzor posunul natolko, že lekcia 1.1.1 + celkom zaplní obrazovku. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1.1: POHYB KURZOROM + + + ** Pre pohyb kurzorum stlac klávesy h,j,k,l ako je znázornené. ** + ^ + k Funkcia: Klávesa h je nalavo a vykoná pohyb dolava. + < h l > Klávesa l je napravo a vykoná pohyb doprava. + j Klávesa j vyzerá ako šípka dole + v + 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. + + 2. Drž stlacenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. +---> Teraz sa už vieš pohybovat na nasledujúcu lekciu. + + 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.1.2. + +Poznámka: Ak si niesi istý tým co si napísal, stlac + na prechod do normálneho módu. + +Poznámka: Kurzorové klávesy sú tiež funkcné. Ale používaním hjkl sa budeš + schopný pohybovat rýchlejšie, ked si zvykneš ich používat. Naozaj! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.1.2: ZATVÁRANIE VIMU + + + !! POZNÁMKA: Pred vykonaním týchto krokov si precítaj celú túto lekciu !! + + 1. Stlac klávesu (aby si sa ucite nachádzal v normálnom móde) + + 2. Napíš: :q! . + Tým ukoncíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. + + 3. Ked sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš + spet do tejto výuky. To môže byt: vimtutor + + 4. Ak si si tieto kroky spolahlivo zapamätal, vykonaj kroky 1 až 3, pre + ukoncenie a znovu spustenie editora. + +POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O niekolko lekcií + sa naucíš ako uložit zmeny do súboru + + 5. presun kurzor dole na lekciu 1.1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1.3: EDITÁCIA TEXTU - MAZANIE + + +** Stlacenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** + + 1. Presun kurzor nižšie na riadok oznacený znackou --->. + + 2. Aby si mohol odstránit chyby, pohybuj kurzorom kým neprejde na znak, + ktorý chceš zmazat. + + 3. Stlac klávesu x aby sa zmazal nechcený znak. + + 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. + +---> Kraava skoocilla ccezz mesiiac. + + 5. Ak je veta správna, prejdi na lekciu 1.1.4. + +POZNÁMKA: Neskúšaj si zapamätat obsah tejto výuky, ale sa uc používaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1.4: EDITÁCIA TEXTU - VKLADANIE + + + ** Stlacenie klávesy i umožnuje vkladanie textu. ** + + 1. Presun kurzor nižšie na prvý riadok za znacku --->. + + 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, + presun kurzor na prvý znak za misto, kde má byt text vložený. + + 3. Stlac klávesu i a napíš potrebný text. + + 4. Po opravení každej chyby, stlac pre návrat do normálneho módu. + Zopakuj kroky 2 až 4 kým nieje veta správna. + +---> Tu je text chýbajúci tejto. +---> Tu je nejaký text chýbajúci od tejto ciary. + + 5. Ked sa dostatocne naucíš vkladat text, prejdi na nasledujúce zhrnutie. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1.5: EDITÁCIA TEXTU - PRIDÁVANIE + + + ** Stlacenie klávesy A umožnuje pridávat text. ** + + 1. Presun kurozr nižšie na prvý riadok za znackou --->. + Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. + + 2. Stlac klávesu A a napíš potrebný text. + + 3. Po pridaní textu stlac klávesu pre návrat do Normálneho módu. + + 4. Presun kurozr na druhý riadok oznacený ---> a zopakuj + kroky 2 a 3 kým nieje veta správna. + +---> Tu je nejaký text chýbajúci o + Tu je nejaký text chýbajúci od tialto. +---> Tu tiež chýba nej + Tu tiež chýba nejaký text. + + 5. Ked sa dostatocne naucíš pridávat text, prejdi na lekciu 1.1.6. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1.6: EDITÁCIA SÚBORU + + + ** Napísaním :wq sa súbor uloží a zavrie ** + +!! POZNÁMKA: Pred vykonaním týchto krokov si precítaj celú lekciu!! + +1. Opusti túto výuku, ako si to urobil v lekcii 1.1.2: :q! + +2. Do príkazového riadku napíš príkaz: vim tutor + 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, + ktorý chceš editovat. Použi taký súbor, ktorý môžeš menit. + +3. Vlož a zmaž text tak, ako si sa naucil v predošlých lekciach. + +4. Ulož súbor so zmenami a opusti Vim príkazom: :wq + +5. Reštartuj vimtutor a presun sa dole na nasledujúce zhrnutie. + +6. Urob tak po precítaní predošlých krokov a porozumeniu im. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZHRNUTIE LEKCIE 1.1 + + + 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. + h (do lava) j (dole) k (hore) l (doprava) + + 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME + + 3. Na ukoncenie Vimu napíš: :q! pre zrušenie všetkých zmien + alebo napíš: :wq pre uloženie zmien. + + 4. Na zmazanie znaku na mieste kurzora napíš: x + + 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: + i napíš vkladaný text vkladanie pred kurzor + A napíš pridávaný text vkladanie za riadok + +POZNÁMKA: Stlacenie ta premiestní do normálneho módu alebo zruší + nejaký nechcený a ciastocne dokoncený príkaz. + +Teraz pokracuj lekciou 1.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.1: Mazacie príkazy + + + ** Napísanie príkazu dw zmaže znaky do konca slova. ** + +1. Stlac aby si bol bezpecne v normálnom móde. + +2. Presun kurzor nižšie na riadok oznacený znackou --->. + +3. Presun kurzor na zaciatok slova, ktoré je potrebné zmazat. + +4. Napíš dw aby slovo zmizlo. + +POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky ked ho + napíšeš. Vim na teba pocká, aby si mohol napísat + písmeno w. Ak vidíš nieco iné ako d , tak si napísal + nesprávny znak; stlac a zacni znova. + +---> Tu je niekolko slov zábava, ktoré nie patria list do tejto vety. + +5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 1.2.2. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.2: VIAC MAZACÍCH PRÍKAZOV + + + ** Napísanie príkazu d$ zmaže znaky do konca riadku ** + +1. Stlac aby si bol bezpecne v normálnom móde. + +2. Presun kurzor nižšie na riadok oznacený znackou --->. + +3. Presun kurzor na koniec správnej vety (ZA prvú bodku). + +4. Napíš d$ aby sa zmazali znaky do konca riadku. + +---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. + + +5. Prejdi na lekciu 1.2.3 pre pochopenie toho co sa stalo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.3: OPERÁTORY A POHYBY + + Vela príkazov, ktoré menia text sú odvodené od operátorov a pohybov. + Formát pre príkaz mazania klávesou d je nasledovný: + + d pohyb + + kde: + d - je mazací operátor + pohyb - je to co operátor vykonáva (vypísané nižšie) + + Krátky list pohybov: + w - do zaciatku dalšieho slova, okrem jeho prvého písmena. + e - do konca terajšieho slova, vrátane posledného znaku. + $ - do konca riadku, vrátane posledného znaku + + Takže napísaním de sa zmaže všetko od kurzora do konca slova. + +POZNÁMKA: Stlacením iba pohybu v normálnom móde bez operátora + sa presunie kurzor tak ako je to špecivikované. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.4: Použitie viacnásobného pohybu + + + ** Napísaním císla pred pohyb ho zopakuje zadný pocet krát ** + + 1. Presun kurozr nižšie na zaciatok riadku oznaceného --->. + + 2. Napíš 2w a kurozr sa presunie o dve slová vpred. + + 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. + + 4. Napíš 0 (nula) a kurozr sa presunie na zaciatok riadku. + + 5. Zopakuj kroky 2 a 3 s rôznymi císlami. + +---> Toto je riadok so slovami po kotrých sa môžete pohybovat. + + 6. Prejdi na lekciu 1.2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE + + + ** Napísanie císla spolu s operátorom ho zopakuje zadaný pocet krát ** + + V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož pocet + pred pohyb pre docielenie hromadného mazania: + d císlo pohyb + + 1. Presun kurzor na prvé slovo písané VELKÝMI PÍSMENAMI + v riadku oznacenom --->. + + 2. Napíš 2dw a zmažeš dve slová písané VELKÝMI PÍSMENAMI + + 3. Zopakuj kroky 1 a 2 s použitím rôzneho císla tak aby si zmazal slová + písané velkými písmenami jedným príkazom. + +---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. + +POZNÁMKA: Císlo medzi operátorom d a pohybom funguje podobne ako pri + použití s pohybom bez operátora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.6: OPERÁCIE S RIADKAMI + + + ** Napísanie príkazu dd zmaže celý riadok. ** + +Vzhladom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, +že bude jednoduchšie mazat celý riadok napísaním dvoch písmen d. + +1. Presun kurzor na druhý riadok v texte na spodu. +2. Napíš dd aby si zmazal riadok. +3. Prejdi na štvrtý riadok. +4. Napíš 2dd aby si zmazal dva riadky. + + 1) Ruže sú cervené, + 2) Blato je zábavné, + 3) Fialky sú modré, + 4) Mám auto, + 5) Hodinky ukazujú cas, + 6) Cukor je sladký, + 7) A to si ty. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.2.7: PRÍKAZ UNDO + + +** Stlac u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** + +1. Presun kurzor nižšie na riadok oznacený znackou ---> a premiestni ho na + prvú chybu. +2. Napíš x pre zmazanie prvého nechceného riadku. +3. Teraz napíš u cím vrátíš spät posledne vykonaný príkaz. +4. Teraz oprav všetky chyby na riadku použitím príkazu x . +5. Teraz napíš velké U cím vrátíš riadok do pôvodného stavu. +6. Teraz napíš u niekolko krát, cím vrátíš spät príkaz U. +7. Teraz napíš CTRL-R (drž klávesu CTRL stlacenú kým stlácaš R) niekolko + krát, cím vrátíš spät predtým vrátené príkazy (undo z undo). + +---> Opprav chybby nna toomto riadku a zmeen ich pommocou undo. + + 8. Tieto príkazy sú casto používané. Teraz prejdi na zhrnutie lekcie 1.2. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.2 ZHRNUTIE + + + 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw + + 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ + + 3. Pre zmazanie celého riadku napíš: dd + + 4. Pre zopakovanie pohybu, napíš pred neho císlo: 2w + + 5. Formát pre píkaz: + + operátor [císlo] pohyb + kde: + operátor - co treba robit, napríklad d pre zmazanie + [císlo] - je volitelný pocet pre opakovanie pohybu + pohyb - pohyb po texte vzhladom na operátor, napríklad w (slovo), + $ (do konca riadku), atd. + + 6. Pre pohyb na zaciatok riadku použi nulu: 0 + + 7. Pre vrátenie spät predošlej operácie napíš: u (malé u) + Pre vrátenie všetkých úprav na riadku napíš: U (velké U) + Pre vrátenie vrátených úprav napíš: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3.1: PRÍKAZ VLOŽIT + + + ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** + + 1. Presun kurzor nižšie na prvý riadok textu. + + 2. Napíš dd cím zmažeš riadok a uložíš ho do buffera editora Vim. + + 3. Presun kurzor vyššie tam, kam zmazaný riadok patrí. + + 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. + + 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. + +---> d) Tiež sa dokážeš vzdelávat? +---> b) Fialky sú modré, +---> c) Inteligencia sa vzdeláva, +---> a) Ruže sú cervené, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3.2: PRÍKAZ NAHRADENIA + + + ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** + + 1. Presun kurzor nižšie na prví riadok textu oznaceného znackou --->. + + 2. Presun kurzor na zaciatok prvej chyby. + + 3. napíš r a potom znak, ktorý tam má byt. + + 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. + +---> Kad bol tento riasok píaaný, niekro stlašil nesprábne klávesy! +---> Ked bol tento riadok písaný, niekto stlacil nesprávne klávesy! + + 5. Teraz prejdi na lekciu 1.3.2. + +POZNÁMKA: Pamätaj si, že naucit sa môžeš len používanim, nie pamätaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3.3: PRÍKAZ ÚPRAVY + + + ** Ak chceš zmenit cast slova do konca slova, napíš ce . ** + + 1. Presun kurzor nižšie na prvý riadok oznacený znackou --->. + + 2. Umiestni kurzor na písmeno o v slove rosfpl. + + 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) + + 4. Stlac a prejdi na další znak, ktorý treba zmenit. + + 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. + +---> Tento rosfpl má niekolko skic, ktoré je pirewvbí zmenit piytucán príkazu. +---> Tento riadok má niekolko slov, ktoré je potrebné zmenit použitím príkazu. + +Poznámka, že ce zmaže slovo a nastaví vkladací mód. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3.4: VIAC ZMIEN POUŽITÍM c + + + ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** + + 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: + + c [císlo] pohyb + + 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). + + 3. Presun kurzor nižšie na prvý riadok oznacený znackou --->. + + 4. Presun kurzor na prvú chybu. + + 5. napíš c$ aby si mohol upravit zvyšok riadku podla druhého + a stlac . + +---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. +---> Koniec tohto riadku potrebuje opravit použitím príkazu c$ . + +POZNÁMKA: Môžeš použit klávesu backspace na úpravu zmien pocas písania. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.3 ZHRNUTIE + + + 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný + text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). + + 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý + nahradí pôvodný znak. + + 3. Príkaz na upravenie umožnuje zmenit od kurzora až po miesto, ktoré + urcuje pohyb. napr. Napíš ce cím zmníš text od pozície + kurzora do konca slova, c$ zmení text do konca riadku. + + 4. Formát pre nahradenie je: + + c [císlo] pohyb + + +Teraz prejdi na nalsedujúcu lekciu. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4.1: POZÍCIA A STATUS SÚBORU + + + ** Stlac CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. + Napíš G pre presun na riadok v súbore. ** + + Poznámka: Precítaj si celú túto lekciu skôr ako zacneš vykonávat kroky!! + + 1. Drž stlacenú klávesu Ctrl a stlac g . Toto nazývame CTRL-G. + Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou + v súbore. Zapamätajsi si císlo riadku pre použitie v kroku 3. + + 2. Stlac G cím sa dostaneš na spodok súboru. + Napíš gg cím sa dostaneš na zaciatok súboru. + + 3. Napíš císlo riadku na ktorom si sa nachádzal a stlac G. To ta + vráti na riadok, na ktorom si prvý krát stlacil CTRL-G. + + 4. Ak sa cítíš schopný vykonat teto kroky, vykonaj kroky 1 až 3. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4.2: PRÍKAZ VYHLADÁVANIA + + + ** Napíš / nasledované retazcom pre vyhladanie príslušného retazca. ** + + 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu + s kurzorom zobrazí v dolnej casti obrazovky s : príkazom. + + 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyhladat. + + 3. Pre vyhladanie dalšieho výskytu rovnakého retazca, stlac jednoducho n. + Pre vyhladanie dalšieho výskytu rovnakého retazca opacným smerom, + N. + + 4. Ak chceš vyhladat retazec v spätnom smere, použí príkaz ? miesto + príkazu /. + + 5. Pre návrat na miesto z ktorého si prišiel stlac CTRL-O (drž stlacenú + klávesu Ctrl pocas stlacenia klávesy o). Zopakuj pre další návrat + spät. CTRL-I ide vpred. + +POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. +POZNÁMKA: Ked vyhladávanie dosiahne koniec tohto súboru, bude pokracovat na + zaciatku, dokial nieje resetované nastavenie 'wrapscan' . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4.3: VYHLADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK + + + ** Napíš % pre vyhladanie príslušného znaku ),], alebo } . ** + + 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie + oznaceného znackou --->. + + 2. Teraz napíš znak % . + + 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. + + 4. Napíš % pre presun kurzoru spät na otvárajúcu zátvorku. + + 5. Presun kurzor na iný zo znakov (,),[,],{ alebo } a všimni si + co % vykonáva. + +---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) + +Poznámka: Toto je velmi výhodné použít pri ladení programu s chýbajúcimi + uzatvárajúcimi zátvorkami! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4.4: PRÍKAZ NAHRADENIA + + + ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** + + 1. Presun kurzor nižšie na riadok oznacený znackou --->. + + 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý + výskyt "thee" v riadku. + + 3. Teraz napíš :s/thee/the/g co znamená celkové nahradenie v riadku. + Toto nahradí všetky výskyty v riadku. + +---> Thee best time to see thee flowers in thee spring. + + 4. Pre zmenu všetkých výskytov daného retazca medzi dvomi ridakami, + napíš :#,#s/starý/nový/g kde #,# sú císla dvoch riadkov, v rozsahu + ktorých sa nahradenie vykoná. + napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku + napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, + s otázkou ci nahradit alebo nie + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.4 ZHRNUTIE + + + 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. + G ta premiestni na koniec riadku. + císlo G ta premiestni na riadok s císlom. + gg ta presunie na prvý riadok + + 2. Napísanie / nasledované retazcom vyhladá retazec smerom DOPREDU. + Napísanie ? nasledované retazcom vyhlada retazec smerom DOZADU. + Napísanie n po vyhladávaní, vyhladá nasledujúci výskyt retazca + v rovnakom smere, pricom N vyhladá v opacnom smere. + CTRL-O ta vráti spät na staršiu pozíciu, CTRL-I na novšiu pozíciu. + + 3. Napísanie % ked kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu + párnu zátvorku. + + 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový + Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g + Pre nahradenie retazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g + Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g + Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5.1: AKO SPUSTIT VONKAJŠÍ PRÍKAZ + + + ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** + + 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. + To umožní napísat príkaz. + + 2. Teraz napíš ! (výkricník). To umožní spustit hociaký vonkajší príkaz + z príkazového riadku. + + 3. Ako príklad napíš ls za ! a stlac . Tento príkaz + zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. + Alebo použi :!dir ak ls nefunguje. + +Poznámka: Takto je možné spustit hociaký vonkajší príkaz s argumentami. +Poznámka: Všetky príkazy : musia byt dokoncené stlacením + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5.2: VIAC O UKLADANÍ SÚBOROV + + + ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** + + 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. + Už vieš, že musíš za týmto stlacit . + + 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. + + 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) + + 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. + Pre overenie napíš :!dir , cím zobrazíš obsah adresára. + +Poznámka: že ak ukoncíš prácu s editorom Vim a znovu ho spustíš príkazom + vim TEST, súbor bude kópia výuky, ked si ho uložil. + + 5. Teraz odstrán súbor napísaním (MS-DOS): :!del TEST + alebo (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5.3: VÝBER TEXTU PRE ULOŽENIE + + + ** Pre uloženie casti súboru, napíš v pohyb :w FILENAME ** + + 1. Presun kurozr na tento riadok. + + 2. Stlac v a presun kurozr na piatu položku dole. Poznámka, že + tento text je vyznacený (highlighted). + + 3. Stlac klávesu : . V spodnej casti okna sa objaví :'<,'>. + + 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. + Skontroluj, e vidíš :'<,'>w TEST predtým než stlacíš Enter. + + 5. Vim zapíše oznacené riadky do súboru TEST. Použi :!dir alebo :!ls + pre overenie. Zatial ho ešte nemaž! Použijeme ho v dalšej lekcii. + +POZNÁMKA: Stlacením klávesy v sa spustí vizuálne oznacovanie. + Môžeš pohybovat kurzorom pre upresnenie vyznaceného textu. + Potom môžeš použit operátor pre vykonanie nejakej akcie + s textom. Napríklad d zmaže vyznacený text. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5.4: VÝBER A ZLUCOVANIE SÚBOROV + + + ** Pre vloženie obsahu súboru, napíš :r FILENAME ** + + 1. Premiestni kurzor nad tento riadok. + +POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 1.5.3. Potom sa presun + dole, aby si videl túto lekciu. + + 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov + súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. + +POZNÁMKA: Môžeš tiež nacítat výstup vonkajšieho príkazu. Napríklad :r !ls + nacíta výstup príkazu ls a umiestni ho za pozíciu kurzora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.5 ZHRNUTIE + + + 1. :!príkaz spustí vonkajší príkaz. + + Niektoré využitelné príklady sú: + (MS_DOS) (UNIX) + :!dir :!ls - zobrazí obsah adresára + :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME + + 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. + + 3. v pohyb :w FILENAME uloží vizuálne oznacené riadky do + súboru FILENAME. + + 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho + súboru za pozíciou kurzora. + + 5. :r !dir nacíta výstup z príkazu dir a vloží ho za pozíciu kurzora. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6.1: PRÍKAZ OTVORIT + + +** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** + + 1. Presun kurzor nižšie na riadok oznacený znackou --->. + + 2. Napíš o (malé písmeno) pre vloženie cistého riadku pod kurzorm + a prepnutie do vkladacieho módu. + + 3. Teraz skopíruj riadok oznacený ---> a stlac pre ukoncenie + vkladacieho módu. + +---> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho + módu. + + 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš velké O , + namiesto malého o. Vyskúšaj si to na riadku dole. + +---> Vlož riadok nad týmto napísaním O, ked kurzor je na tomto riadku. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6.2: PRÍKAZ PRIDAT + + + ** Napíš a pre vloženie textu ZA kurzor. ** + + 1. Presun kurzor nižšie na koniec prvého riadku oznaceného znackou ---> + + 2. Stlac klávesu e dokial kurozr nieje na konci riadku. + + 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. + + 4. Dokoncí slovo tak ako je to v druhom riadku. Stlaš pre + opustenie vkladacieho módu. + + 5. Použi e na presun na dalšie nedokoncené slovo a zopakuj kroky 3 a 4. + +---> Tento ri ti dovoluje nácv priávan testu na koniec riadku. +---> Tento riadok ti dovoluje nácvik pridávania textu na koniec riadku. + +POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde + sa znaky vkladajú. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6.3: INÝ SPOSOB NAHRADZOVANIA + + + ** Napíš velké R pre nahradenie viac ako jedného znaku. ** + + 1. Presun kurzor nižšie na prvý riadok oznacený znackou --->. Premiestni + kurzor na zaciatok prvého výskytu xxx. + + 2. Teraz napíš R a napíš císlo uvedené v druhom riadku, takže + sa ním nahradí pôvodné xxx. + + 3. Stlac pre opustenie nahradzovacieho módu. Poznámka, že zvyšok + riadku zostane nezmenený. + + 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. + +---> Pridaním 123 ku xxx dostaneš xxx. +---> Pridaním 123 ku 456 dostaneš 579. + +POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak + zmaže existujúci znak. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lekcia 1.6.4: Copy Paste textu + + ** použí operátor y pre copy textku a p pre jeho paste ** + + 1. Chod nižšie na riadok oznacený ---> a umiestni kurozr za "a)". + + 2. Naštartuj vizuálny mód použitím v a presun kurozr pred "first". + + 3. Napíš y pre vystrihnutie (copy) oznaceného textu. + + 4. Presun kurozr na koniec dalšieho riadku: j$ + + 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . + + 6. Použi vizuálny mód pre oznacenie "položka.", vystrihni to + použitím y, presun sa na koniec nasledujúceho riadku použitím j$ + a vlož sem text použitím p. + +---> a) toto je prvá položka +---> b) + +POZNÁMKA: Môžeš použit tiež y ako operátor; yw vystrihne jedno slovo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6.5: NASTAVENIE MOŽNOSTÍ + + +** Nastav možnosti, takže vyhladávanie alebo nahradzovanie ignoruje + rozlišovanie ** + + + 1. Vyhladaj retazec 'ignore' napísaním: + /ignore + Zopakuj vyhladávanie niekolko krát stlacením klávesy n . + + 2. Nastav možnost 'ic' (Ignore case) napísaním príkazu: + :set ic + + 3. Teraz vyhladaj retazec 'ingore' znova stlacením klávesy n + Poznámka, že teraz sú vyhladané aj Ignore a IGNORE. + + 4. Nastav možnosti 'hlsearch' a 'incsearch': + :set hls is + + 5. Teraz spusti vyhladávací príkaz znovu, a pozri co sa stalo: + /ignore + + 6. Pre opetovné zapnutie rozlyšovania velkých a malých písmen + napíš: :set noic + +POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch +POZNÁMKA: Ak chceš nerozlyšovat velkost písmen len pre jedno + použitie vyhladávacieho príkazu, použi \c: /ignore\c + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.6 ZHRNUTIE + + + 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. + Napíš O pre otvorenie riadku nad kurzorom. + + 2. Napíš a pre vkladanie textu ZA kurzor. + Napíš A pre vkladanie textu za koncom riadku. + + 3. Príkaz e presunie kurozr na koniec slova + + 4. Operátor y vystrihne (skopíruje) text, p ho vloží. + + 5. Napísanie velkého R prepne do nahradzovacieho módu, kým nieje + stlacené . + + 6. Napísanie ":set xxx" nastaví možnost "xxx". Niektoré nastavenia sú: + 'ic' 'ignorecase' ignoruje velké a malé písmená pocas vyhladávania. + 'is' 'incsearch' zobrazuje ciastocné retazce vyhladávaného retazca. + 'hls' 'hlsearch' vyznací všetky vyhladávané retazce. + Môžeš použit hociktorý z dlhých a krátkych názvov možností. + + 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.7.1: ZÍSKANIE NÁPOVEDY + + + ** Používaj on-line systém nápovedy ** + + Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden + z týchto troch: + - stlac klávesu (ak nejakú máš) + - stlac klávesu (ak nejakú máš) + - napíš :help + + Cítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. + Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. + Napíš :q cím zatvoríš okno nápovedy. + + Môžeš nájst help ku hociakej téme pridaním argumentu ku príkazu ":help". + Vyskúšaj tieto (nezabudni stlacit ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU + + ** Zapni funkcie editora Vim ** + + Vim má omnoho viac funkcii než Vi, ale vecšina z nich je implicitne + vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. + + 1. Zacni editovat "vimrc" súbor, to závisí na použitom systéme: + :e ~/.vimrc pre Unix + :e ~/_vimrc pre MS-Windows + + 2. Teraz si precítaj text príkladu "vimrc" súboru: + + :r $VIMRUNTIME/vimrc_example.vim + + 3. Ulož súbor: + :w + + Pri nasledujúcom štarte editora Vim sa použije zvýraznovanie syntaxe. + Do "vimrc" súboru môžeš pridat všetky svoje uprednostnované nastavenia. + Pre viac informácii napíš :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 1.7.3: DOKONCENIE + + ** Dokonci príkaz na príkazovom riadku použitím CTRL-D a ** + + 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp + + 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir + + 3. Napíš zaciatok príkazu: :e + + 4. Stlac CTRL-D a Vim zobrazí zoznam príkazov zacínajúcich "e". + + 5. Stlac a Vim dokoncí meno príkazu na ":edit". + + 6. Teraz pridaj medzerník a zaciatok mena existujúceho súboru: + :edit FIL + + 7. Stlac . Vim dokoncí meno (ak je jedinecné). + +POZNÁMKA: Dokoncovanie funguje pre vela príkazov. Vyskúšaj stlacenie + CTRL-D a . Špeciálne je to užitocné pre príkaz :help. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 1.7 ZHRNUTIE + + 1. Napíš :help alebo stlac alebo pre otvorenie okna nápovedy. + + 2. Napíš :help príkaz pre vyhladanie nápovedy ku príkazu príkaz. + + 3. Napíš CTRL-W CTRL-W na preskocenie do iného okna. + + 4. Napíš :q pre zatvorenie okna nápovedy + + 5. Vytvor štartovací skript vimrc pre udržanie uprednostnovaných nastavení. + + 6. Pocas písania príkazu : stlac CTRL-D pre zobrazenie dokoncení. + Stlac pre použitie jedného z dokoncení. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + Toto vymedzuje výuku Vimu. Toto je urcené pre strucný prehlad o editore + Vim, úplne postacujúce pre lahké a obstojné používanie tohto editora. + Táto výuka je daleko od kompletnosti, pretože Vim má omnoho viacej príkazov. + Ako dalšie si precítaj užívatlský manuál: ":help user-manual". + + Pre dalšie cítanie a štúdium je odporúcaná kniha: + Vim - Vi Improved - od Steve Oualline + Vydavatel: New Riders + Prvá kniha urcená pre Vim. Špeciálne vhodná pre zaciatocníkov. + Obsahuje množstvo príkladov a obrázkov. + Pozri na https://iccf-holland.org/click5.html + + Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúcaná: + Learning the Vi Editor - od Linda Lamb + Vydavatel: O'Reilly & Associates Inc. + Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. + Šieste vydanie obsahuje tiež informácie o editore Vim. + + Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, + Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modifikované pre Vim od Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preklad do Slovenciny: Luboš Celko + e-mail: celbos@inmail.sk + Last Change: 2006 Apr 18 + encoding: iso8859-2 diff --git a/runtime/tutor/tutor.sk.utf-8 b/runtime/tutor/tutor1.sk.utf-8 similarity index 93% rename from runtime/tutor/tutor.sk.utf-8 rename to runtime/tutor/tutor1.sk.utf-8 index d25e9cbfe9..523a300a01 100644 --- a/runtime/tutor/tutor.sk.utf-8 +++ b/runtime/tutor/tutor1.sk.utf-8 @@ -19,11 +19,11 @@ uÄenie správne. Ak len Äitas text, príkazy zabudneÅ¡! PresvedÄ sa, že Caps-Lock NIEJE stlaÄený a stlaÄt klávesu - j niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1 + j niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1.1 celkom zaplní obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.1: POHYB KURZOROM + Lekcia 1.1.1: POHYB KURZOROM ** Pre pohyb kurzorum stlaÄ klávesy h,j,k,l ako je znázornené. ** @@ -37,7 +37,7 @@ 2. Drž stlaÄenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ---> Teraz sa už vieÅ¡ pohybovaÅ¥ na nasledujúcu lekciu. - 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. + 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.1.2. Poznámka: Ak si niesi istý tým Äo si napísal, stlaÄ na prechod do normálneho módu. @@ -46,7 +46,7 @@ Poznámka: Kurzorové klávesy sú tiež funkÄné. Ale používaním hjkl sa bu schopný pohybovaÅ¥ rýchlejÅ¡ie, keÄ si zvykneÅ¡ ich používaÅ¥. Naozaj! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.2: ZATVÃRANIE VIMU + LEKCIA 1.1.2: ZATVÃRANIE VIMU !! POZNÃMKA: Pred vykonaním týchto krokov si preÄítaj celú túto lekciu !! @@ -65,10 +65,10 @@ Poznámka: Kurzorové klávesy sú tiež funkÄné. Ale používaním hjkl sa bu POZNÃMKA: :q! neuloží zmeny, ktoré si vykonal. O niekoľko lekcií sa nauÄíš ako uložiÅ¥ zmeny do súboru - 5. presuň kurzor dole na lekciu 1.3. + 5. presuň kurzor dole na lekciu 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3: EDITÃCIA TEXTU - MAZANIE + Lekcia 1.1.3: EDITÃCIA TEXTU - MAZANIE ** StlaÄenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** @@ -84,14 +84,14 @@ POZNÃMKA: :q! neuloží zmeny, ktoré si vykonal. O niekoľko lekcií ---> Kraava skooÄilla ccezz mesiiac. - 5. Ak je veta správna, prejdi na lekciu 1.4. + 5. Ak je veta správna, prejdi na lekciu 1.1.4. POZNÃMKA: Neskúšaj si zapamätaÅ¥ obsah tejto výuky, ale sa uÄ používaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4: EDITÃCIA TEXTU - VKLADANIE + Lekcia 1.1.4: EDITÃCIA TEXTU - VKLADANIE ** StlaÄenie klávesy i umožňuje vkladanie textu. ** @@ -113,7 +113,7 @@ POZNÃMKA: Neskúšaj si zapamätaÅ¥ obsah tejto výuky, ale sa uÄ používaní ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5: EDITÃCIA TEXTU - PRIDÃVANIE + Lekcia 1.1.5: EDITÃCIA TEXTU - PRIDÃVANIE ** StlaÄenie klávesy A umožňuje pridávaÅ¥ text. ** @@ -133,18 +133,18 @@ POZNÃMKA: Neskúšaj si zapamätaÅ¥ obsah tejto výuky, ale sa uÄ používaní ---> Tu tiež chýba nej Tu tiež chýba nejaký text. - 5. KeÄ sa dostatoÄne nauÄíš pridávaÅ¥ text, prejdi na lekciu 1.6. + 5. KeÄ sa dostatoÄne nauÄíš pridávaÅ¥ text, prejdi na lekciu 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6: EDITÃCIA SÚBORU + Lekcia 1.1.6: EDITÃCIA SÚBORU ** Napísaním :wq sa súbor uloží a zavrie ** !! POZNÃMKA: Pred vykonaním týchto krokov si preÄítaj celú lekciu!! -1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! +1. Opusti túto výuku, ako si to urobil v lekcii 1.1.2: :q! 2. Do príkazového riadku napíš príkaz: vim tutor 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, @@ -160,7 +160,7 @@ POZNÃMKA: Neskúšaj si zapamätaÅ¥ obsah tejto výuky, ale sa uÄ používaní ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZHRNUTIE LEKCIE 1 + ZHRNUTIE LEKCIE 1.1 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. @@ -180,11 +180,11 @@ POZNÃMKA: Neskúšaj si zapamätaÅ¥ obsah tejto výuky, ale sa uÄ používaní POZNÃMKA: StlaÄenie Å¥a premiestní do normálneho módu alebo zruší nejaký nechcený a ÄiastoÄne dokonÄený príkaz. -Teraz pokraÄuj lekciou 2. +Teraz pokraÄuj lekciou 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.1: Mazacie príkazy + Lekcia 1.2.1: Mazacie príkazy ** Napísanie príkazu dw zmaže znaky do konca slova. ** @@ -204,12 +204,12 @@ POZNÃMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keÄ ho ---> Tu je niekoľko slov zábava, ktoré nie patria list do tejto vety. -5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. +5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.2: VIAC MAZACÃCH PRÃKAZOV + Lekcia 1.2.2: VIAC MAZACÃCH PRÃKAZOV ** Napísanie príkazu d$ zmaže znaky do konca riadku ** @@ -225,11 +225,11 @@ POZNÃMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keÄ ho ---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. -5. Prejdi na lekciu 2.3 pre pochopenie toho Äo sa stalo. +5. Prejdi na lekciu 1.2.3 pre pochopenie toho Äo sa stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.3: OPERÃTORY A POHYBY + Lekcia 1.2.3: OPERÃTORY A POHYBY Veľa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. Formát pre príkaz mazania klávesou d je nasledovný: @@ -251,7 +251,7 @@ POZNÃMKA: StlaÄením iba pohybu v normálnom móde bez operátora sa presunie kurzor tak ako je to Å¡pecivikované. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.4: Použitie viacnásobného pohybu + Lekcia 1.2.4: Použitie viacnásobného pohybu ** Napísaním Äísla pred pohyb ho zopakuje zadný poÄet krát ** @@ -268,11 +268,11 @@ POZNÃMKA: StlaÄením iba pohybu v normálnom móde bez operátora ---> Toto je riadok so slovami po kotrých sa môžete pohybovaÅ¥. - 6. Prejdi na lekciu 2.5. + 6. Prejdi na lekciu 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.5: POUŽITIE VIACNÃSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE + Lekcia 1.2.5: POUŽITIE VIACNÃSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE ** Napísanie Äísla spolu s operátorom ho zopakuje zadaný poÄet krát ** @@ -296,7 +296,7 @@ POZNÃMKA: Číslo medzi operátorom d a pohybom funguje podobne ako pri ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.6: OPERÃCIE S RIADKAMI + Lekcia 1.2.6: OPERÃCIE S RIADKAMI ** Napísanie príkazu dd zmaže celý riadok. ** @@ -319,7 +319,7 @@ Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.7: PRÃKAZ UNDO + Lekcia 1.2.7: PRÃKAZ UNDO ** StlaÄ u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** @@ -336,13 +336,13 @@ Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, ---> Opprav chybby nna toomto riadku a zmeeň ich pommocou undo. - 8. Tieto príkazy sú Äasto používané. Teraz prejdi na zhrnutie lekcie 2. + 8. Tieto príkazy sú Äasto používané. Teraz prejdi na zhrnutie lekcie 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 2 ZHRNUTIE + LEKCIA 1.2 ZHRNUTIE 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw @@ -369,7 +369,7 @@ Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, Pre vrátenie vrátených úprav napíš: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.1: PRÃKAZ VLOŽIŤ + Lekcia 1.3.1: PRÃKAZ VLOŽIŤ ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** @@ -392,7 +392,7 @@ Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.2: PRÃKAZ NAHRADENIA + Lekcia 1.3.2: PRÃKAZ NAHRADENIA ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** @@ -408,14 +408,14 @@ Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, ---> KaÄ bol tento riasok píaaný, niekro stlaÅ¡il nesprábne klávesy! ---> KeÄ bol tento riadok písaný, niekto stlaÄil nesprávne klávesy! - 5. Teraz prejdi na lekciu 3.2. + 5. Teraz prejdi na lekciu 1.3.2. POZNÃMKA: Pamätaj si, že nauÄiÅ¥ sa môžeÅ¡ len používanim, nie pamätaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.3. PRÃKAZ ÚPRAVY + Lekcia 1.3.3: PRÃKAZ ÚPRAVY ** Ak chceÅ¡ zmeniÅ¥ ÄasÅ¥ slova do konca slova, napíš ce . ** @@ -438,7 +438,7 @@ Poznámka, že ce zmaže slovo a nastaví vkladací mód. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.4: VIAC ZMIEN POUŽITÃM c + Lekcia 1.3.4: VIAC ZMIEN POUŽITÃM c ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** @@ -463,7 +463,7 @@ POZNÃMKA: MôžeÅ¡ použiÅ¥ klávesu backspace na úpravu zmien poÄas písania ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 3 ZHRNUTIE + LEKCIA 1.3 ZHRNUTIE 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný @@ -486,7 +486,7 @@ Teraz prejdi na nalsedujúcu lekciu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.1: POZÃCIA A STATUS SÚBORU + Lekcia 1.4.1: POZÃCIA A STATUS SÚBORU ** StlaÄ CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. @@ -509,7 +509,7 @@ Teraz prejdi na nalsedujúcu lekciu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.2: PRÃKAZ VYHĽADÃVANIA + Lekcia 1.4.2: PRÃKAZ VYHĽADÃVANIA ** Napíš / nasledované reÅ¥azcom pre vyhľadanie prísluÅ¡ného reÅ¥azca. ** @@ -536,7 +536,7 @@ POZNÃMKA: KeÄ vyhľadávanie dosiahne koniec tohto súboru, bude pokraÄovaÅ¥ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.3: VYHĽADÃVANIE ZODPOVEDAJÚCICH ZÃTAVORIEK + Lekcia 1.4.3: VYHĽADÃVANIE ZODPOVEDAJÚCICH ZÃTAVORIEK ** Napíš % pre vyhľadanie prísluÅ¡ného znaku ),], alebo } . ** @@ -561,7 +561,7 @@ Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúci ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.4: PRÃKAZ NAHRADENIA + Lekcia 1.4.4: PRÃKAZ NAHRADENIA ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** @@ -586,7 +586,7 @@ Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúci ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 4 ZHRNUTIE + LEKCIA 1.4 ZHRNUTIE 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. @@ -611,7 +611,7 @@ Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúci ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.1 AKO SPUSTIŤ VONKAJÅ Ã PRÃKAZ + Lekcia 1.5.1: AKO SPUSTIŤ VONKAJÅ Ã PRÃKAZ ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** @@ -633,7 +633,7 @@ Poznámka: VÅ¡etky príkazy : musia byÅ¥ dokonÄené stlaÄením ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.2: VIAC O UKLADANà SÚBOROV + Lekcia 1.5.2: VIAC O UKLADANà SÚBOROV ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** @@ -656,7 +656,7 @@ Poznámka: že ak ukonÄíš prácu s editorom Vim a znovu ho spustíš príkazo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.3 VÃBER TEXTU PRE ULOŽENIE + Lekcia 1.5.3: VÃBER TEXTU PRE ULOŽENIE ** Pre uloženie Äasti súboru, napíš v pohyb :w FILENAME ** @@ -681,14 +681,14 @@ POZNÃMKA: StlaÄením klávesy v sa spustí vizuálne oznaÄovanie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.4: VÃBER A ZLUÄŒOVANIE SÚBOROV + Lekcia 1.5.4: VÃBER A ZLUÄŒOVANIE SÚBOROV ** Pre vloženie obsahu súboru, napíš :r FILENAME ** 1. Premiestni kurzor nad tento riadok. -POZNÃMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuň +POZNÃMKA: Po vykonaní kroku 2 uvidíš text z lekcie 1.5.3. Potom sa presuň dole, aby si videl túto lekciu. 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov @@ -699,7 +699,7 @@ POZNÃMKA: MôžeÅ¡ tiež naÄítaÅ¥ výstup vonkajÅ¡ieho príkazu. Napríklad : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 5 ZHRNUTIE + LEKCIA 1.5 ZHRNUTIE 1. :!príkaz spustí vonkajší príkaz. @@ -722,7 +722,7 @@ POZNÃMKA: MôžeÅ¡ tiež naÄítaÅ¥ výstup vonkajÅ¡ieho príkazu. Napríklad : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.1: PRÃKAZ OTVORIŤ + Lekcia 1.6.1: PRÃKAZ OTVORIŤ ** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** @@ -746,7 +746,7 @@ POZNÃMKA: MôžeÅ¡ tiež naÄítaÅ¥ výstup vonkajÅ¡ieho príkazu. Napríklad : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.2: PRÃKAZ PRIDAŤ + Lekcia 1.6.2: PRÃKAZ PRIDAŤ ** Napíš a pre vloženie textu ZA kurzor. ** @@ -770,7 +770,7 @@ POZNÃMKA: a, i, A Å¡tartujú rovnaký vkladací mód, jediný rozidel je, kde ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.3: INà SPOSOB NAHRADZOVANIA + Lekcia 1.6.3: INà SPOSOB NAHRADZOVANIA ** Napíš veľké R pre nahradenie viac ako jedného znaku. ** @@ -795,7 +795,7 @@ POZNÃMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný zna ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.4: Copy Paste textu + Lekcia 1.6.4: Copy Paste textu ** použí operátor y pre copy textku a p pre jeho paste ** @@ -820,7 +820,7 @@ POZNÃMKA: MôžeÅ¡ použiÅ¥ tiež y ako operátor; yw vystrihne jedno slovo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.5: NASTAVENIE MOŽNOSTà + Lekcia 1.6.5: NASTAVENIE MOŽNOSTà ** Nastav možnosti, takže vyhľadávanie alebo nahradzovanie ignoruje @@ -851,7 +851,7 @@ POZNÃMKA: Ak chceÅ¡ nerozlyÅ¡ovaÅ¥ veľkosÅ¥ písmen len pre jedno použitie vyhľadávacieho príkazu, použi \c: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 6 ZHRNUTIE + LEKCIA 1.6 ZHRNUTIE 1. Napíš o pre otvorenie riadku pod kurzorom a Å¡tart vkladacieho módu. @@ -882,7 +882,7 @@ POZNÃMKA: Ak chceÅ¡ nerozlyÅ¡ovaÅ¥ veľkosÅ¥ písmen len pre jedno ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.1: ZÃSKANIE NÃPOVEDY + LEKCIA 1.7.1: ZÃSKANIE NÃPOVEDY ** Používaj on-line systém nápovedy ** @@ -907,7 +907,7 @@ POZNÃMKA: Ak chceÅ¡ nerozlyÅ¡ovaÅ¥ veľkosÅ¥ písmen len pre jedno ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.2: VYTVORENIE Å TARTOVACIEHO SKRIPTU + LEKCIA 1.7.2: VYTVORENIE Å TARTOVACIEHO SKRIPTU ** Zapni funkcie editora Vim ** @@ -931,7 +931,7 @@ POZNÃMKA: Ak chceÅ¡ nerozlyÅ¡ovaÅ¥ veľkosÅ¥ písmen len pre jedno ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.3 DOKONÄŒENIE + LEKCIA 1.7.3: DOKONÄŒENIE ** DokonÄi príkaz na príkazovom riadku použitím CTRL-D a ** @@ -956,7 +956,7 @@ POZNÃMKA: DokonÄovanie funguje pre veľa príkazov. Vyskúšaj stlaÄenie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7 ZHRNUTIE + LEKCIA 1.7 ZHRNUTIE 1. Napíš :help alebo stlaÄ alebo pre otvorenie okna nápovedy. diff --git a/runtime/tutor/tutor.sr.cp1250 b/runtime/tutor/tutor1.sr.cp1250 similarity index 60% rename from runtime/tutor/tutor.sr.cp1250 rename to runtime/tutor/tutor1.sr.cp1250 index c4d0064cd8..f7c29cf3a7 100644 --- a/runtime/tutor/tutor.sr.cp1250 +++ b/runtime/tutor/tutor1.sr.cp1250 @@ -1,27 +1,27 @@ =============================================================================== -= D o b r o d o š l i u VIM p r i r u è n i k - Verzija 1.7 = += D o b r o d o š l i u VIM p r i r u c n i k - Verzija 1.7 = =============================================================================== - Vim je moæan editor sa mnogo komandi, suviše da bismo ih ovde sve - opisali. Priruènik je zamišljen da opiše dovoljno komandi da biste + Vim je mocan editor sa mnogo komandi, suviše da bismo ih ovde sve + opisali. Prirucnik je zamišljen da opiše dovoljno komandi da biste mogli lagodno da koristite Vim kao editor opšte namene. - Približno vreme potrebno za uspešan završetak priruènika je izmeðu + Približno vreme potrebno za uspešan završetak prirucnika je izmedu 25 i 30 minuta, u zavisnosti od vremena potrošenog na vežbu. UPOZORENJE: - Komande u lekcijama æe menjati tekst. Iskopirajte ovaj fajl i - vežbajte na kopiji (ako ste pokrenuli "vimtutor" ovo je veæ kopija). + Komande u lekcijama ce menjati tekst. Iskopirajte ovaj fajl i + vežbajte na kopiji (ako ste pokrenuli "vimtutor" ovo je vec kopija). - Važno je upamtiti da je ovaj priruènik zamišljen za aktivnu vežbu. - To znaèi da morate upotrebljavati komande o kojima èitate da biste - ih nauèili. Ako samo èitate tekst, zaboraviæete komande! + Važno je upamtiti da je ovaj prirucnik zamišljen za aktivnu vežbu. + To znaci da morate upotrebljavati komande o kojima citate da biste + ih naucili. Ako samo citate tekst, zaboravicete komande! - Ako je Caps Lock ukljuèen ISKLJUÈITE ga. Pritisnite taster j dovoljno - puta da lekcija 1.1 cela stane na ekran. + Ako je Caps Lock ukljucen ISKLJUCITE ga. Pritisnite taster j dovoljno + puta da lekcija 1.1.1 cela stane na ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMERANJE KURSORA + Lekcija 1.1.1: POMERANJE KURSORA ** Za pomeranje kursora, pritiskajte tastere h,j,k,l kako je prikazano ** @@ -32,22 +32,22 @@ v 1. Pomerajte kursor po ekranu dok se ne naviknete na komande. - 2. Pritisnite taster (j) dok ne poène da se ponavlja. - Sada znate kako da doðete do naredne lekcije. + 2. Pritisnite taster (j) dok ne pocne da se ponavlja. + Sada znate kako da dodete do naredne lekcije. - 3. Koristeæi taster j preðite na lekciju 1.2. + 3. Koristeci taster j predite na lekciju 1.1.2. NAPOMENA: Ako niste sigurni šta ste zapravo pritisnuli, pritisnite za prelazak u Normal mod i pokušajte ponovo. -NAPOMENA: Strelice takoðe pomeraju kursor, ali korišæenje tastera hjkl je +NAPOMENA: Strelice takode pomeraju kursor, ali korišcenje tastera hjkl je znatno brže, kad se jednom naviknete na njih. Zaista! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZAK IZ VIM-a + Lekcija 1.1.2: IZLAZAK IZ VIM-a - !! UPOZORENJE: Pre izvoðenja bilo kog koraka, proèitajte celu lekciju!! + !! UPOZORENJE: Pre izvodenja bilo kog koraka, procitajte celu lekciju!! 1. Pritisnite (editor je sada u Normal modu). @@ -55,27 +55,27 @@ NAPOMENA: Strelice tako Ovime se izlazi iz editora, sa GUBITKOM svih izmena. 3. Kada se pojavi komandni prompt, unesite komandu koja je pokrenula - ovaj priruènik: vimtutor + ovaj prirucnik: vimtutor 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 da biste izašli iz editora i ponovo ga pokrenuli. NAPOMENA: :q! poništava sve izmene koje ste napravili. - U narednim lekcijama nauèiæete kako da saèuvate izmene. + U narednim lekcijama naucicete kako da sacuvate izmene. - 5. Pomerite kursor na lekciju 1.3. + 5. Pomerite kursor na lekciju 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: IZMENA TEKSTA - BRISANJE + Lekcija 1.1.3: IZMENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** - 1. Pomerite kursor na red oznaèen sa --->. + 1. Pomerite kursor na red oznacen sa --->. 2. Da biste ispravili greške, pomerajte kursor dok se - ne naðe na slovu koje treba izbrisati. + ne nade na slovu koje treba izbrisati. 3. Pritisnite taster x da izbrišete neželjeno slovo. @@ -83,42 +83,42 @@ NAPOMENA: :q! poni ---> RRRibaa riibi grizzze rrreepp. - 5. Kad ispravite red, preðite na lekciju 1.4. + 5. Kad ispravite red, predite na lekciju 1.1.4. -NAPOMENA: Dok koristite priruènik, nemojte uèiti komande napamet, - veæ vežbajte njihovu primenu. +NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, + vec vežbajte njihovu primenu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: IZMENA TEKSTA - UBACIVANJE + Lekcija 1.1.4: IZMENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** - 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + 1. Pomerite kursor na prvi sledeci red oznacen sa --->. - 2. Da biste tekst prvog reda izjednaèili s tekstom drugog, namestite - kursor na prvi znak POSLE kog æete ubaciti potreban tekst. + 2. Da biste tekst prvog reda izjednacili s tekstom drugog, namestite + kursor na prvi znak POSLE kog cete ubaciti potreban tekst. 3. Pritisnite i pa unesite potrebne dopune. 4. Po ispravci svake greške pritisnite da se vratite u Normal mod. - Ponovite korake od 2 do 4 da biste ispravili celu reèenicu. + Ponovite korake od 2 do 4 da biste ispravili celu recenicu. ---> Do teka neoje v red. ---> Deo teksta nedostaje iz ovog reda. - 5. Preðite na sledeæu lekciju. + 5. Predite na sledecu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: IZMENA TEKSTA - DODAVANJE + Lekcija 1.1.5: IZMENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** - 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + 1. Pomerite kursor na prvi sledeci red oznacen sa --->. Nije važno gde se nalazi kursor u tom redu. 2. Pritisnite A i unesite dodatni tekst. @@ -126,7 +126,7 @@ NAPOMENA: Dok koristite priru 3. Pošto ste dodali tekst, pritisnite za povratak u Normal mod. - 4. Pomerite kursor na drugi red oznaèen sa ---> i ponavljajte + 4. Pomerite kursor na drugi red oznacen sa ---> i ponavljajte korake 2 i 3 dok ne ispravite tekst. ---> Deo teksta nedostaje u @@ -134,41 +134,41 @@ NAPOMENA: Dok koristite priru ---> Deo teksta nedostaje Deo teksta nedostaje i ovde. - 5. Preðite na lekciju 1.6. + 5. Predite na lekciju 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: IZMENA FAJLA + Lekcija 1.1.6: IZMENA FAJLA ** Upotrebite :wq za snimanje teksta i izlazak iz editora. ** - !! UPOZORENJE: Pre izvoðenja bilo kog koraka, proèitajte celu lekciju!! + !! UPOZORENJE: Pre izvodenja bilo kog koraka, procitajte celu lekciju!! - 1. Izaðite iz editora kao u lekciji 1.2: :q! + 1. Izadite iz editora kao u lekciji 1.1.2: :q! - 2. Na komandnom promptu unesite sledeæu komandu: vim tutor + 2. Na komandnom promptu unesite sledecu komandu: vim tutor 'vim' je komanda za pokretanja Vim editora, 'tutor' je ime fajla koji želite da menjate. Koristite fajl koji imate pravo da menjate. 3. Ubacujte i brišite tekst kao u prethodnim lekcijama. - 4. Snimite izmenjeni tekst i izaðite iz Vim-a: :wq + 4. Snimite izmenjeni tekst i izadite iz Vim-a: :wq - 5. Ponovo pokrenite vimtutor i proèitajte rezime koji sledi. + 5. Ponovo pokrenite vimtutor i procitajte rezime koji sledi. - 6. Pošto proèitate korake iznad i u potpunosti ih razumete: + 6. Pošto procitate korake iznad i u potpunosti ih razumete: izvršite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 1 + REZIME lekcije 1.1 - 1. Kursor se pomera strelicama ili pomoæu tastera hjkl . + 1. Kursor se pomera strelicama ili pomocu tastera hjkl . h (levo) j (dole) k (gore) l (desno) 2. Za pokretanje Vim-a iz shell-a: vim IME_FAJLA 3. Izlaz: :q! sve promene su izgubljene. - ILI: :wq promene su saèuvane. + ILI: :wq promene su sacuvane. 4. Brisanje znaka na kome se nalazi kursor: x @@ -177,104 +177,104 @@ NAPOMENA: Dok koristite priru A unesite tekst dodavanje na kraju reda NAPOMENA: Pritiskom na prebacujete Vim u Normal mod i - prekidate neželjenu ili delimièno izvršenu komandu. + prekidate neželjenu ili delimicno izvršenu komandu. -Nastavite sa lekcijom 2. +Nastavite sa lekcijom 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA + Lekcija 1.2.1: NAREDBE BRISANJA - ** Otkucajte dw za brisanje reèi. ** + ** Otkucajte dw za brisanje reci. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. - 2. Pomerite kursor na red oznaèen sa --->. + 2. Pomerite kursor na red oznacen sa --->. - 3. Pomerite kursor na poèetak reèi koju treba izbrisati. + 3. Pomerite kursor na pocetak reci koju treba izbrisati. - 4. Otkucajte dw da biste uklonili reè. + 4. Otkucajte dw da biste uklonili rec. -NAPOMENA: Slovo d æe se pojaviti na dnu ekrana kad ga otkucate. Vim èeka +NAPOMENA: Slovo d ce se pojaviti na dnu ekrana kad ga otkucate. Vim ceka da otkucate w . Ako je prikazano neko drugo slovo, pogrešili ste u kucanju; pritisnite i pokušajte ponovo. (Ako se ne pojavi - ništa, možda je iskljuèena opcija 'showcmd': vidi lekciju 6.5.) + ništa, možda je iskljucena opcija 'showcmd': vidi lekciju 1.6.5.) ----> Neke reèi smešno ne pripadaju na papir ovoj reèenici. +---> Neke reci smešno ne pripadaju na papir ovoj recenici. - 5. Ponavljajte korake 3 i 4 dok ne ispravite reèenicu, pa - preðite na lekciju 2.2. + 5. Ponavljajte korake 3 i 4 dok ne ispravite recenicu, pa + predite na lekciju 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JOŠ BRISANJA + Lekcija 1.2.2: JOŠ BRISANJA ** Otkucajte d$ za brisanje znakova do kraja reda. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. - 2. Pomerite kursor na red oznaèen sa --->. + 2. Pomerite kursor na red oznacen sa --->. - 3. Pomerite kursor do kraja ispravnog dela reèenice + 3. Pomerite kursor do kraja ispravnog dela recenice (POSLE prve . ). 4. Otkucajte d$ za brisanje ostatka reda. ---> Neko je uneo kraj ovog reda dvaput. kraj ovog reda dvaput. - 5. Preðite na lekciju 2.3 za podrobnije objašnjenje. + 5. Predite na lekciju 1.2.3 za podrobnije objašnjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: O OPERATORIMA I POKRETIMA + Lekcija 1.2.3: O OPERATORIMA I POKRETIMA Mnoge komande za izmenu teksta sastoje se od operatora i pokreta. - Oblik komande brisanja sa d operatorom je sledeæi: + Oblik komande brisanja sa d operatorom je sledeci: d pokret - Pri èemu je: + Pri cemu je: d - operator brisanja. - pokret - ono na èemu æe se operacija izvršavati (opisano u nastavku). + pokret - ono na cemu ce se operacija izvršavati (opisano u nastavku). Kratak spisak pokreta: - w - sve do poèetka sledeæe reèi, NE UKLJUÈUJUÆI prvo slovo. - e - sve do kraja tekuæe reèi, UKLJUÈUJUÆI poslednje slovo. - $ - sve do kraje reda, UKLJUÈUJUÆI poslednje slovo. + w - sve do pocetka sledece reci, NE UKLJUCUJUCI prvo slovo. + e - sve do kraja tekuce reci, UKLJUCUJUCI poslednje slovo. + $ - sve do kraje reda, UKLJUCUJUCI poslednje slovo. - Kucanjem de brisaæe se tekst od kursora do kraja reèi. + Kucanjem de brisace se tekst od kursora do kraja reci. NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operatora, kursor se pomera kao što je opisano. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORIŠÆENJE BROJANJA ZA POKRETE + Lekcija 1.2.4: KORIŠCENJE BROJANJA ZA POKRETE ** Unošenjem nekog broja pre pokreta, pokret se izvršava taj broj puta. ** - 1. Pomerite kursor na red oznaèen sa --->. + 1. Pomerite kursor na red oznacen sa --->. - 2. Otkucajte 2w da pomerite kursor dve reèi napred. + 2. Otkucajte 2w da pomerite kursor dve reci napred. - 3. Otkucajte 3e da pomerite kursor na kraj treæe reèi napred. + 3. Otkucajte 3e da pomerite kursor na kraj trece reci napred. - 4. Otkucajte 0 (nulu) da pomerite kursor na poèetak reda. + 4. Otkucajte 0 (nulu) da pomerite kursor na pocetak reda. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ----> Reèenica sa reèima po kojoj možete pomerati kursor. +---> Recenica sa recima po kojoj možete pomerati kursor. - 6. Preðite na lekciju 2.5. + 6. Predite na lekciju 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORIŠÆENJE BROJANJA ZA VEÆE BRISANJE + Lekcija 1.2.5: KORIŠCENJE BROJANJA ZA VECE BRISANJE ** Unošenje nekog broja s operatorom ponavlja operator taj broj puta. ** @@ -284,30 +284,30 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez d broj pokret - 1. Pomerite kursor na prvo slovo u reèi s VELIKIM SLOVIMA u redu - oznaèenom sa --->. + 1. Pomerite kursor na prvo slovo u reci s VELIKIM SLOVIMA u redu + oznacenom sa --->. - 2. Otkucajte d2w da izbrišete dve reèi sa VELIKIM SLOVIMA + 2. Otkucajte d2w da izbrišete dve reci sa VELIKIM SLOVIMA - 3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbrišete - uzastopne reèi sa VELIKIM SLOVIMA korišæenjem samo jedne komande. + 3. Ponovite korake 1 i 2 sa razlicitim brojevima da izbrišete + uzastopne reci sa VELIKIM SLOVIMA korišcenjem samo jedne komande. ----> ovaj ABCÈÆ DÐE red FGHI JK LMN OP s reèima je RSŠ TUVZŽ ispravljen. +---> ovaj ABCCC DÐE red FGHI JK LMN OP s recima je RSŠ TUVZŽ ispravljen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERACIJE NAD REDOVIMA + Lekcija 1.2.6: OPERACIJE NAD REDOVIMA ** Otkucajte dd za brisanje celog reda. ** - Zbog uèestalosti brisanja celih redova, autori Vi-ja odluèili su da + Zbog ucestalosti brisanja celih redova, autori Vi-ja odlucili su da je lakše brisati redove ako se otkuca d dvaput. 1. Pomerite kursor na drugi red u donjoj strofi. 2. Otkucajte dd da ga izbrišete. - 3. Pomerite kursor na èetvrti red. + 3. Pomerite kursor na cetvrti red. 4. Otkucajte 2dd da biste izbrisali dva reda. ---> 1) Sedlo mi je od marame, @@ -315,38 +315,38 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> 3) uzda od kanapa, ---> 4) auto mi je ovde, ---> 5) satovi pokazuju vreme, ----> 6) a biè mi je od oèina +---> 6) a bic mi je od ocina ---> 7) prebijena štapa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: PONIŠTAVANJE PROMENA + Lekcija 1.2.7: PONIŠTAVANJE PROMENA ** Pritisnite u za poništavanje poslednje komande, U za ceo red. ** - 1. Pomerite kursor na red oznaèen sa ---> i postavite ga na mesto + 1. Pomerite kursor na red oznacen sa ---> i postavite ga na mesto prve greške. 2. Otkucajte x da izbrišete prvi neželjeni znak. 3. Otkucajte u da poništite poslednju izvršenu komandu. - 4. Sad ispravite sve greške u redu koristeæi komandu x . + 4. Sad ispravite sve greške u redu koristeci komandu x . 5. Otkucajte veliko U da biste vratili sadržaj reda u prvobitno stanje. 6. Onda otkucajte u nekoliko puta da biste poništili U i prethodne komande. - 7. Sad otkucajte CTRL-R (držeæi CTRL dok pritiskate R) + 7. Sad otkucajte CTRL-R (držeci CTRL dok pritiskate R) nekoliko puta da biste vratili izmene (poništili poništavanja). ---> Iiisspravite greške uu ovvom redu ii pooništiteee ih. - 8. Ovo su veoma korisne komande. Preðite na rezime lekcije 2. + 8. Ovo su veoma korisne komande. Predite na rezime lekcije 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 2 + REZIME lekcije 1.2 - 1. Brisanje od kursora do sledeæe reèi: dw + 1. Brisanje od kursora do sledece reci: dw 2. Brisanje od kursora do kraja reda: d$ 3. Brisanje celog reda: dd @@ -357,21 +357,21 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operator - šta uraditi, recimo d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu na kome se radi, - kao što je: w (reè), $ (kraj reda), itd. + kao što je: w (rec), $ (kraj reda), itd. - 6. Pomeranje kursora na poèetak reda: 0 + 6. Pomeranje kursora na pocetak reda: 0 7. Za poništavanje prethodnih izmena, pritisnite: u (malo u) Za poništavanje svih promena u redu, pritisnite: U (veliko U) - Za vraæanja promena, otkucajte: CTRL-R + Za vracanja promena, otkucajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: KOMANDA POSTAVLJANJA + Lekcija 1.3.1: KOMANDA POSTAVLJANJA ** Otkucajte p da postavite prethodno izbrisan tekst iza kursora. ** - 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + 1. Pomerite kursor na prvi sledeci red oznacen sa --->. 2. Otkucajte dd da izbrišete red i smestite ga u Vim registar. @@ -384,17 +384,17 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> d) prebijena štapa. ---> b) uzda od kanapa, ----> c) a biè mi je od oèina +---> c) a bic mi je od ocina ---> a) Sedlo mi je od marame, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: KOMANDA ZAMENE + Lekcija 1.3.2: KOMANDA ZAMENE ** Otkucajte rx da zamenite znak ispod kursora slovom x . ** - 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + 1. Pomerite kursor na prvi sledeci red oznacen sa --->. 2. Pomerite kursor tako da se nalazi na prvoj grešci. @@ -406,47 +406,47 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> Kedi ju ovej red ugašen, nako je protresao pustašne testere! ---> Kada je ovaj red unošen, neko je pritiskao pogrešne tastere! - 5. Preðite na lekciju 3.2. + 5. Predite na lekciju 1.3.3. -NAPOMENA: Setite se da treba da uèite vežbanjem, ne pamæenjem. +NAPOMENA: Setite se da treba da ucite vežbanjem, ne pamcenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR IZMENE + Lekcija 1.3.3: OPERATOR IZMENE - ** Za izmenu teksta do kraja reèi, otkucajte ce .** + ** Za izmenu teksta do kraja reci, otkucajte ce .** - 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + 1. Pomerite kursor na prvi sledeci red oznacen sa --->. 2. Postavite kursor na a u rakdur. - 3. Otkucajte ce i ispravite reè (u ovom sluèaju otkucajte ed ). + 3. Otkucajte ce i ispravite rec (u ovom slucaju otkucajte ed ). - 4. Pritisnite i pomerite kursor na sledeæi znak koji + 4. Pritisnite i pomerite kursor na sledeci znak koji treba ispraviti. - 5. Ponavljajte korake 3 i 4 sve dok prva reèenica ne bude ista + 5. Ponavljajte korake 3 i 4 sve dok prva recenica ne bude ista kao druga. ---> Ovaj rakdur ima nekoliko rejga koje treflja isprpikati operagrom izmene. ----> Ovaj red ima nekoliko reèi koje treba ispraviti operatorom izmene. +---> Ovaj red ima nekoliko reci koje treba ispraviti operatorom izmene. -Uoèite da ce briše reè i postavlja editor u Insert mod. +Uocite da ce briše rec i postavlja editor u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: DALJE IZMENE UPOTREBOM c + Lekcija 1.3.4: DALJE IZMENE UPOTREBOM c ** Komanda izmene se koristi sa istim pokretima kao i brisanje. ** - 1. Operator izmene se koristi na isti naèin kao i operator brisanja: + 1. Operator izmene se koristi na isti nacin kao i operator brisanja: c [broj] pokret - 2. Pokreti su isti, recimo: w (reè) i $ (kraj reda). + 2. Pokreti su isti, recimo: w (rec) i $ (kraj reda). - 3. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + 3. Pomerite kursor na prvi sledeci red oznacen sa --->. 4. Pomerite kursor na prvu grešku. @@ -454,57 +454,57 @@ Uo drugi red, pa pritisnite . ---> Kraj ovog reda treba izmeniti tako da izgleda kao red ispod. ----> Kraj ovog reda treba ispraviti korišæenjem c$ komande. +---> Kraj ovog reda treba ispraviti korišcenjem c$ komande. NAPOMENA: Za ispravljanje grešaka možete koristiti Backspace . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 3 + REZIME lekcije 1.3 1. Za postavljanje teksta koji ste upravo izbrisali, pritisnite p . Ovo postavlja tekst IZA kursora (ako je bio izbrisan jedan ili više redova - sadržaj æe doæi na red ispod kursora). + sadržaj ce doci na red ispod kursora). 2. Za zamenu znaka na kome se nalazi kursor, pritisnite r i onda željeni znak. 3. Operator izmene dozvoljava promenu teksta od kursora do pozicije gde se završava pokret. Primera radi, kucajte ce za izmenu od kursora do - kraja reèi, ili c$ za izmenu od kursora do kraja reda. + kraja reci, ili c$ za izmenu od kursora do kraja reda. 4. Oblik operacije izmene je: c [broj] pokret -Preðite na narednu lekciju. +Predite na narednu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS FAJLA + Lekcija 1.4.1: POZICIJA KURSORA I STATUS FAJLA ** Pritisnite CTRL-G za prikaz pozicije kursora u tekstu i status fajla. Pritisnite G za pomeranje kursora na neki red u tekstu. ** -NAPOMENA: Proèitajte celu lekciju pre izvoðenja bilo kog koraka!! +NAPOMENA: Procitajte celu lekciju pre izvodenja bilo kog koraka!! 1. Držite taster CTRL i pritisnite g . Ovo zovemo CTRL-G. - Editor æe na dnu ekrana ispisati poruku sa imenom fajla i pozicijom + Editor ce na dnu ekrana ispisati poruku sa imenom fajla i pozicijom kursora u tekstu. Zapamtite broj reda za 3. korak. NAPOMENA: U donjem desnom uglu može se videti poziciju kursora ako je - ukljuèena opcija 'ruler' (vidi :help ruler ili lekciju 6.5.) + ukljucena opcija 'ruler' (vidi :help ruler ili lekciju 1.6.5.) 2. Pritisnite G za pomeranje kursora na kraj teksta. - Pritisnite 1G ili gg za pomranje kursora na poèetak teksta. + Pritisnite 1G ili gg za pomranje kursora na pocetak teksta. 3. Otkucajte broj reda na kome ste malopre bili i onda G . Kursor - æe se vratiti na red na kome je bio kad ste otkucali CTRL-G. + ce se vratiti na red na kome je bio kad ste otkucali CTRL-G. 4. Ako ste spremni, izvršite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: KOMANDE PRETRAŽIVANJA + Lekcija 1.4.2: KOMANDE PRETRAŽIVANJA ** Otkucajte / i onda izraz koji želite da potražite. ** @@ -512,7 +512,7 @@ NAPOMENA: U donjem desnom uglu mo zajedno sa kursorom na dnu ekrana kao i kod komande : . 2. Sada otkucajte 'grrreška' . (Bez razmaka i navodnika.) - To je reè koju tražite. + To je rec koju tražite. 3. Za ponovno traženje istog izraza, otkucajte n . Za traženje istog izraza u suprotnom smeru, otkucajte N . @@ -524,56 +524,56 @@ NAPOMENA: U donjem desnom uglu mo ---> "grrreška" je pogrešno; umesto grrreška treba da stoji greška. -NAPOMENA: Ako pretraga doðe do kraja teksta traženje æe se nastaviti od - njegovog poèetka osim ako je opcija 'wrapscan' iskljuèena. +NAPOMENA: Ako pretraga dode do kraja teksta traženje ce se nastaviti od + njegovog pocetka osim ako je opcija 'wrapscan' iskljucena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRAŽENJE PARA ZAGRADE + Lekcija 1.4.3: TRAŽENJE PARA ZAGRADE ** Otkucajte % za nalaženje para ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { - otvorenih zagrada u redu oznaèenom sa --->. + otvorenih zagrada u redu oznacenom sa --->. 2. Otkucajte znak % . - 3. Kursor æe se pomeriti na odgovarajuæu zatvorenu zagradu. + 3. Kursor ce se pomeriti na odgovarajucu zatvorenu zagradu. 4. Otkucajte % da pomerite kursor na prvu zagradu u paru. 5. Pomerite kursor na neku od (,),[,],{ ili } i ponovite komandu % . ----> Red ( testiranja obiènih ( [ uglastih ] i { vitièastih } zagrada.)) +---> Red ( testiranja obicnih ( [ uglastih ] i { viticastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: KOMANDA ZAMENE + Lekcija 1.4.4: KOMANDA ZAMENE ** Otkucajte :s/staro/novo/g da zamenite 'staro' za 'novo'. ** - 1. Pomerite kursor na red oznaèen sa --->. + 1. Pomerite kursor na red oznacen sa --->. 2. Otkucajte :s/rdi/ri/ . Primetite da ova komanda zamenjuje samo prvo "rdi" u redu. - 3. Otkucajte :s/rdi/ri/g . Dodavanje opcije g znaèi da æe se komanda + 3. Otkucajte :s/rdi/ri/g . Dodavanje opcije g znaci da ce se komanda izvršiti u celom redu, zamenom svih pojava niza "rdi". ---> rdiba rdibi grdize rep. - 4. Za zamenu svih izraza izmeðu neka dva reda, + 4. Za zamenu svih izraza izmedu neka dva reda, otkucajte :#,#s/staro/novo/g gde su #,# krajnji brojevi redova u opsegu - u kome æe se obaviti zamena. + u kome ce se obaviti zamena. Otkucajte :%s/staro/novo/g za zamenu svih izraza u celom tekstu. Otkucajte :%s/staro/novo/gc za nalaženje svih izraza u tekstu i potvrdu zamene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 4 + REZIME lekcije 1.4 1. CTRL-G prikazuje poziciju kursora u tekstu i status fajla. @@ -585,7 +585,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! Kucanjem ? sa izrazom taj izraz se traži UNAZAD. Posle komande traženja koristite n za nalaženje izraza u istom smeru, a N za nalaženje u suprotnom smeru. - CTRL-O vraæa kursor na prethodnu poziciju, a CTRL-I na narednu. + CTRL-O vraca kursor na prethodnu poziciju, a CTRL-I na narednu. 3. Kucanjem % kad je kursor na zagradi on se pomera na njen par. @@ -596,53 +596,53 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! Za potvrdu svake zamene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVRŠAVANJE SPOLJAŠNJIH KOMANDI + Lekcija 1.5.1: IZVRŠAVANJE SPOLJAŠNJIH KOMANDI ** Otkucajte :! pa spoljašnju komandu koju želite da izvršite. ** 1. Otkucajte poznatu komandu : da biste namestili kursor na dno - ekrana. Time omoguæavate unos komande u komandnoj liniji editora. + ekrana. Time omogucavate unos komande u komandnoj liniji editora. - 2. Otkucajte znak ! (uzviènik). Ovime omoguæavate + 2. Otkucajte znak ! (uzvicnik). Ovime omogucavate izvršavanje bilo koje spoljašnje komande. - 3. Kao primer otkucajte ls posle ! i pritisnite . Ovo æe + 3. Kao primer otkucajte ls posle ! i pritisnite . Ovo ce prikazati sadržaj direktorijuma, kao da ste na komandnom promptu. Otkucajte :!dir ako :!ls ne radi. -NAPOMENA: Na ovaj naèin moguæe je izvršiti bilo koju spoljašnju komandu, +NAPOMENA: Na ovaj nacin moguce je izvršiti bilo koju spoljašnju komandu, zajedno sa njenim argumentima. NAPOMENA: Sve : komande se izvršavaju pošto pritisnete . - U daljem tekstu to neæemo uvek napominjati. + U daljem tekstu to necemo uvek napominjati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VIŠE O SNIMANJU FAJLOVA + Lekcija 1.5.2: VIŠE O SNIMANJU FAJLOVA ** Za snimanje promena, otkucajte :w IME_FAJLA . ** 1. Otkucajte :!dir ili :!ls za pregled sadržaja direktorijuma. - Veæ znate da morate pritisnuti posle toga. + Vec znate da morate pritisnuti posle toga. 2. Izaberite ime fajla koji još ne postoji, npr. TEST. 3. Otkucajte: :w TEST (gde je TEST ime koje ste izabrali.) - 4. Time æete snimiti ceo fajl (Vim Tutor) pod imenom TEST. + 4. Time cete snimiti ceo fajl (Vim Tutor) pod imenom TEST. Za proveru, otkucajte opet :!dir ili :!ls za pregled sadržaja direktorijuma. NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , - tekst bi bio taèna kopija ovog fajla u trenutku kad ste + tekst bi bio tacna kopija ovog fajla u trenutku kad ste ga snimili. - 5. Izbrišite fajl tako što æete otkucati (MS-DOS): :!del TEST + 5. Izbrišite fajl tako što cete otkucati (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SNIMANJE OZNAÈENOG TEKSTA + Lekcija 1.5.3: SNIMANJE OZNACENOG TEKSTA ** Da biste snimili deo teksta, otkucajte v pokret :w IME_FAJLA ** @@ -650,45 +650,45 @@ NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , 1. Pomerite kursor na ovu liniju. 2. Pritisnite v i pomerite kursor pet redova ispod. Primetite da je - tekst oznaèen inverzno. + tekst oznacen inverzno. - 3. Pritisnite : . Na dnu ekrana pojaviæe se :'<,'> . + 3. Pritisnite : . Na dnu ekrana pojavice se :'<,'> . 4. Otkucajte w TEST , gde je TEST ime fajla koji još ne postoji. Proverite da zaista piše :'<,'>w TEST pre nego što pritisnete . - 5. Vim æe snimiti oznaèeni tekst u TEST. Proverite sa :!dir ili !ls . - Nemojte još brisati fajl! Koristiæemo ga u narednoj lekciji. + 5. Vim ce snimiti oznaceni tekst u TEST. Proverite sa :!dir ili !ls . + Nemojte još brisati fajl! Koristicemo ga u narednoj lekciji. -NAPOMENA: Komanda v zapoèinje vizuelno oznaèavanje. Možete pomerati kursor - i tako menjati velièinu oznaèenog teksta. Onda možete upotrebiti - operatore nad tekstom. Na primer, d æe izbrisati oznaèeni tekst. +NAPOMENA: Komanda v zapocinje vizuelno oznacavanje. Možete pomerati kursor + i tako menjati velicinu oznacenog teksta. Onda možete upotrebiti + operatore nad tekstom. Na primer, d ce izbrisati oznaceni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÈITAVANJE FAJLA U TEKST + Lekcija 1.5.4: UCITAVANJE FAJLA U TEKST ** Za ubacivanje sadržaja fajla, otkucajte :r IME_FAJLA ** 1. Postavite kursor iznad ove linije. -NAPOMENA: Pošto izvršite 2. korak videæete tekst iz lekcije 5.3. Tada +NAPOMENA: Pošto izvršite 2. korak videcete tekst iz lekcije 1.5.3. Tada pomerite kursor DOLE da biste ponovo videli ovu lekciju. - 2. Uèitajte fajl TEST koristeæi komandu :r TEST gde je TEST ime fajla - koje ste koristili u prethodnoj lekciji. Sadržaj uèitanog fajla je - ubaèen ispod kursora. + 2. Ucitajte fajl TEST koristeci komandu :r TEST gde je TEST ime fajla + koje ste koristili u prethodnoj lekciji. Sadržaj ucitanog fajla je + ubacen ispod kursora. - 3. Da biste proverili da je fajl uèitan, vratite kursor unazad i - primetite dve kopije lekcije 5.3, originalnu i onu iz fajla. + 3. Da biste proverili da je fajl ucitan, vratite kursor unazad i + primetite dve kopije lekcije 1.5.3, originalnu i onu iz fajla. -NAPOMENA: Takoðe možete uèitati izlaz spoljašnje komande. Na primer, - :r !ls æe uèitati izlaz komande ls i postaviti ga ispod +NAPOMENA: Takode možete ucitati izlaz spoljašnje komande. Na primer, + :r !ls ce ucitati izlaz komande ls i postaviti ga ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 5 + REZIME lekcije 1.5 1. :!komanda izvršava spoljašnju komandu. @@ -700,24 +700,24 @@ NAPOMENA: Tako 2. :w FAJL zapisuje trenutni tekst na disk pod imenom FAJL. - 3. v pokret :w IME_FAJLA snima vizuelno oznaèene redove u fajl + 3. v pokret :w IME_FAJLA snima vizuelno oznacene redove u fajl IME_FAJLA. - 4. :r IME_FAJLA uèitava fajl IME_FAJLA sa diska i stavlja + 4. :r IME_FAJLA ucitava fajl IME_FAJLA sa diska i stavlja njegov sadržaj ispod kursora. - 5. :r !dir uèitava izlaz komande dir i postavlja ga ispod kursora. + 5. :r !dir ucitava izlaz komande dir i postavlja ga ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: KOMANDA OTVORI + Lekcija 1.6.1: KOMANDA OTVORI ** Pritisnite o da biste otvorili red ispod kursora i prešli u Insert mod. ** - 1. Pomerite kursor na sledeæi red oznaèen sa --->. + 1. Pomerite kursor na sledeci red oznacen sa --->. 2. Otkucajte malo o da biste otvorili novi red ISPOD kursora i prešli u Insert mod. @@ -728,42 +728,42 @@ NAPOMENA: Tako ---> Kad pritisnete o kursor prelazi u novootvoreni red u Insert modu. 4. Za otvaranje reda IZNAD kursora, umesto malog otkucajte veliko O . - Isprobajte na donjem redu oznaèenom sa --->. + Isprobajte na donjem redu oznacenom sa --->. ---> Otvorite red iznad ovog kucanjem velikog O dok je kursor u ovom redu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: KOMANDA DODAJ + Lekcija 1.6.2: KOMANDA DODAJ ** Otkucajte a za dodavanje teksta IZA kursora. ** - 1. Pomerite kursor na poèetak sledeæeg reda oznaèenog sa --->. + 1. Pomerite kursor na pocetak sledeceg reda oznacenog sa --->. - 2. Kucajte e dok kursor ne doðe na kraj reèi re . + 2. Kucajte e dok kursor ne dode na kraj reci re . 3. Otkucajte a (malo) da biste dodali tekst IZA kursora. - 4. Dopunite reè kao što je u redu ispod. Pritisnite za izlazak + 4. Dopunite rec kao što je u redu ispod. Pritisnite za izlazak iz Insert moda. - 5. Sa e preðite na narednu nepotpunu reè i ponovite korake 3 i 4. + 5. Sa e predite na narednu nepotpunu rec i ponovite korake 3 i 4. ----> Ovaj re omoguæava ve dodav teksta u nekom redu. ----> Ovaj red omoguæava vežbanje dodavanja teksta u nekom redu. +---> Ovaj re omogucava ve dodav teksta u nekom redu. +---> Ovaj red omogucava vežbanje dodavanja teksta u nekom redu. NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina - razlika je u poziciji od koje æe se tekst ubacivati. + razlika je u poziciji od koje ce se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÈIN ZAMENE + Lekcija 1.6.3: DRUGI NACIN ZAMENE ** Otkucajte veliko R da biste zamenili više od jednog znaka. ** - 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. - Pomerite kursor na poèetak prvog xxx . + 1. Pomerite kursor na prvi sledeci red oznacen sa --->. + Pomerite kursor na pocetak prvog xxx . 2. Pritisnite R i otkucajte broj koji je red ispod, tako da zameni xxx . @@ -777,10 +777,10 @@ NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina ---> Dodavanje 123 na 456 daje 579. NAPOMENA: Replace mod je kao Insert mod, s tom razlikom što svaki - uneti znak briše veæ postojeæi. + uneti znak briše vec postojeci. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LEPLJENJE TEKSTA + Lekcija 1.6.4: KOPIRANJE I LEPLJENJE TEKSTA ** Koristite operator y za kopiranje a p za lepljenje teksta. ** @@ -789,44 +789,44 @@ NAPOMENA: Replace mod je kao Insert mod, s tom razlikom 2. Aktivirajte Visual mod sa v i pomerite kursor sve do ispred "prvi". - 3. Pritisnite y da biste kopirali oznaèeni tekst u interni bafer. + 3. Pritisnite y da biste kopirali oznaceni tekst u interni bafer. - 4. Pomerite kursor do kraja sledeæeg reda: j$ + 4. Pomerite kursor do kraja sledeceg reda: j$ 5. Pritisnite p da biste zalepili tekst. Onda otkucajte: a drugi . - 6. Upotrebite Visual mod da oznaèite " red.", kopirajte sa y , kursor - pomerite na kraj sledeæeg reda sa j$ i tamo zalepite tekst sa p . + 6. Upotrebite Visual mod da oznacite " red.", kopirajte sa y , kursor + pomerite na kraj sledeceg reda sa j$ i tamo zalepite tekst sa p . ---> a) ovo je prvi red. b) -NAPOMENA: takoðe možete koristiti y kao operator; yw kopira jednu reè. +NAPOMENA: takode možete koristiti y kao operator; yw kopira jednu rec. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: POSTAVLJANJE OPCIJA + Lekcija 1.6.5: POSTAVLJANJE OPCIJA - ** Postavite opciju tako da traženje i zamena ignorišu velièinu slova ** + ** Postavite opciju tako da traženje i zamena ignorišu velicinu slova ** - 1. Potražite reè 'razlika': /razlika + 1. Potražite rec 'razlika': /razlika Ponovite nekoliko puta pritiskom na n . 2. Aktivirajte opciju 'ic' (Ignore case): :set ic - 3. Ponovo potražite reè 'razlika' pritiskom na n - Primetite da su sada pronaðeni i RAZLIKA i Razlika. + 3. Ponovo potražite rec 'razlika' pritiskom na n + Primetite da su sada pronadeni i RAZLIKA i Razlika. 4. Aktivirajte opcije 'hlsearch' i 'incsearch': :set hls is - 5. Ponovo otkucajte komandu traženja i uoèite razlike: /razlika + 5. Ponovo otkucajte komandu traženja i uocite razlike: /razlika 6. Za deaktiviranje opcije ic kucajte: :set noic -NAPOMENA: Za neoznaèavanje pronaðenih izraza otkucajte: :nohlsearch -NAPOMENA: Ako želite da ne razlikujete velièinu slova u samo jednoj komandi +NAPOMENA: Za neoznacavanje pronadenih izraza otkucajte: :nohlsearch +NAPOMENA: Ako želite da ne razlikujete velicinu slova u samo jednoj komandi traženja, dodajte \c u izraz: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 6 + REZIME lekcije 1.6 1. Pritisnite o za otvaranje reda ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje reda IZNAD kursora. @@ -834,7 +834,7 @@ NAPOMENA: Ako 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju reda. - 3. Komanda e pomera kursor na kraj reèi. + 3. Komanda e pomera kursor na kraj reci. 4. Operator y kopira tekst, p ga lepi. @@ -842,29 +842,29 @@ NAPOMENA: Ako 6. Kucanje ":set xxx" aktivira opciju "xxx". Neke opcije su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju - 'is' 'incsearch' prikazuje pronaðen tekst dok kucate izraz - 'hls' 'hlsearch' oznaèava inverzno sve pronaðene izraze + 'is' 'incsearch' prikazuje pronaden tekst dok kucate izraz + 'hls' 'hlsearch' oznacava inverzno sve pronadene izraze Možete koristite dugo ili kratko ime opcije. 7. Ispred imena opcije stavite "no" da je deaktivirate: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIJANJE POMOÆI + Lekcija 1.7.1: DOBIJANJE POMOCI - ** Koristite on-line sistem za pomoæ ** + ** Koristite on-line sistem za pomoc ** - Vim ima detaljan on-line sistem za pomoæ. Za poèetak, pokušajte nešto - od sledeæeg: + Vim ima detaljan on-line sistem za pomoc. Za pocetak, pokušajte nešto + od sledeceg: - pritisnite taster (ako ga imate na tastaturi) - pritisnite taster (ako ga imate na tastaturi) - otkucajte :help - Proèitajte tekst u prozoru pomoæi da biste nauèili pomoæ radi. + Procitajte tekst u prozoru pomoci da biste naucili pomoc radi. Kucanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. - Otkucajte :q da zatvorite prozor pomoæi. + Otkucajte :q da zatvorite prozor pomoci. - Pomoæ o praktièno bilo kojoj temi možete dobiti dodavanjem argumenta + Pomoc o prakticno bilo kojoj temi možete dobiti dodavanjem argumenta komandi ":help". Pokušajte ovo (ne zaboravite na kraju): :help w @@ -872,30 +872,30 @@ NAPOMENA: Ako :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE STARTNOG SKRIPTA + Lekcija 1.7.2: PRAVLJENJE STARTNOG SKRIPTA - ** Aktivirajte moguænosti editora ** + ** Aktivirajte mogucnosti editora ** - Vim ima mnogo više moguænosti nego Vi, ali veæina nije automatski - aktivirana. Za dodatne moguænosti napravite "vimrc" fajl. + Vim ima mnogo više mogucnosti nego Vi, ali vecina nije automatski + aktivirana. Za dodatne mogucnosti napravite "vimrc" fajl. 1. Otvorite "vimrc" fajl. Ovo zavisi od vašeg sistema: :e ~/.vimrc za Unix :e ~/_vimrc za MS-Windows - 2. Onda uèitajte primer sadržaja "vimrc" fajla: + 2. Onda ucitajte primer sadržaja "vimrc" fajla: :r $VIMRUNTIME/vimrc_example.vim 3. Snimite fajl sa: :w - Sledeæi put kada pokrenete Vim, bojenje sintakse teksta biæe + Sledeci put kada pokrenete Vim, bojenje sintakse teksta bice aktivirano. Sva svoja podešavanja možete dodati u "vimrc" fajl. Za više informacija otkucajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE + Lekcija 1.7.3: AUTOMATSKO DOVRŠAVANJE ** Dovršavanje komandne linije sa CTRL-D i ** @@ -904,35 +904,35 @@ NAPOMENA: Ako 2. Pogledajte koji fajlovi postoje u direktorijumu: :!ls ili :!dir - 3. Otkucajte poèetak komande: :e + 3. Otkucajte pocetak komande: :e - 4. Otkucajte CTRL-D i Vim æe prikazati spisak komandi koje poèinju sa "e". + 4. Otkucajte CTRL-D i Vim ce prikazati spisak komandi koje pocinju sa "e". - 5. Pritisnite i Vim æe dopuniti ime komande u ":edit". + 5. Pritisnite i Vim ce dopuniti ime komande u ":edit". - 6. Dodajte razmak i poèetak imena postojeæeg fajla: :edit FA + 6. Dodajte razmak i pocetak imena postojeceg fajla: :edit FA - 7. Pritisnite . Vim æe dopuniti ime fajla (ako je jedinstveno). + 7. Pritisnite . Vim ce dopuniti ime fajla (ako je jedinstveno). -NAPOMENA: Moguæe je dopuniti mnoge komande. Samo probajte CTRL-D i . - Naroèito je korisno za :help komande. +NAPOMENA: Moguce je dopuniti mnoge komande. Samo probajte CTRL-D i . + Narocito je korisno za :help komande. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 7 + REZIME lekcije 1.7 - 1. Otkucajte :help ili pritisnite ili za pomoæ. + 1. Otkucajte :help ili pritisnite ili za pomoc. - 2. Otkucajte :help komanda biste dobili pomoæ za tu komandu. + 2. Otkucajte :help komanda biste dobili pomoc za tu komandu. 3. Otkucajte CTRL-W CTRL-W za prelazak u drugi prozor. - 4. Otkucajte :q da zatvorite prozor pomoæi. + 4. Otkucajte :q da zatvorite prozor pomoci. 5. Napravite vimrc startni skript za aktiviranje podešavanja koja vam odgovaraju. - 6. Dok kucate neku od : komandi, pritisnite CTRL-D da biste videli moguæe + 6. Dok kucate neku od : komandi, pritisnite CTRL-D da biste videli moguce vrednosti. Pritisnite da odaberete jednu od njih. @@ -941,30 +941,30 @@ NAPOMENA: Mogu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ovim je priruènik završen. Njegov cilj je bio kratak pregled Vim editora, - koliko da omoguæi njegovo relativno jednostavno korišæenje. Priruènik nije - potpun, jer Vim ima mnogo više komandi. Kao sledeæe, proèitajte priruènik: + Ovim je prirucnik završen. Njegov cilj je bio kratak pregled Vim editora, + koliko da omoguci njegovo relativno jednostavno korišcenje. Prirucnik nije + potpun, jer Vim ima mnogo više komandi. Kao sledece, procitajte prirucnik: ":help user-manual". - Za dalje èitanje i uèenje, preporuèujemo knjigu: + Za dalje citanje i ucenje, preporucujemo knjigu: Vim - Vi Improved - by Steve Oualline - Izdavaè: New Riders - Prva knjiga potpuno posveæena Vim-u. Naroèito korisna za poèetnike. + Izdavac: New Riders + Prva knjiga potpuno posvecena Vim-u. Narocito korisna za pocetnike. Ima mnoštvo primera i slika. Vidite https://iccf-holland.org/click5.html - Sledeæa knjiga je starija i više govori o Vi-u nego o Vim-u, ali je takoðe - preporuèujemo: + Sledeca knjiga je starija i više govori o Vi-u nego o Vim-u, ali je takode + preporucujemo: Learning the Vi Editor - by Linda Lamb - Izdavaè: O'Reilly & Associates Inc. + Izdavac: O'Reilly & Associates Inc. Dobra knjiga iz koje možete saznati skoro sve što možete raditi u Vi-ju. Šesto izdanje ima i informacija o Vim-u. - Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware, - Colorado School of Mines koristeæi ideje Charlesa Smitha, + Ovaj prirucnik su napisali: Michael C. Pierce i Robert K. Ware, + Colorado School of Mines koristeci ideje Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. - Prilagoðavanje za Vim uradio je Bram Moolenaar. + Prilagodavanje za Vim uradio je Bram Moolenaar. Prevod na srpski: Ivan Nejgebauer Verzija 1.0, maj/juni 2014. diff --git a/runtime/tutor/tutor.sr.utf-8 b/runtime/tutor/tutor1.sr.utf-8 similarity index 93% rename from runtime/tutor/tutor.sr.utf-8 rename to runtime/tutor/tutor1.sr.utf-8 index 5bad8483c4..b84e67847e 100644 --- a/runtime/tutor/tutor.sr.utf-8 +++ b/runtime/tutor/tutor1.sr.utf-8 @@ -18,10 +18,10 @@ ih nauÄili. Ako samo Äitate tekst, zaboravićete komande! Ako je Caps Lock ukljuÄen ISKLJUÄŒITE ga. Pritisnite taster j dovoljno - puta da lekcija 1.1 cela stane na ekran. + puta da lekcija 1.1.1 cela stane na ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMERANJE KURSORA + Lekcija 1.1.1: POMERANJE KURSORA ** Za pomeranje kursora, pritiskajte tastere h,j,k,l kako je prikazano ** @@ -35,7 +35,7 @@ 2. Pritisnite taster (j) dok ne poÄne da se ponavlja. Sada znate kako da doÄ‘ete do naredne lekcije. - 3. Koristeći taster j preÄ‘ite na lekciju 1.2. + 3. Koristeći taster j preÄ‘ite na lekciju 1.1.2. NAPOMENA: Ako niste sigurni Å¡ta ste zapravo pritisnuli, pritisnite za prelazak u Normal mod i pokuÅ¡ajte ponovo. @@ -44,7 +44,7 @@ NAPOMENA: Strelice takoÄ‘e pomeraju kursor, ali korišćenje tastera hjkl je znatno brže, kad se jednom naviknete na njih. Zaista! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZAK IZ VIM-a + Lekcija 1.1.2: IZLAZAK IZ VIM-a !! UPOZORENJE: Pre izvoÄ‘enja bilo kog koraka, proÄitajte celu lekciju!! @@ -63,11 +63,11 @@ NAPOMENA: Strelice takoÄ‘e pomeraju kursor, ali korišćenje tastera hjkl je NAPOMENA: :q! poniÅ¡tava sve izmene koje ste napravili. U narednim lekcijama nauÄićete kako da saÄuvate izmene. - 5. Pomerite kursor na lekciju 1.3. + 5. Pomerite kursor na lekciju 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: IZMENA TEKSTA - BRISANJE + Lekcija 1.1.3: IZMENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** @@ -83,14 +83,14 @@ NAPOMENA: :q! poniÅ¡tava sve izmene koje ste napravili. ---> RRRibaa riibi grizzze rrreepp. - 5. Kad ispravite red, preÄ‘ite na lekciju 1.4. + 5. Kad ispravite red, preÄ‘ite na lekciju 1.1.4. NAPOMENA: Dok koristite priruÄnik, nemojte uÄiti komande napamet, već vežbajte njihovu primenu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: IZMENA TEKSTA - UBACIVANJE + Lekcija 1.1.4: IZMENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** @@ -113,7 +113,7 @@ NAPOMENA: Dok koristite priruÄnik, nemojte uÄiti komande napamet, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: IZMENA TEKSTA - DODAVANJE + Lekcija 1.1.5: IZMENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** @@ -134,16 +134,16 @@ NAPOMENA: Dok koristite priruÄnik, nemojte uÄiti komande napamet, ---> Deo teksta nedostaje Deo teksta nedostaje i ovde. - 5. PreÄ‘ite na lekciju 1.6. + 5. PreÄ‘ite na lekciju 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: IZMENA FAJLA + Lekcija 1.1.6: IZMENA FAJLA ** Upotrebite :wq za snimanje teksta i izlazak iz editora. ** !! UPOZORENJE: Pre izvoÄ‘enja bilo kog koraka, proÄitajte celu lekciju!! - 1. IzaÄ‘ite iz editora kao u lekciji 1.2: :q! + 1. IzaÄ‘ite iz editora kao u lekciji 1.1.2: :q! 2. Na komandnom promptu unesite sledeću komandu: vim tutor 'vim' je komanda za pokretanja Vim editora, 'tutor' je ime fajla koji @@ -159,7 +159,7 @@ NAPOMENA: Dok koristite priruÄnik, nemojte uÄiti komande napamet, izvrÅ¡ite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 1 + REZIME lekcije 1.1 1. Kursor se pomera strelicama ili pomoću tastera hjkl . @@ -179,10 +179,10 @@ NAPOMENA: Dok koristite priruÄnik, nemojte uÄiti komande napamet, NAPOMENA: Pritiskom na prebacujete Vim u Normal mod i prekidate neželjenu ili delimiÄno izvrÅ¡enu komandu. -Nastavite sa lekcijom 2. +Nastavite sa lekcijom 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA + Lekcija 1.2.1: NAREDBE BRISANJA ** Otkucajte dw za brisanje reÄi. ** @@ -198,14 +198,14 @@ Nastavite sa lekcijom 2. NAPOMENA: Slovo d će se pojaviti na dnu ekrana kad ga otkucate. Vim Äeka da otkucate w . Ako je prikazano neko drugo slovo, pogreÅ¡ili ste u kucanju; pritisnite i pokuÅ¡ajte ponovo. (Ako se ne pojavi - niÅ¡ta, možda je iskljuÄena opcija 'showcmd': vidi lekciju 6.5.) + niÅ¡ta, možda je iskljuÄena opcija 'showcmd': vidi lekciju 1.6.5.) ---> Neke reÄi smeÅ¡no ne pripadaju na papir ovoj reÄenici. 5. Ponavljajte korake 3 i 4 dok ne ispravite reÄenicu, pa - preÄ‘ite na lekciju 2.2. + preÄ‘ite na lekciju 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JOÅ  BRISANJA + Lekcija 1.2.2: JOÅ  BRISANJA ** Otkucajte d$ za brisanje znakova do kraja reda. ** @@ -221,14 +221,14 @@ NAPOMENA: Slovo d će se pojaviti na dnu ekrana kad ga otkucate. Vim Äeka ---> Neko je uneo kraj ovog reda dvaput. kraj ovog reda dvaput. - 5. PreÄ‘ite na lekciju 2.3 za podrobnije objaÅ¡njenje. + 5. PreÄ‘ite na lekciju 1.2.3 za podrobnije objaÅ¡njenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: O OPERATORIMA I POKRETIMA + Lekcija 1.2.3: O OPERATORIMA I POKRETIMA Mnoge komande za izmenu teksta sastoje se od operatora i pokreta. @@ -251,7 +251,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operatora, kursor se pomera kao Å¡to je opisano. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORIŠĆENJE BROJANJA ZA POKRETE + Lekcija 1.2.4: KORIŠĆENJE BROJANJA ZA POKRETE ** UnoÅ¡enjem nekog broja pre pokreta, pokret se izvrÅ¡ava taj broj puta. ** @@ -268,13 +268,13 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> ReÄenica sa reÄima po kojoj možete pomerati kursor. - 6. PreÄ‘ite na lekciju 2.5. + 6. PreÄ‘ite na lekciju 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORIŠĆENJE BROJANJA ZA VEĆE BRISANJE + Lekcija 1.2.5: KORIŠĆENJE BROJANJA ZA VEĆE BRISANJE ** UnoÅ¡enje nekog broja s operatorom ponavlja operator taj broj puta. ** @@ -297,7 +297,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERACIJE NAD REDOVIMA + Lekcija 1.2.6: OPERACIJE NAD REDOVIMA ** Otkucajte dd za brisanje celog reda. ** @@ -320,7 +320,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: PONIÅ TAVANJE PROMENA + Lekcija 1.2.7: PONIÅ TAVANJE PROMENA ** Pritisnite u za poniÅ¡tavanje poslednje komande, U za ceo red. ** @@ -339,11 +339,11 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> Iiisspravite greÅ¡ke uu ovvom redu ii pooniÅ¡titeee ih. - 8. Ovo su veoma korisne komande. PreÄ‘ite na rezime lekcije 2. + 8. Ovo su veoma korisne komande. PreÄ‘ite na rezime lekcije 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 2 + REZIME lekcije 1.2 1. Brisanje od kursora do sledeće reÄi: dw @@ -366,7 +366,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez Za vraćanja promena, otkucajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: KOMANDA POSTAVLJANJA + Lekcija 1.3.1: KOMANDA POSTAVLJANJA ** Otkucajte p da postavite prethodno izbrisan tekst iza kursora. ** @@ -389,7 +389,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: KOMANDA ZAMENE + Lekcija 1.3.2: KOMANDA ZAMENE ** Otkucajte rx da zamenite znak ispod kursora slovom x . ** @@ -406,13 +406,13 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> Kedi ju ovej red ugaÅ¡en, nako je protresao pustaÅ¡ne testere! ---> Kada je ovaj red unoÅ¡en, neko je pritiskao pogreÅ¡ne tastere! - 5. PreÄ‘ite na lekciju 3.2. + 5. PreÄ‘ite na lekciju 1.3.3. NAPOMENA: Setite se da treba da uÄite vežbanjem, ne pamćenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR IZMENE + Lekcija 1.3.3: OPERATOR IZMENE ** Za izmenu teksta do kraja reÄi, otkucajte ce .** @@ -435,7 +435,7 @@ NAPOMENA: Setite se da treba da uÄite vežbanjem, ne pamćenjem. UoÄite da ce briÅ¡e reÄ i postavlja editor u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: DALJE IZMENE UPOTREBOM c + Lekcija 1.3.4: DALJE IZMENE UPOTREBOM c ** Komanda izmene se koristi sa istim pokretima kao i brisanje. ** @@ -458,7 +458,7 @@ UoÄite da ce briÅ¡e reÄ i postavlja editor u Insert mod. NAPOMENA: Za ispravljanje greÅ¡aka možete koristiti Backspace . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 3 + REZIME lekcije 1.3 1. Za postavljanje teksta koji ste upravo izbrisali, pritisnite p . Ovo @@ -481,7 +481,7 @@ PreÄ‘ite na narednu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS FAJLA + Lekcija 1.4.1: POZICIJA KURSORA I STATUS FAJLA ** Pritisnite CTRL-G za prikaz pozicije kursora u tekstu i status fajla. Pritisnite G za pomeranje kursora na neki red u tekstu. ** @@ -493,7 +493,7 @@ NAPOMENA: ProÄitajte celu lekciju pre izvoÄ‘enja bilo kog koraka!! kursora u tekstu. Zapamtite broj reda za 3. korak. NAPOMENA: U donjem desnom uglu može se videti poziciju kursora ako je - ukljuÄena opcija 'ruler' (vidi :help ruler ili lekciju 6.5.) + ukljuÄena opcija 'ruler' (vidi :help ruler ili lekciju 1.6.5.) 2. Pritisnite G za pomeranje kursora na kraj teksta. Pritisnite 1G ili gg za pomranje kursora na poÄetak teksta. @@ -504,7 +504,7 @@ NAPOMENA: U donjem desnom uglu može se videti poziciju kursora ako je 4. Ako ste spremni, izvrÅ¡ite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: KOMANDE PRETRAŽIVANJA + Lekcija 1.4.2: KOMANDE PRETRAŽIVANJA ** Otkucajte / i onda izraz koji želite da potražite. ** @@ -527,7 +527,7 @@ NAPOMENA: U donjem desnom uglu može se videti poziciju kursora ako je NAPOMENA: Ako pretraga doÄ‘e do kraja teksta traženje će se nastaviti od njegovog poÄetka osim ako je opcija 'wrapscan' iskljuÄena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRAŽENJE PARA ZAGRADE + Lekcija 1.4.3: TRAŽENJE PARA ZAGRADE ** Otkucajte % za nalaženje para ), ] ili } . ** @@ -550,7 +550,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: KOMANDA ZAMENE + Lekcija 1.4.4: KOMANDA ZAMENE ** Otkucajte :s/staro/novo/g da zamenite 'staro' za 'novo'. ** @@ -573,7 +573,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! potvrdu zamene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 4 + REZIME lekcije 1.4 1. CTRL-G prikazuje poziciju kursora u tekstu i status fajla. @@ -596,7 +596,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! Za potvrdu svake zamene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVRÅ AVANJE SPOLJAÅ NJIH KOMANDI + Lekcija 1.5.1: IZVRÅ AVANJE SPOLJAÅ NJIH KOMANDI ** Otkucajte :! pa spoljaÅ¡nju komandu koju želite da izvrÅ¡ite. ** @@ -619,7 +619,7 @@ NAPOMENA: Sve : komande se izvrÅ¡avaju poÅ¡to pritisnete . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VIÅ E O SNIMANJU FAJLOVA + Lekcija 1.5.2: VIÅ E O SNIMANJU FAJLOVA ** Za snimanje promena, otkucajte :w IME_FAJLA . ** @@ -642,7 +642,7 @@ NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SNIMANJE OZNAÄŒENOG TEKSTA + Lekcija 1.5.3: SNIMANJE OZNAÄŒENOG TEKSTA ** Da biste snimili deo teksta, otkucajte v pokret :w IME_FAJLA ** @@ -665,14 +665,14 @@ NAPOMENA: Komanda v zapoÄinje vizuelno oznaÄavanje. Možete pomerati kurso operatore nad tekstom. Na primer, d će izbrisati oznaÄeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÄŒITAVANJE FAJLA U TEKST + Lekcija 1.5.4: UÄŒITAVANJE FAJLA U TEKST ** Za ubacivanje sadržaja fajla, otkucajte :r IME_FAJLA ** 1. Postavite kursor iznad ove linije. -NAPOMENA: PoÅ¡to izvrÅ¡ite 2. korak videćete tekst iz lekcije 5.3. Tada +NAPOMENA: PoÅ¡to izvrÅ¡ite 2. korak videćete tekst iz lekcije 1.5.3. Tada pomerite kursor DOLE da biste ponovo videli ovu lekciju. 2. UÄitajte fajl TEST koristeći komandu :r TEST gde je TEST ime fajla @@ -680,7 +680,7 @@ NAPOMENA: PoÅ¡to izvrÅ¡ite 2. korak videćete tekst iz lekcije 5.3. Tada ubaÄen ispod kursora. 3. Da biste proverili da je fajl uÄitan, vratite kursor unazad i - primetite dve kopije lekcije 5.3, originalnu i onu iz fajla. + primetite dve kopije lekcije 1.5.3, originalnu i onu iz fajla. NAPOMENA: TakoÄ‘e možete uÄitati izlaz spoljaÅ¡nje komande. Na primer, :r !ls će uÄitati izlaz komande ls i postaviti ga ispod @@ -688,7 +688,7 @@ NAPOMENA: TakoÄ‘e možete uÄitati izlaz spoljaÅ¡nje komande. Na primer, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 5 + REZIME lekcije 1.5 1. :!komanda izvrÅ¡ava spoljaÅ¡nju komandu. @@ -711,7 +711,7 @@ NAPOMENA: TakoÄ‘e možete uÄitati izlaz spoljaÅ¡nje komande. Na primer, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: KOMANDA OTVORI + Lekcija 1.6.1: KOMANDA OTVORI ** Pritisnite o da biste otvorili red ispod kursora @@ -734,7 +734,7 @@ NAPOMENA: TakoÄ‘e možete uÄitati izlaz spoljaÅ¡nje komande. Na primer, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: KOMANDA DODAJ + Lekcija 1.6.2: KOMANDA DODAJ ** Otkucajte a za dodavanje teksta IZA kursora. ** @@ -757,7 +757,7 @@ NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina razlika je u poziciji od koje će se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÄŒIN ZAMENE + Lekcija 1.6.3: DRUGI NAÄŒIN ZAMENE ** Otkucajte veliko R da biste zamenili viÅ¡e od jednog znaka. ** @@ -780,7 +780,7 @@ NAPOMENA: Replace mod je kao Insert mod, s tom razlikom Å¡to svaki uneti znak briÅ¡e već postojeći. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LEPLJENJE TEKSTA + Lekcija 1.6.4: KOPIRANJE I LEPLJENJE TEKSTA ** Koristite operator y za kopiranje a p za lepljenje teksta. ** @@ -803,7 +803,7 @@ NAPOMENA: Replace mod je kao Insert mod, s tom razlikom Å¡to svaki NAPOMENA: takoÄ‘e možete koristiti y kao operator; yw kopira jednu reÄ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: POSTAVLJANJE OPCIJA + Lekcija 1.6.5: POSTAVLJANJE OPCIJA ** Postavite opciju tako da traženje i zamena ignoriÅ¡u veliÄinu slova ** @@ -826,7 +826,7 @@ NAPOMENA: Za neoznaÄavanje pronaÄ‘enih izraza otkucajte: :nohlsearch NAPOMENA: Ako želite da ne razlikujete veliÄinu slova u samo jednoj komandi traženja, dodajte \c u izraz: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 6 + REZIME lekcije 1.6 1. Pritisnite o za otvaranje reda ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje reda IZNAD kursora. @@ -849,7 +849,7 @@ NAPOMENA: Ako želite da ne razlikujete veliÄinu slova u samo jednoj komandi 7. Ispred imena opcije stavite "no" da je deaktivirate: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIJANJE POMOĆI + Lekcija 1.7.1: DOBIJANJE POMOĆI ** Koristite on-line sistem za pomoć ** @@ -872,7 +872,7 @@ NAPOMENA: Ako želite da ne razlikujete veliÄinu slova u samo jednoj komandi :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE STARTNOG SKRIPTA + Lekcija 1.7.2: PRAVLJENJE STARTNOG SKRIPTA ** Aktivirajte mogućnosti editora ** @@ -895,7 +895,7 @@ NAPOMENA: Ako želite da ne razlikujete veliÄinu slova u samo jednoj komandi Za viÅ¡e informacija otkucajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVRÅ AVANJE + Lekcija 1.7.3: AUTOMATSKO DOVRÅ AVANJE ** DovrÅ¡avanje komandne linije sa CTRL-D i ** @@ -918,7 +918,7 @@ NAPOMENA: Moguće je dopuniti mnoge komande. Samo probajte CTRL-D i . NaroÄito je korisno za :help komande. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - REZIME lekcije 7 + REZIME lekcije 1.7 1. Otkucajte :help ili pritisnite ili za pomoć. diff --git a/runtime/tutor/tutor.sv b/runtime/tutor/tutor1.sv similarity index 93% rename from runtime/tutor/tutor.sv rename to runtime/tutor/tutor1.sv index 42836a801d..ab439910a1 100644 --- a/runtime/tutor/tutor.sv +++ b/runtime/tutor/tutor1.sv @@ -20,9 +20,9 @@ Försäkra dig nu om att din Caps-Lock tangent INTE är aktiv och tryck på j-tangenten tillräckligt många gånger för att förflytta markören så att - Lektion 1.1 fyller skärmen helt. + Lektion 1.1.1 fyller skärmen helt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: FLYTTA MARKÖREN + Lektion 1.1.1: FLYTTA MARKÖREN ** För att flytta markören, tryck på tangenterna h,j,k,l som indikerat. ** @@ -36,7 +36,7 @@ 2. Håll ned tangenten pil ned (j) tills att den repeterar. ---> Nu vet du hur du tar dig till nästa lektion. - 3. Flytta till Lektion 1.2, med hjälp av ned tangenten. + 3. Flytta till Lektion 1.1.2, med hjälp av ned tangenten. Notera: Om du är osäker på någonting du skrev, tryck för att placera dig dig i Normal-läge. Skriv sedan om kommandot. @@ -46,7 +46,7 @@ Notera: Piltangenterna borde ocks det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: STARTA OCH AVSLUTA VIM + Lektion 1.1.2: STARTA OCH AVSLUTA VIM !! NOTERA: Innan du utför någon av punkterna nedan, läs hela lektionen!! @@ -67,9 +67,9 @@ Notera: Piltangenterna borde ocks 4. Om du har memorerat dessa steg och känner dig självsäker, kör då stegen 1 till 3 för att avsluta och starta om redigeraren. Flytta sedan ned - markören till Lektion 1.3. + markören till Lektion 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEXT REDIGERING - BORTTAGNING + Lektion 1.1.3: TEXT REDIGERING - BORTTAGNING ** När du är i Normal-läge tryck x för att ta bort tecknet under markören. ** @@ -85,7 +85,7 @@ Notera: Piltangenterna borde ocks ---> Kkon hoppadee övverr måånen. - 5. Nu när raden är korrekt, gå till Lektion 1.4. + 5. Nu när raden är korrekt, gå till Lektion 1.1.4. NOTERA: När du går igenom den här handledningen, försök inte att memorera, lär genom användning. @@ -93,7 +93,7 @@ NOTERA: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEXT REDIGERING - INFOGNING + Lektion 1.1.4: TEXT REDIGERING - INFOGNING ** När du är i Normal-läge tryck i för att infoga text. ** @@ -117,7 +117,7 @@ NOTERA: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 1 SAMMANFATTNING + LEKTION 1.1 SAMMANFATTNING 1. Markören flyttas genom att använda piltangenterna eller hjkl-tangenterna. @@ -136,11 +136,11 @@ NOTERA: N NOTERA: Genom att trycka kommer du att placeras i Normal-läge eller avbryta ett delvis färdigskrivet kommando. -Fortsätt nu med Lektion 2. +Fortsätt nu med Lektion 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: BORTTAGNINGSKOMMANDON + Lektion 1.2.1: BORTTAGNINGSKOMMANDON ** Skriv dw för att radera till slutet av ett ord. ** @@ -158,12 +158,12 @@ Forts ---> Det är ett några ord roliga att som inte hör hemma i den här meningen. - 5. Upprepa stegen 3 och 4 tills meningen är korrekt och gå till Lektion 2.2. + 5. Upprepa stegen 3 och 4 tills meningen är korrekt och gå till Lektion 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: FLER BORTTAGNINGSKOMMANDON + Lektion 1.2.2: FLER BORTTAGNINGSKOMMANDON ** Skriv d$ för att radera till slutet på raden. ** @@ -179,14 +179,14 @@ Forts ---> Någon skrev slutet på den här raden två gånger. den här raden två gånger. - 5. Gå vidare till Lektion 2.3 för att förstå vad det är som händer. + 5. Gå vidare till Lektion 1.2.3 för att förstå vad det är som händer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: KOMMANDON OCH OBJEKT + Lesson 1.2.3: KOMMANDON OCH OBJEKT Syntaxen för d raderingskommandot är följande: @@ -210,7 +210,7 @@ NOTERA: F ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: ETT UNDANTAG TILL 'KOMMANDO-OBJEKT' + Lektion 1.2.4: ETT UNDANTAG TILL 'KOMMANDO-OBJEKT' ** Skriv dd för att radera hela raden. ** @@ -235,7 +235,7 @@ NOTERA: F ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: ÅNGRA-KOMMANDOT + Lektion 1.2.5: ÅNGRA-KOMMANDOT ** Skriv u för att ångra det senaste kommandona, U för att fixa en hel rad. ** @@ -253,13 +253,13 @@ NOTERA: F ---> Fiixa felen ppå deen häär meningen och återskapa dem med ångra. 8. Det här är väldigt användbara kommandon. Gå nu vidare till - Lektion 2 Sammanfattning. + Lektion 1.2 Sammanfattning. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 2 SAMMANFATTNING + LEKTION 1.2 SAMMANFATTNING 1. För att radera från markören till slutet av ett ord skriv: dw @@ -282,7 +282,7 @@ NOTERA: F För att ångra ångringar tryck: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: KLISTRA IN-KOMMANDOT + Lektion 1.3.1: KLISTRA IN-KOMMANDOT ** Skriv p för att klistra in den senaste raderingen efter markören. ** @@ -305,7 +305,7 @@ NOTERA: F ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: ERSÄTT-KOMMANDOT + Lesson 1.3.2: ERSÄTT-KOMMANDOT ** Skriv r och ett tecken för att ersätta tecknet under markören. ** @@ -321,14 +321,14 @@ NOTERA: F ---> När drn här ruden skrevs, trickte någon på fil knappar! ---> När den här raden skrevs, tryckte någon på fel knappar! - 5. Gå nu vidare till Lektion 3.2. + 5. Gå nu vidare till Lektion 1.3.2. NOTERA: Kom ihåg att du skall lära dig genom användning, inte genom memorering. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÄNDRA-KOMMANDOT + Lektion 1.3.3: ÄNDRA-KOMMANDOT ** För att ändra en del eller ett helt ord, skriv cw . ** @@ -352,7 +352,7 @@ Notera att cw inte bara ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: FLER ÄNDRINGAR MED c + Lektion 1.3.4: FLER ÄNDRINGAR MED c ** Ändra-kommandot används på samma objekt som radera. ** @@ -376,7 +376,7 @@ Notera att cw inte bara ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 3 SAMMANFATTNING + LEKTION 1.3 SAMMANFATTNING 1. För att ersätta text som redan har blivit raderad, skriv p . @@ -399,7 +399,7 @@ G ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: POSITION OCH FILSTATUS + Lektion 1.4.1: POSITION OCH FILSTATUS ** Tryck CTRL-g för att visa din position i filen och filstatusen. @@ -421,7 +421,7 @@ G ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: SÖK-KOMMANDOT + Lektion 1.4.2: SÖK-KOMMANDOT ** Skriv / följt av en fras för att söka efter frasen. ** @@ -443,7 +443,7 @@ Notera: N ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: SÖKNING EFTER MATCHANDE PARENTESER + Lektion 1.4.3: SÖKNING EFTER MATCHANDE PARENTESER ** Skriv % för att hitta en matchande ),], or } . ** @@ -468,7 +468,7 @@ Notera: Det h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: ETT SÄTT ATT ÄNDRA FEL + Lektion 1.4.4: ETT SÄTT ATT ÄNDRA FEL ** Skriv :s/gammalt/nytt/g för att ersätta "gammalt" med "nytt". ** @@ -491,7 +491,7 @@ Notera: Det h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 4 SAMMANFATTNING + LEKTION 1.4 SAMMANFATTNING 1. Ctrl-g visar din position i filen och filstatusen. @@ -514,7 +514,7 @@ Notera: Det h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: HUR MAN KÖR ETT EXTERNT KOMMANDO + Lektion 1.5.1: HUR MAN KÖR ETT EXTERNT KOMMANDO ** Skriv :! följt av ett externt kommando för att köra det kommandot. ** @@ -538,7 +538,7 @@ Notera: Alla :-kommandon m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MER OM ATT SPARA FILER + Lektion 1.5.2: MER OM ATT SPARA FILER ** För att spara ändringar gjorda i en fil, skriv :w FILNAMN. ** @@ -561,7 +561,7 @@ Notera: Om du skulle avsluta Vim och sedan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: ETT SELEKTIVT SPARA-KOMMANDO + Lektion 1.5.3: ETT SELEKTIVT SPARA-KOMMANDO ** För att spara en del av en fil, skriv :#,# w FILNAMN ** @@ -585,7 +585,7 @@ Notera: Om du skulle avsluta Vim och sedan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: TA EMOT OCH FÖRENA FILER + Lektion 1.5.4: TA EMOT OCH FÖRENA FILER ** För att infoga innehållet av en fil, skriv :r FILNAMN ** @@ -595,7 +595,7 @@ Notera: Om du skulle avsluta Vim och sedan 2. Placera markören högst upp på den här sidan. -NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 5.3. +NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 1.5.3. Flytta då NED till den här lektionen igen. 3. Ta nu emot din TEST-fil med kommandot :r TEST där TEST är namnet på @@ -604,12 +604,12 @@ NOTERA: Efter att du k NOTERA: Filen du tar emot placeras där markören är placerad. 4. För att verifiera att filen togs emot, gå tillbaka och notera att det nu - finns två kopior av Lektion 5.3, orginalet och filversionen. + finns två kopior av Lektion 1.5.3, orginalet och filversionen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 5 SAMMANFATTNING + LEKTION 1.5 SAMMANFATTNING 1. :!kommando kör ett externt kommando. @@ -632,7 +632,7 @@ NOTERA: Filen du tar emot placeras d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ÖPPNA-KOMMANDOT + Lektion 1.6.1: ÖPPNA-KOMMANDOT ** Skriv o för att öppna en rad under markören och placera dig i @@ -657,7 +657,7 @@ NOTERA: Filen du tar emot placeras d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: LÄGG TILL-KOMMANDOT + Lektion 1.6.2: LÄGG TILL-KOMMANDOT ** Skriv a för att infoga text EFTER markören. ** @@ -681,7 +681,7 @@ Notera: Detta undviker att beh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: EN ANNAN VERSION AV ERSÄTT + Lektion 1.6.3: EN ANNAN VERSION AV ERSÄTT ** Skriv ett stort R för att ersätta fler än ett tecken. ** @@ -706,7 +706,7 @@ Notera: Detta undviker att beh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: SÄTT FLAGGOR + Lektion 1.6.4: SÄTT FLAGGOR ** Sätt en flagga så att en sökning eller ersättning ignorerar storlek ** @@ -729,7 +729,7 @@ Notera: Detta undviker att beh 6. För att ta bort framhävningen av träffar, skriv :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 6 SAMMANFATTNING + LEKTION 1.6 SAMMANFATTNING 1. Genom att skriva o öpnnas en rad NEDANFÖR markören och markören placeras @@ -755,7 +755,7 @@ Notera: Detta undviker att beh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 7: ON-LINE HJÄLP-KOMMANDON + LEKTION 1.7: ON-LINE HJÄLP-KOMMANDON ** Använd on-line hjälpsystemet ** @@ -778,7 +778,7 @@ Notera: Detta undviker att beh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 8: SKAPA ETT UPPSTARTSSKRIPT + LEKTION 1.8: SKAPA ETT UPPSTARTSSKRIPT ** Aktivera Vim- funktioner ** diff --git a/runtime/tutor/tutor.sv.utf-8 b/runtime/tutor/tutor1.sv.utf-8 similarity index 93% rename from runtime/tutor/tutor.sv.utf-8 rename to runtime/tutor/tutor1.sv.utf-8 index c8cacc6240..10104c87ca 100644 --- a/runtime/tutor/tutor.sv.utf-8 +++ b/runtime/tutor/tutor1.sv.utf-8 @@ -20,9 +20,9 @@ Försäkra dig nu om att din Caps-Lock tangent INTE är aktiv och tryck pÃ¥ j-tangenten tillräckligt mÃ¥nga gÃ¥nger för att förflytta markören sÃ¥ att - Lektion 1.1 fyller skärmen helt. + Lektion 1.1.1 fyller skärmen helt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: FLYTTA MARKÖREN + Lektion 1.1.1: FLYTTA MARKÖREN ** För att flytta markören, tryck pÃ¥ tangenterna h,j,k,l som indikerat. ** @@ -36,7 +36,7 @@ 2. HÃ¥ll ned tangenten pil ned (j) tills att den repeterar. ---> Nu vet du hur du tar dig till nästa lektion. - 3. Flytta till Lektion 1.2, med hjälp av ned tangenten. + 3. Flytta till Lektion 1.1.2, med hjälp av ned tangenten. Notera: Om du är osäker pÃ¥ nÃ¥gonting du skrev, tryck för att placera dig dig i Normal-läge. Skriv sedan om kommandot. @@ -46,7 +46,7 @@ Notera: Piltangenterna borde ocksÃ¥ fungera. Men om du använder hjkl sÃ¥ komme det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: STARTA OCH AVSLUTA VIM + Lektion 1.1.2: STARTA OCH AVSLUTA VIM !! NOTERA: Innan du utför nÃ¥gon av punkterna nedan, läs hela lektionen!! @@ -67,9 +67,9 @@ Notera: Piltangenterna borde ocksÃ¥ fungera. Men om du använder hjkl sÃ¥ komme 4. Om du har memorerat dessa steg och känner dig självsäker, kör dÃ¥ stegen 1 till 3 för att avsluta och starta om redigeraren. Flytta sedan ned - markören till Lektion 1.3. + markören till Lektion 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEXT REDIGERING - BORTTAGNING + Lektion 1.1.3: TEXT REDIGERING - BORTTAGNING ** När du är i Normal-läge tryck x för att ta bort tecknet under markören. ** @@ -85,7 +85,7 @@ Notera: Piltangenterna borde ocksÃ¥ fungera. Men om du använder hjkl sÃ¥ komme ---> Kkon hoppadee övverr måånen. - 5. Nu när raden är korrekt, gÃ¥ till Lektion 1.4. + 5. Nu när raden är korrekt, gÃ¥ till Lektion 1.1.4. NOTERA: När du gÃ¥r igenom den här handledningen, försök inte att memorera, lär genom användning. @@ -93,7 +93,7 @@ NOTERA: När du gÃ¥r igenom den här handledningen, försök inte att memorera, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEXT REDIGERING - INFOGNING + Lektion 1.1.4: TEXT REDIGERING - INFOGNING ** När du är i Normal-läge tryck i för att infoga text. ** @@ -117,7 +117,7 @@ NOTERA: När du gÃ¥r igenom den här handledningen, försök inte att memorera, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 1 SAMMANFATTNING + LEKTION 1.1 SAMMANFATTNING 1. Markören flyttas genom att använda piltangenterna eller hjkl-tangenterna. @@ -136,11 +136,11 @@ NOTERA: När du gÃ¥r igenom den här handledningen, försök inte att memorera, NOTERA: Genom att trycka kommer du att placeras i Normal-läge eller avbryta ett delvis färdigskrivet kommando. -Fortsätt nu med Lektion 2. +Fortsätt nu med Lektion 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: BORTTAGNINGSKOMMANDON + Lektion 1.2.1: BORTTAGNINGSKOMMANDON ** Skriv dw för att radera till slutet av ett ord. ** @@ -158,12 +158,12 @@ Fortsätt nu med Lektion 2. ---> Det är ett nÃ¥gra ord roliga att som inte hör hemma i den här meningen. - 5. Upprepa stegen 3 och 4 tills meningen är korrekt och gÃ¥ till Lektion 2.2. + 5. Upprepa stegen 3 och 4 tills meningen är korrekt och gÃ¥ till Lektion 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: FLER BORTTAGNINGSKOMMANDON + Lektion 1.2.2: FLER BORTTAGNINGSKOMMANDON ** Skriv d$ för att radera till slutet pÃ¥ raden. ** @@ -179,14 +179,14 @@ Fortsätt nu med Lektion 2. ---> NÃ¥gon skrev slutet pÃ¥ den här raden tvÃ¥ gÃ¥nger. den här raden tvÃ¥ gÃ¥nger. - 5. GÃ¥ vidare till Lektion 2.3 för att förstÃ¥ vad det är som händer. + 5. GÃ¥ vidare till Lektion 1.2.3 för att förstÃ¥ vad det är som händer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: KOMMANDON OCH OBJEKT + Lesson 1.2.3: KOMMANDON OCH OBJEKT Syntaxen för d raderingskommandot är följande: @@ -210,7 +210,7 @@ NOTERA: För den äventyrslystne, genom att bara trycka pÃ¥ objektet i ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: ETT UNDANTAG TILL 'KOMMANDO-OBJEKT' + Lektion 1.2.4: ETT UNDANTAG TILL 'KOMMANDO-OBJEKT' ** Skriv dd för att radera hela raden. ** @@ -235,7 +235,7 @@ NOTERA: För den äventyrslystne, genom att bara trycka pÃ¥ objektet i ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: Ã…NGRA-KOMMANDOT + Lektion 1.2.5: Ã…NGRA-KOMMANDOT ** Skriv u för att Ã¥ngra det senaste kommandona, U för att fixa en hel rad. ** @@ -253,13 +253,13 @@ NOTERA: För den äventyrslystne, genom att bara trycka pÃ¥ objektet i ---> Fiixa felen ppÃ¥ deen häär meningen och Ã¥terskapa dem med Ã¥ngra. 8. Det här är väldigt användbara kommandon. GÃ¥ nu vidare till - Lektion 2 Sammanfattning. + Lektion 1.2 Sammanfattning. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 2 SAMMANFATTNING + LEKTION 1.2 SAMMANFATTNING 1. För att radera frÃ¥n markören till slutet av ett ord skriv: dw @@ -282,7 +282,7 @@ NOTERA: För den äventyrslystne, genom att bara trycka pÃ¥ objektet i För att Ã¥ngra Ã¥ngringar tryck: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: KLISTRA IN-KOMMANDOT + Lektion 1.3.1: KLISTRA IN-KOMMANDOT ** Skriv p för att klistra in den senaste raderingen efter markören. ** @@ -305,7 +305,7 @@ NOTERA: För den äventyrslystne, genom att bara trycka pÃ¥ objektet i ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: ERSÄTT-KOMMANDOT + Lesson 1.3.2: ERSÄTT-KOMMANDOT ** Skriv r och ett tecken för att ersätta tecknet under markören. ** @@ -321,14 +321,14 @@ NOTERA: För den äventyrslystne, genom att bara trycka pÃ¥ objektet i ---> När drn här ruden skrevs, trickte nÃ¥gon pÃ¥ fil knappar! ---> När den här raden skrevs, tryckte nÃ¥gon pÃ¥ fel knappar! - 5. GÃ¥ nu vidare till Lektion 3.2. + 5. GÃ¥ nu vidare till Lektion 1.3.2. NOTERA: Kom ihÃ¥g att du skall lära dig genom användning, inte genom memorering. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÄNDRA-KOMMANDOT + Lektion 1.3.3: ÄNDRA-KOMMANDOT ** För att ändra en del eller ett helt ord, skriv cw . ** @@ -352,7 +352,7 @@ Notera att cw inte bara ändrar ordet, utan även placerar dig i infogningslä ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: FLER ÄNDRINGAR MED c + Lektion 1.3.4: FLER ÄNDRINGAR MED c ** Ändra-kommandot används pÃ¥ samma objekt som radera. ** @@ -376,7 +376,7 @@ Notera att cw inte bara ändrar ordet, utan även placerar dig i infogningslä ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 3 SAMMANFATTNING + LEKTION 1.3 SAMMANFATTNING 1. För att ersätta text som redan har blivit raderad, skriv p . @@ -399,7 +399,7 @@ GÃ¥ nu till nästa lektion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: POSITION OCH FILSTATUS + Lektion 1.4.1: POSITION OCH FILSTATUS ** Tryck CTRL-g för att visa din position i filen och filstatusen. @@ -421,7 +421,7 @@ GÃ¥ nu till nästa lektion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: SÖK-KOMMANDOT + Lektion 1.4.2: SÖK-KOMMANDOT ** Skriv / följt av en fras för att söka efter frasen. ** @@ -443,7 +443,7 @@ Notera: När sökningen nÃ¥r slutet pÃ¥ filen kommer den att fortsätta vid bör ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: SÖKNING EFTER MATCHANDE PARENTESER + Lektion 1.4.3: SÖKNING EFTER MATCHANDE PARENTESER ** Skriv % för att hitta en matchande ),], or } . ** @@ -468,7 +468,7 @@ Notera: Det här är väldigt användbart vid avlusning av ett program med icke ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: ETT SÄTT ATT ÄNDRA FEL + Lektion 1.4.4: ETT SÄTT ATT ÄNDRA FEL ** Skriv :s/gammalt/nytt/g för att ersätta "gammalt" med "nytt". ** @@ -491,7 +491,7 @@ Notera: Det här är väldigt användbart vid avlusning av ett program med icke ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 4 SAMMANFATTNING + LEKTION 1.4 SAMMANFATTNING 1. Ctrl-g visar din position i filen och filstatusen. @@ -514,7 +514,7 @@ Notera: Det här är väldigt användbart vid avlusning av ett program med icke ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: HUR MAN KÖR ETT EXTERNT KOMMANDO + Lektion 1.5.1: HUR MAN KÖR ETT EXTERNT KOMMANDO ** Skriv :! följt av ett externt kommando för att köra det kommandot. ** @@ -538,7 +538,7 @@ Notera: Alla :-kommandon mÃ¥ste avslutas med att trycka pÃ¥ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MER OM ATT SPARA FILER + Lektion 1.5.2: MER OM ATT SPARA FILER ** För att spara ändringar gjorda i en fil, skriv :w FILNAMN. ** @@ -561,7 +561,7 @@ Notera: Om du skulle avsluta Vim och sedan öppna igen med filnamnet TEST sÃ¥ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: ETT SELEKTIVT SPARA-KOMMANDO + Lektion 1.5.3: ETT SELEKTIVT SPARA-KOMMANDO ** För att spara en del av en fil, skriv :#,# w FILNAMN ** @@ -585,7 +585,7 @@ Notera: Om du skulle avsluta Vim och sedan öppna igen med filnamnet TEST sÃ¥ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: TA EMOT OCH FÖRENA FILER + Lektion 1.5.4: TA EMOT OCH FÖRENA FILER ** För att infoga innehÃ¥llet av en fil, skriv :r FILNAMN ** @@ -595,7 +595,7 @@ Notera: Om du skulle avsluta Vim och sedan öppna igen med filnamnet TEST sÃ¥ 2. Placera markören högst upp pÃ¥ den här sidan. -NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 5.3. +NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 1.5.3. Flytta dÃ¥ NED till den här lektionen igen. 3. Ta nu emot din TEST-fil med kommandot :r TEST där TEST är namnet pÃ¥ @@ -604,12 +604,12 @@ NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 5.3. NOTERA: Filen du tar emot placeras där markören är placerad. 4. För att verifiera att filen togs emot, gÃ¥ tillbaka och notera att det nu - finns tvÃ¥ kopior av Lektion 5.3, orginalet och filversionen. + finns tvÃ¥ kopior av Lektion 1.5.3, orginalet och filversionen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 5 SAMMANFATTNING + LEKTION 1.5 SAMMANFATTNING 1. :!kommando kör ett externt kommando. @@ -632,7 +632,7 @@ NOTERA: Filen du tar emot placeras där markören är placerad. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ÖPPNA-KOMMANDOT + Lektion 1.6.1: ÖPPNA-KOMMANDOT ** Skriv o för att öppna en rad under markören och placera dig i @@ -657,7 +657,7 @@ NOTERA: Filen du tar emot placeras där markören är placerad. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: LÄGG TILL-KOMMANDOT + Lektion 1.6.2: LÄGG TILL-KOMMANDOT ** Skriv a för att infoga text EFTER markören. ** @@ -681,7 +681,7 @@ Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: EN ANNAN VERSION AV ERSÄTT + Lektion 1.6.3: EN ANNAN VERSION AV ERSÄTT ** Skriv ett stort R för att ersätta fler än ett tecken. ** @@ -706,7 +706,7 @@ Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: SÄTT FLAGGOR + Lektion 1.6.4: SÄTT FLAGGOR ** Sätt en flagga sÃ¥ att en sökning eller ersättning ignorerar storlek ** @@ -729,7 +729,7 @@ Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att 6. För att ta bort framhävningen av träffar, skriv :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 6 SAMMANFATTNING + LEKTION 1.6 SAMMANFATTNING 1. Genom att skriva o öpnnas en rad NEDANFÖR markören och markören placeras @@ -755,7 +755,7 @@ Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 7: ON-LINE HJÄLP-KOMMANDON + LEKTION 1.7: ON-LINE HJÄLP-KOMMANDON ** Använd on-line hjälpsystemet ** @@ -778,7 +778,7 @@ Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKTION 8: SKAPA ETT UPPSTARTSSKRIPT + LEKTION 1.8: SKAPA ETT UPPSTARTSSKRIPT ** Aktivera Vim- funktioner ** diff --git a/runtime/tutor/tutor.tr.iso9 b/runtime/tutor/tutor1.tr.iso9 similarity index 94% rename from runtime/tutor/tutor.tr.iso9 rename to runtime/tutor/tutor1.tr.iso9 index ddbdf3b3be..16be720664 100644 --- a/runtime/tutor/tutor.tr.iso9 +++ b/runtime/tutor/tutor1.tr.iso9 @@ -19,11 +19,11 @@ Bu þu anlama gelir; komutlarý öðrenmek için doðru bir þekilde çalýþtýrma- nýz gerekir. Eðer sadece yazýlanlarý okursanýz komutlarý unutursunuz. - Þimdi Caps Lock düðmenizin basýlý olmadýðýna emin olun ve Ders 1.1'in + Þimdi Caps Lock düðmenizin basýlý olmadýðýna emin olun ve Ders 1.1.1'in ekraný tamamen doldurmasý için j düðmesine yeterli miktarda basýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.1: ÝMLECÝ HAREKET ETTÝRMEK + Ders 1.1.1: ÝMLECÝ HAREKET ETTÝRMEK Çevirmen Notu: Tüm derslerde gördüðünüzde bu düðmeye basýn. @@ -39,7 +39,7 @@ 2. j düðmesine basýn ve ekranýn aþaðýya kaydýðýný görün. - 3. Aþaðý düðmesini kullanarak, Ders 1.2'ye geçin. + 3. Aþaðý düðmesini kullanarak, Ders 1.1.2'ye geçin. NOT: Eðer yazdýðýnýz bir þeyden emin deðilseniz Normal kipe geçmek için düðmesine basýn. Daha sonra istediðiniz komutu yeniden yazýn. @@ -48,7 +48,7 @@ daha hýzlý hareket edebilirsiniz. Gerçekten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.2: VÝM'DEN ÇIKIÞ + Ders 1.1.2: VÝM'DEN ÇIKIÞ !! NOT: Aþaðýdaki adýmlarý yapmadan önce, bu dersi tamamen okuyun. @@ -66,10 +66,10 @@ NOT: :q! , yaptýðýnýz tüm deðiþiklikleri atar. Birkaç ders sonra, deðiþiklikleri dosyaya kaydetmeyi öðreneceksiniz. - 5. Ýmleci Ders 1.3'e taþýyýn. + 5. Ýmleci Ders 1.1.3'e taþýyýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.3: METÝN DÜZENLEME - METÝN SÝLME + Ders 1.1.3: METÝN DÜZENLEME - METÝN SÝLME ** Normal kipteyken imlecin altýndaki karakteri silmek için x'e basýn. ** @@ -84,12 +84,12 @@ ---> Ýinek ayyýn üzzerinden attladý. - 5. Þimdi satýr düzeldi; Ders 1.4'e geçin. + 5. Þimdi satýr düzeldi; Ders 1.1.4'e geçin. NOT: Bu eðitmende ilerledikçe ezberlemeye çalýþmayýn, deneyerek öðrenin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.4: METÝN DÜZENLEME - METÝN GÝRME + Ders 1.1.4: METÝN DÜZENLEME - METÝN GÝRME ** Normal kipteyken metin eklemek için i'ye basýn. ** @@ -110,7 +110,7 @@ 5. Artýk yapabildiðinizi düþünüyorsanýz bir sonraki bölüme geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.5: METÝN DÜZENLEME - METÝN EKLEME + Ders 1.1.5: METÝN DÜZENLEME - METÝN EKLEME ** Metin eklemek için A düðmesine basýn. ** @@ -130,17 +130,17 @@ ---> Bu satýrda da bazý metinl Bu satýrda da bazý metinler eksik gibi görünüyor. - 5. Artýk rahatça metin ekleyebildiðinizi düþünüyorsanýz Ders 1.6'ya geçin. + 5. Artýk rahatça metin ekleyebildiðinizi düþünüyorsanýz Ders 1.1.6'ya geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.6: DOSYA DÜZENLEME + Ders 1.1.6: DOSYA DÜZENLEME ** :wq yazmak açýk olan dosyayý kaydeder ve Vim'den çýkar. !! NOT: Aþaðýdaki adýmlarý uygulamadan önce tüm bu bölümü iyice okuyun! - 1. Bu eðitmeni Ders 1.2'de yaptýðýnýz gibi :q! yazarak kapatýn. Veya baþka + 1. Bu eðitmeni Ders 1.1.2'de yaptýðýnýz gibi :q! yazarak kapatýn. Veya baþka bir uçbirime eriþiminiz varsa orada yapýn. 2. Komut istemi ekranýnda þu komutu girin: vim tutor . 'vim', Vim @@ -158,7 +158,7 @@ 6. Yukarýdaki adýmlarý okuduktan ve anladýktan sonra YAPIN. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1: ÖZET + Ders 1.1: ÖZET 1. Ýmleç ok düðmeleri veya hjkl düðmeleri kullanýlarak hareket ettirilir. @@ -186,10 +186,10 @@ NOT: düðmesine basmak sizi Normal kipe geri döndürür veya istenmeyen veya yarým yazýlmýþ bir komutu iptal eder. - Þimdi Ders 2 ile bu eðitmeni sürdürün. + Þimdi Ders 1.2 ile bu eðitmeni sürdürün. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.1: SÝLME KOMUTLARI + Ders 1.2.1: SÝLME KOMUTLARI ** Bir sözcüðü silmek için dw yazýn. ** @@ -208,10 +208,10 @@ ---> Bu satýrda çerez tümceye ait olmayan leblebi sözcükler var. - 5. Tümce düzelene kadar adým 3 ve 4'ü tekrar edin ve Ders 2.2'ye geçin. + 5. Tümce düzelene kadar adým 3 ve 4'ü tekrar edin ve Ders 1.2.2'ye geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.2: DAHA FAZLA SÝLME KOMUTLARI + Ders 1.2.2: DAHA FAZLA SÝLME KOMUTLARI ** Satýrý sonuna kadar silmek için d$ yazýn. ** @@ -230,10 +230,10 @@ ---> Birileri bu satýrýn sonunu iki defa yazmýþ. satýrýn sonunu iki defa yazmýþ. - 5. Neler olduðunu anlamak için Ders 2.3'e gidin. + 5. Neler olduðunu anlamak için Ders 1.2.3'e gidin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.3: ÝÞLEÇLER VE HAREKETLER + Ders 1.2.3: ÝÞLEÇLER VE HAREKETLER Metin deðiþtiren birçok komut iþleçler ve eklerden oluþur. Bir d iþleci @@ -258,7 +258,7 @@ yukarýda belirtildiði gibi hareket ettirir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.4: BÝR HAREKET ÝLE BÝRLÝKTE SAYIM KULLANMAK + Ders 1.2.4: BÝR HAREKET ÝLE BÝRLÝKTE SAYIM KULLANMAK ** Bir hareketten önce sayý kullanmak o hareketi sayýca tekrarlatýr. ** @@ -275,10 +275,10 @@ ---> Bu üzerinde hoplayýp zýplayabileceðiniz naçizane bir satýr. - 6. Ders 2.5'e geçin. + 6. Ders 1.2.5'e geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.5: BÝR SAYIM KULLANARAK DAHA FAZLA SÝLME ÝÞLEMÝ + Ders 1.2.5: BÝR SAYIM KULLANARAK DAHA FAZLA SÝLME ÝÞLEMÝ ** Bir iþleç ile birlikte sayý kullanmak iþleci o kadar tekrarlatýr. ** @@ -299,7 +299,7 @@ ---> Bu ABC ÇDE satýrdaki FGÐ HIÝ JKLM NOÖ PRSÞT sözcükler UÜ VY temizlenmiþtir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.6: SATIRLARDA ÝÞLEM YAPMA + Ders 1.2.6: SATIRLARDA ÝÞLEM YAPMA ** Bütün bir satýrý silmek için dd yazýn. ** @@ -325,7 +325,7 @@ ---> 7) Ve sen de öylesin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.7: GERÝ AL KOMUTU + Ders 1.2.7: GERÝ AL KOMUTU ** Komutu geri almak için u, bütün bir satýrý düzeltmek için U yazýn. ** @@ -347,10 +347,10 @@ ---> Buu satýýrdaki hatalarý düüzeltinn ve sonra koomutu geri alllýn. - 8. Bunlar son derece kullanýþlý komutlardýr. Þimdi Ders 2 Özete geçin. + 8. Bunlar son derece kullanýþlý komutlardýr. Þimdi Ders 1.2 Özete geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2: ÖZET + Ders 1.2: ÖZET 1. Ýmleçten itibaren bir sözcüðü silmek için dw yazýn. @@ -380,7 +380,7 @@ Geri almalarý geri almak için R kullanýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.1: KOY KOMUTU + Ders 1.3.1: KOY KOMUTU ** Son yaptýðýnýz silmeyi imleçten sonraya yerleþtirmek için p yazýn. ** @@ -403,7 +403,7 @@ ---> a) Güller kýrmýzýdýr, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.2: DEÐÝÞTÝR KOMUTU + Ders 1.3.2: DEÐÝÞTÝR KOMUTU ** Ýmlecin altýndaki karakteri baþkasý ile deðiþtirmek için rx yapýn. ** @@ -419,12 +419,12 @@ ---> Bu satýv yazýlývken, bivileri yamlýþ düðmetere basmýþ. ---> Bu satýr yazýlýrken, birileri yanlýþ düðmelere basmýþ. - 5. Ders 3.3'ye geçin. + 5. Ders 1.3.3'ye geçin. NOT: Unutmayýn, ezberleyerek deðil deneyerek öðrenin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.3: DEÐÝÞTÝR ÝÞLECÝ + Ders 1.3.3: DEÐÝÞTÝR ÝÞLECÝ ** Bir sözcüðü imleçten sözcük sonuna kadar deðiþtirmek için ce yapýn. ** @@ -446,7 +446,7 @@ aldýðýna da dikkat edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.4: c'YÝ KULLANARAK DAHA FAZLA DEÐÝÞTÝRME + Ders 1.3.4: c'YÝ KULLANARAK DAHA FAZLA DEÐÝÞTÝRME ** Deðiþtir iþleci sil komutu ile ayný hareketlerle kullanýlýr. ** @@ -469,7 +469,7 @@ duyuyor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3: ÖZET + Ders 1.3: ÖZET 1. Silinmiþ olan bir metni geri yerleþtirmek için p yazýn. Bu silinmiþ @@ -491,7 +491,7 @@ Þimdi bir sonraki derse geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.1: ÝMLEÇ KONUMU VE DOSYA DURUMU + Ders 1.4.1: ÝMLEÇ KONUMU VE DOSYA DURUMU ** G dosya içerisindeki konumunuzu ve dosya durumunu gösterir. Dosya @@ -515,7 +515,7 @@ 4. Yapabileceðinizi düþündüðünüzde, adým 1'den 3'e kadar yapýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.2: ARAMA KOMUTU + Ders 1.4.2: ARAMA KOMUTU ** Bir sözcük öbeðini aramak için / ve aranacak öbeði girin. ** @@ -537,7 +537,7 @@ Not: Arama dosyan devre dýþý býrakmak için 'wrapscan' seçeneðini sýfýrlayýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.3: UYAN AYRAÇLAR ARAMASI + Ders 1.4.3: UYAN AYRAÇLAR ARAMASI ** Uyan bir (, [ veya { bulmak için % yazýn. ** @@ -559,7 +559,7 @@ Not: Arama dosyan ayýklamak için son derece yararlýdýr. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.4: BUL/DEÐÝÞTÝR KOMUTU + Ders 1.4.4: BUL/DEÐÝÞTÝR KOMUTU ** 'eski' yerine 'yeni' yerleþtirmek için :s/eski/yeni/g yazýn. ** @@ -583,7 +583,7 @@ Not: Arama dosyan her birini deðiþtirmeden önce bize sorar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4: ÖZET + Ders 1.4: ÖZET 1. G sizin dosyadaki konumunuzu ve dosya durumunu gösterir. @@ -607,7 +607,7 @@ Not: Arama dosyan Her seferinde onay sormasý için :%s/eski/yeni/gc kullanýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.1: BIR DIÞ KOMUT ÇALIÞTIRMAK + Ders 1.5.1: BIR DIÞ KOMUT ÇALIÞTIRMAK ** Bir dýþ komutu çalýþtýrmak için :! ve ardýndan dýþ komutu yazýn. ** @@ -628,7 +628,7 @@ Not: Arama dosyan sonra bunu her zaman anýmsatmayacaðýz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.2: DOSYA YAZMAYA DEVAM + Ders 1.5.2: DOSYA YAZMAYA DEVAM ** Dosyaya yapýlan deðiþikliði kaydetmek için :w DOSYA_ADI yazýn. ** @@ -652,7 +652,7 @@ Not: Arama dosyan Unix (macOS, Linux, Haiku): :!rm DENEME ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.3: YAZMA ÝÇÝN METÝN SEÇME + Ders 1.5.3: YAZMA ÝÇÝN METÝN SEÇME ** Dosyanýn bir bölümünü kaydetmek için, v hareket :w DOSYA_ADI yazýn. ** @@ -671,28 +671,28 @@ Not: Arama dosyan bakarak dosyayý görün. Henüz silmeyin; bir sonraki derste kullanacaðýz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.4: DOSYALARI BÝRLEÞTÝRME VE BÖLÜM EKLEME + Ders 1.5.4: DOSYALARI BÝRLEÞTÝRME VE BÖLÜM EKLEME ** Bir dosyanýn içeriðini eklemek için :r DOSYA_ADI yazýn. ** 1. Ýmleci bu satýrýn hemen bir üstüne koyun. - NOT: Ýkinci adýmdan sonra Ders 5.3'ün metnini göreceksiniz. + NOT: Ýkinci adýmdan sonra Ders 1.5.3'ün metnini göreceksiniz. Sonrasýnda AÞAÐI düðmesi ile bu derse geri gelin. 2. Þimdi :r DENEME komutunu kullanarak DENEME dosyasýný bu dosyanýn içine getirin. Getirdiðiniz dosya imlecin hemen altýna yerleþtirilir. 3. Dosyanýn getirildiðini doðrulamak için YUKARI düðmesini kullanarak - Ders 5.3'ün iki adet kopyasý olduðunu görün, özgün sürümü ve kopyasý. + Ders 1.5.3'ün iki adet kopyasý olduðunu görün, özgün sürümü ve kopyasý. NOT: Bu komutu kullanarak bir dýþ komutun çýktýsýný da dosyanýn içine koyabilirsiniz. Örneðin :r !ls yazmak ls komutunun vereceði çýktýyý dosyanýn içinde hemen imlecin altýndaki satýra koyar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5: ÖZET + Ders 1.5: ÖZET 1. :!komut bir dýþ komut çalýþtýrýr. @@ -712,7 +712,7 @@ Not: Arama dosyan okur ve dosyanýn içine yerleþtirir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.1: AÇ KOMUTU + Ders 1.6.1: AÇ KOMUTU ** Ýmlecin aþaðýsýna satýr açmak ve EKLE kipine geçmek için o yazýn. ** @@ -733,7 +733,7 @@ Not: Arama dosyan ---> Bu satýrýn üzerine bir satýr açmak için imleç bu satýrdayken O yazýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.2: EKLE KOMUTU + Ders 1.6.2: EKLE KOMUTU ** Ýmleçten sonra metin eklemek için a yazýn. ** @@ -754,7 +754,7 @@ Not: Arama dosyan ---> Bu satýrda çalýþabilirsiniz. Çalýþýrken metin eklemeyi kullanýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.3: BÝR BAÞKA DEÐÝÞTÝR KOMUTU + Ders 1.6.3: BÝR BAÞKA DEÐÝÞTÝR KOMUTU ** Birden fazla karakter deðiþtirmek için büyük R yazýn. ** @@ -774,7 +774,7 @@ Not: Arama dosyan ---> 123 sayýsýna 456 eklemek size 579 toplamýný verir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.4: METÝN KOPYALA VE YAPIÞTIR + Ders 1.6.4: METÝN KOPYALA VE YAPIÞTIR ** y iþlecini kullanarak metin kopyalayýn ve p kullanarak yapýþtýrýn. ** @@ -799,7 +799,7 @@ Not: Arama dosyan bir sözcüðü kopyalar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.4: SET KOMUTU + Ders 1.6.5: SET KOMUTU ** Arama veya deðiþtirme iþlemlerinin büyük/küçük harf durumunu görmezden @@ -824,7 +824,7 @@ Not: Arama dosyan yapmak istiyorsanýz /ignore\c komutunu kullanýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - DERS 6 ÖZET + DERS 1.6 ÖZET 1. o komutu imlecin altýnda bir satýr açar ve imleci bu açýlmýþ satýra @@ -849,7 +849,7 @@ Not: Arama dosyan 7. Bir ayarý kapatmak için "no" ekleyin, örneðin :set noic. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7.1: YARDIM KAYNAKLARI + Ders 1.7.1: YARDIM KAYNAKLARI ** Çevrimiçi yardým sistemini kullanýn ** @@ -875,7 +875,7 @@ Not: Arama dosyan :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7.2: BÝR BAÞLANGIÇ BETÝÐÝ OLUÞTURUN + Ders 1.7.2: BÝR BAÞLANGIÇ BETÝÐÝ OLUÞTURUN ** Vim'in özelliklerine bakýn ** @@ -900,7 +900,7 @@ Not: Arama dosyan Daha fazla bilgi için :help vimrc-intro yazýn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7.3: TAMAMLAMA + Ders 1.7.3: TAMAMLAMA ** D ve ile komut istemi ekranýnda tamamlama ** @@ -928,7 +928,7 @@ Not: Arama dosyan ikililerini deneyin. Özellikle :help için çok yararlýdýr. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7: ÖZET + Ders 1.7: ÖZET 1. :help yazmak veya veya düðmelerine basmak yardým diff --git a/runtime/tutor/tutor.tr.utf-8 b/runtime/tutor/tutor1.tr.utf-8 similarity index 94% rename from runtime/tutor/tutor.tr.utf-8 rename to runtime/tutor/tutor1.tr.utf-8 index 909b0d456e..df0cea09d6 100644 --- a/runtime/tutor/tutor.tr.utf-8 +++ b/runtime/tutor/tutor1.tr.utf-8 @@ -19,11 +19,11 @@ Bu ÅŸu anlama gelir; komutları öğrenmek için doÄŸru bir ÅŸekilde çalıştırma- nız gerekir. EÄŸer sadece yazılanları okursanız komutları unutursunuz. - Åžimdi Caps Lock düğmenizin basılı olmadığına emin olun ve Ders 1.1'in + Åžimdi Caps Lock düğmenizin basılı olmadığına emin olun ve Ders 1.1.1'in ekranı tamamen doldurması için j düğmesine yeterli miktarda basın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.1: Ä°MLECÄ° HAREKET ETTÄ°RMEK + Ders 1.1.1: Ä°MLECÄ° HAREKET ETTÄ°RMEK Çevirmen Notu: Tüm derslerde gördüğünüzde bu düğmeye basın. @@ -39,7 +39,7 @@ 2. j düğmesine basın ve ekranın aÅŸağıya kaydığını görün. - 3. AÅŸağı düğmesini kullanarak, Ders 1.2'ye geçin. + 3. AÅŸağı düğmesini kullanarak, Ders 1.1.2'ye geçin. NOT: EÄŸer yazdığınız bir ÅŸeyden emin deÄŸilseniz Normal kipe geçmek için düğmesine basın. Daha sonra istediÄŸiniz komutu yeniden yazın. @@ -48,7 +48,7 @@ daha hızlı hareket edebilirsiniz. Gerçekten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.2: VÄ°M'DEN ÇIKIÅž + Ders 1.1.2: VÄ°M'DEN ÇIKIÅž !! NOT: AÅŸağıdaki adımları yapmadan önce, bu dersi tamamen okuyun. @@ -66,10 +66,10 @@ NOT: :q! , yaptığınız tüm deÄŸiÅŸiklikleri atar. Birkaç ders sonra, deÄŸiÅŸiklikleri dosyaya kaydetmeyi öğreneceksiniz. - 5. Ä°mleci Ders 1.3'e taşıyın. + 5. Ä°mleci Ders 1.1.3'e taşıyın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.3: METÄ°N DÃœZENLEME - METÄ°N SÄ°LME + Ders 1.1.3: METÄ°N DÃœZENLEME - METÄ°N SÄ°LME ** Normal kipteyken imlecin altındaki karakteri silmek için x'e basın. ** @@ -84,12 +84,12 @@ ---> Ä°inek ayyın üzzerinden attladı. - 5. Åžimdi satır düzeldi; Ders 1.4'e geçin. + 5. Åžimdi satır düzeldi; Ders 1.1.4'e geçin. NOT: Bu eÄŸitmende ilerledikçe ezberlemeye çalışmayın, deneyerek öğrenin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.4: METÄ°N DÃœZENLEME - METÄ°N GÄ°RME + Ders 1.1.4: METÄ°N DÃœZENLEME - METÄ°N GÄ°RME ** Normal kipteyken metin eklemek için i'ye basın. ** @@ -110,7 +110,7 @@ 5. Artık yapabildiÄŸinizi düşünüyorsanız bir sonraki bölüme geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.5: METÄ°N DÃœZENLEME - METÄ°N EKLEME + Ders 1.1.5: METÄ°N DÃœZENLEME - METÄ°N EKLEME ** Metin eklemek için A düğmesine basın. ** @@ -130,17 +130,17 @@ ---> Bu satırda da bazı metinl Bu satırda da bazı metinler eksik gibi görünüyor. - 5. Artık rahatça metin ekleyebildiÄŸinizi düşünüyorsanız Ders 1.6'ya geçin. + 5. Artık rahatça metin ekleyebildiÄŸinizi düşünüyorsanız Ders 1.1.6'ya geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1.6: DOSYA DÃœZENLEME + Ders 1.1.6: DOSYA DÃœZENLEME ** :wq yazmak açık olan dosyayı kaydeder ve Vim'den çıkar. !! NOT: AÅŸağıdaki adımları uygulamadan önce tüm bu bölümü iyice okuyun! - 1. Bu eÄŸitmeni Ders 1.2'de yaptığınız gibi :q! yazarak kapatın. Veya baÅŸka + 1. Bu eÄŸitmeni Ders 1.1.2'de yaptığınız gibi :q! yazarak kapatın. Veya baÅŸka bir uçbirime eriÅŸiminiz varsa orada yapın. 2. Komut istemi ekranında ÅŸu komutu girin: vim tutor . 'vim', Vim @@ -158,7 +158,7 @@ 6. Yukarıdaki adımları okuduktan ve anladıktan sonra YAPIN. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 1: ÖZET + Ders 1.1: ÖZET 1. Ä°mleç ok düğmeleri veya hjkl düğmeleri kullanılarak hareket ettirilir. @@ -186,10 +186,10 @@ NOT: düğmesine basmak sizi Normal kipe geri döndürür veya istenmeyen veya yarım yazılmış bir komutu iptal eder. - Åžimdi Ders 2 ile bu eÄŸitmeni sürdürün. + Åžimdi Ders 1.2 ile bu eÄŸitmeni sürdürün. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.1: SÄ°LME KOMUTLARI + Ders 1.2.1: SÄ°LME KOMUTLARI ** Bir sözcüğü silmek için dw yazın. ** @@ -208,10 +208,10 @@ ---> Bu satırda çerez tümceye ait olmayan leblebi sözcükler var. - 5. Tümce düzelene kadar adım 3 ve 4'ü tekrar edin ve Ders 2.2'ye geçin. + 5. Tümce düzelene kadar adım 3 ve 4'ü tekrar edin ve Ders 1.2.2'ye geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.2: DAHA FAZLA SÄ°LME KOMUTLARI + Ders 1.2.2: DAHA FAZLA SÄ°LME KOMUTLARI ** Satırı sonuna kadar silmek için d$ yazın. ** @@ -230,10 +230,10 @@ ---> Birileri bu satırın sonunu iki defa yazmış. satırın sonunu iki defa yazmış. - 5. Neler olduÄŸunu anlamak için Ders 2.3'e gidin. + 5. Neler olduÄŸunu anlamak için Ders 1.2.3'e gidin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.3: Ä°ÅžLEÇLER VE HAREKETLER + Ders 1.2.3: Ä°ÅžLEÇLER VE HAREKETLER Metin deÄŸiÅŸtiren birçok komut iÅŸleçler ve eklerden oluÅŸur. Bir d iÅŸleci @@ -258,7 +258,7 @@ yukarıda belirtildiÄŸi gibi hareket ettirir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.4: BÄ°R HAREKET Ä°LE BÄ°RLÄ°KTE SAYIM KULLANMAK + Ders 1.2.4: BÄ°R HAREKET Ä°LE BÄ°RLÄ°KTE SAYIM KULLANMAK ** Bir hareketten önce sayı kullanmak o hareketi sayıca tekrarlatır. ** @@ -275,10 +275,10 @@ ---> Bu üzerinde hoplayıp zıplayabileceÄŸiniz naçizane bir satır. - 6. Ders 2.5'e geçin. + 6. Ders 1.2.5'e geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.5: BÄ°R SAYIM KULLANARAK DAHA FAZLA SÄ°LME Ä°ÅžLEMÄ° + Ders 1.2.5: BÄ°R SAYIM KULLANARAK DAHA FAZLA SÄ°LME Ä°ÅžLEMÄ° ** Bir iÅŸleç ile birlikte sayı kullanmak iÅŸleci o kadar tekrarlatır. ** @@ -299,7 +299,7 @@ ---> Bu ABC ÇDE satırdaki FGÄž HIÄ° JKLM NOÖ PRSÅžT sözcükler UÃœ VY temizlenmiÅŸtir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.6: SATIRLARDA Ä°ÅžLEM YAPMA + Ders 1.2.6: SATIRLARDA Ä°ÅžLEM YAPMA ** Bütün bir satırı silmek için dd yazın. ** @@ -325,7 +325,7 @@ ---> 7) Ve sen de öylesin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2.7: GERÄ° AL KOMUTU + Ders 1.2.7: GERÄ° AL KOMUTU ** Komutu geri almak için u, bütün bir satırı düzeltmek için U yazın. ** @@ -347,10 +347,10 @@ ---> Buu satıırdaki hataları düüzeltinn ve sonra koomutu geri alllın. - 8. Bunlar son derece kullanışlı komutlardır. Åžimdi Ders 2 Özete geçin. + 8. Bunlar son derece kullanışlı komutlardır. Åžimdi Ders 1.2 Özete geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 2: ÖZET + Ders 1.2: ÖZET 1. Ä°mleçten itibaren bir sözcüğü silmek için dw yazın. @@ -380,7 +380,7 @@ Geri almaları geri almak için R kullanın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.1: KOY KOMUTU + Ders 1.3.1: KOY KOMUTU ** Son yaptığınız silmeyi imleçten sonraya yerleÅŸtirmek için p yazın. ** @@ -403,7 +403,7 @@ ---> a) Güller kırmızıdır, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.2: DEĞİŞTÄ°R KOMUTU + Ders 1.3.2: DEĞİŞTÄ°R KOMUTU ** Ä°mlecin altındaki karakteri baÅŸkası ile deÄŸiÅŸtirmek için rx yapın. ** @@ -419,12 +419,12 @@ ---> Bu satıv yazılıvken, bivileri yamlış düğmetere basmış. ---> Bu satır yazılırken, birileri yanlış düğmelere basmış. - 5. Ders 3.3'ye geçin. + 5. Ders 1.3.3'ye geçin. NOT: Unutmayın, ezberleyerek deÄŸil deneyerek öğrenin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.3: DEĞİŞTÄ°R Ä°ÅžLECÄ° + Ders 1.3.3: DEĞİŞTÄ°R Ä°ÅžLECÄ° ** Bir sözcüğü imleçten sözcük sonuna kadar deÄŸiÅŸtirmek için ce yapın. ** @@ -446,7 +446,7 @@ aldığına da dikkat edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3.4: c'YÄ° KULLANARAK DAHA FAZLA DEĞİŞTÄ°RME + Ders 1.3.4: c'YÄ° KULLANARAK DAHA FAZLA DEĞİŞTÄ°RME ** DeÄŸiÅŸtir iÅŸleci sil komutu ile aynı hareketlerle kullanılır. ** @@ -469,7 +469,7 @@ duyuyor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 3: ÖZET + Ders 1.3: ÖZET 1. SilinmiÅŸ olan bir metni geri yerleÅŸtirmek için p yazın. Bu silinmiÅŸ @@ -491,7 +491,7 @@ Åžimdi bir sonraki derse geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.1: Ä°MLEÇ KONUMU VE DOSYA DURUMU + Ders 1.4.1: Ä°MLEÇ KONUMU VE DOSYA DURUMU ** G dosya içerisindeki konumunuzu ve dosya durumunu gösterir. Dosya @@ -515,7 +515,7 @@ 4. YapabileceÄŸinizi düşündüğünüzde, adım 1'den 3'e kadar yapın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.2: ARAMA KOMUTU + Ders 1.4.2: ARAMA KOMUTU ** Bir sözcük öbeÄŸini aramak için / ve aranacak öbeÄŸi girin. ** @@ -537,7 +537,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu devre dışı bırakmak için 'wrapscan' seçeneÄŸini sıfırlayın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.3: UYAN AYRAÇLAR ARAMASI + Ders 1.4.3: UYAN AYRAÇLAR ARAMASI ** Uyan bir (, [ veya { bulmak için % yazın. ** @@ -559,7 +559,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu ayıklamak için son derece yararlıdır. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4.4: BUL/DEĞİŞTÄ°R KOMUTU + Ders 1.4.4: BUL/DEĞİŞTÄ°R KOMUTU ** 'eski' yerine 'yeni' yerleÅŸtirmek için :s/eski/yeni/g yazın. ** @@ -583,7 +583,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu her birini deÄŸiÅŸtirmeden önce bize sorar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 4: ÖZET + Ders 1.4: ÖZET 1. G sizin dosyadaki konumunuzu ve dosya durumunu gösterir. @@ -607,7 +607,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu Her seferinde onay sorması için :%s/eski/yeni/gc kullanın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.1: BIR DIÅž KOMUT ÇALIÅžTIRMAK + Ders 1.5.1: BIR DIÅž KOMUT ÇALIÅžTIRMAK ** Bir dış komutu çalıştırmak için :! ve ardından dış komutu yazın. ** @@ -628,7 +628,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu sonra bunu her zaman anımsatmayacağız. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.2: DOSYA YAZMAYA DEVAM + Ders 1.5.2: DOSYA YAZMAYA DEVAM ** Dosyaya yapılan deÄŸiÅŸikliÄŸi kaydetmek için :w DOSYA_ADI yazın. ** @@ -652,7 +652,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu Unix (macOS, Linux, Haiku): :!rm DENEME ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.3: YAZMA İÇİN METÄ°N SEÇME + Ders 1.5.3: YAZMA İÇİN METÄ°N SEÇME ** Dosyanın bir bölümünü kaydetmek için, v hareket :w DOSYA_ADI yazın. ** @@ -671,28 +671,28 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu bakarak dosyayı görün. Henüz silmeyin; bir sonraki derste kullanacağız. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5.4: DOSYALARI BÄ°RLEÅžTÄ°RME VE BÖLÃœM EKLEME + Ders 1.5.4: DOSYALARI BÄ°RLEÅžTÄ°RME VE BÖLÃœM EKLEME ** Bir dosyanın içeriÄŸini eklemek için :r DOSYA_ADI yazın. ** 1. Ä°mleci bu satırın hemen bir üstüne koyun. - NOT: Ä°kinci adımdan sonra Ders 5.3'ün metnini göreceksiniz. + NOT: Ä°kinci adımdan sonra Ders 1.5.3'ün metnini göreceksiniz. Sonrasında AÅžAÄžI düğmesi ile bu derse geri gelin. 2. Åžimdi :r DENEME komutunu kullanarak DENEME dosyasını bu dosyanın içine getirin. GetirdiÄŸiniz dosya imlecin hemen altına yerleÅŸtirilir. 3. Dosyanın getirildiÄŸini doÄŸrulamak için YUKARI düğmesini kullanarak - Ders 5.3'ün iki adet kopyası olduÄŸunu görün, özgün sürümü ve kopyası. + Ders 1.5.3'ün iki adet kopyası olduÄŸunu görün, özgün sürümü ve kopyası. NOT: Bu komutu kullanarak bir dış komutun çıktısını da dosyanın içine koyabilirsiniz. ÖrneÄŸin :r !ls yazmak ls komutunun vereceÄŸi çıktıyı dosyanın içinde hemen imlecin altındaki satıra koyar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 5: ÖZET + Ders 1.5: ÖZET 1. :!komut bir dış komut çalıştırır. @@ -712,7 +712,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu okur ve dosyanın içine yerleÅŸtirir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.1: AÇ KOMUTU + Ders 1.6.1: AÇ KOMUTU ** Ä°mlecin aÅŸağısına satır açmak ve EKLE kipine geçmek için o yazın. ** @@ -733,7 +733,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu ---> Bu satırın üzerine bir satır açmak için imleç bu satırdayken O yazın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.2: EKLE KOMUTU + Ders 1.6.2: EKLE KOMUTU ** Ä°mleçten sonra metin eklemek için a yazın. ** @@ -754,7 +754,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu ---> Bu satırda çalışabilirsiniz. Çalışırken metin eklemeyi kullanın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.3: BÄ°R BAÅžKA DEĞİŞTÄ°R KOMUTU + Ders 1.6.3: BÄ°R BAÅžKA DEĞİŞTÄ°R KOMUTU ** Birden fazla karakter deÄŸiÅŸtirmek için büyük R yazın. ** @@ -774,7 +774,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu ---> 123 sayısına 456 eklemek size 579 toplamını verir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.4: METÄ°N KOPYALA VE YAPIÅžTIR + Ders 1.6.4: METÄ°N KOPYALA VE YAPIÅžTIR ** y iÅŸlecini kullanarak metin kopyalayın ve p kullanarak yapıştırın. ** @@ -799,7 +799,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu bir sözcüğü kopyalar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 6.4: SET KOMUTU + Ders 1.6.5: SET KOMUTU ** Arama veya deÄŸiÅŸtirme iÅŸlemlerinin büyük/küçük harf durumunu görmezden @@ -824,7 +824,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu yapmak istiyorsanız /ignore\c komutunu kullanın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - DERS 6 ÖZET + DERS 1.6 ÖZET 1. o komutu imlecin altında bir satır açar ve imleci bu açılmış satıra @@ -849,7 +849,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu 7. Bir ayarı kapatmak için "no" ekleyin, örneÄŸin :set noic. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7.1: YARDIM KAYNAKLARI + Ders 1.7.1: YARDIM KAYNAKLARI ** Çevrimiçi yardım sistemini kullanın ** @@ -875,7 +875,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7.2: BÄ°R BAÅžLANGIÇ BETİĞİ OLUÅžTURUN + Ders 1.7.2: BÄ°R BAÅžLANGIÇ BETİĞİ OLUÅžTURUN ** Vim'in özelliklerine bakın ** @@ -900,7 +900,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu Daha fazla bilgi için :help vimrc-intro yazın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7.3: TAMAMLAMA + Ders 1.7.3: TAMAMLAMA ** D ve ile komut istemi ekranında tamamlama ** @@ -928,7 +928,7 @@ Not: Arama dosyanın sonuna ulaÅŸtığında dosyanın başından sürecektir. Bu ikililerini deneyin. Özellikle :help için çok yararlıdır. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ders 7: ÖZET + Ders 1.7: ÖZET 1. :help yazmak veya veya düğmelerine basmak yardım diff --git a/runtime/tutor/tutor.uk.utf-8 b/runtime/tutor/tutor1.uk.utf-8 similarity index 93% rename from runtime/tutor/tutor.uk.utf-8 rename to runtime/tutor/tutor1.uk.utf-8 index 541c74fdd8..c91d25aa3f 100644 --- a/runtime/tutor/tutor.uk.utf-8 +++ b/runtime/tutor/tutor1.uk.utf-8 @@ -19,7 +19,7 @@ Рзараз переконайтеÑÑŒ, що включена англійÑька розкладка Ñ– не затиÑнутий Caps Lock, Ñ– натиÑніть кнопку j щоб переміÑтитиÑÑŒ до першого уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.1: ПЕРЕМІЩЕÐÐЯ КУРСОРР+ Урок 1.1.1: ПЕРЕМІЩЕÐÐЯ КУРСОРР** Щоб переміщати курÑор викориÑтовуйте кнопки [h],[j],[k],[l], @@ -47,7 +47,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.2: Вихід з Vim + Урок 1.1.2: Вихід з Vim Увага! Перед тим Ñк виконувати цей урок прочитайте його повніÑÑ‚ÑŽ. @@ -67,7 +67,7 @@ кілька уроків ви навчитеÑÑŒ зберігати зміни в файл. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.3:РЕДÐГУВÐÐÐЯ ТЕКСТУ. ВИДÐЛЕÐÐЯ. + Урок 1.1.3:РЕДÐГУВÐÐÐЯ ТЕКСТУ. ВИДÐЛЕÐÐЯ. ** ÐатиÑніть [x] щоб видалити Ñимвол під курÑором. ** @@ -83,7 +83,7 @@ ---> Ккоровва перреÑтрибнуууууула ччерезз міііÑÑццць. - 5. Тепер, коли Ñ€ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ðµ, можна перейти до уроку 1.4. + 5. Тепер, коли Ñ€ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ðµ, можна перейти до уроку 1.1.4. ЗауваженнÑ: ПротÑгом Ð½Ð°Ð²Ñ‡Ð°Ð½Ð½Ñ Ð½Ðµ ÑтарайтеÑÑŒ запам'Ñтати вÑе. ВчітьÑÑ Ð¿Ñ€Ð°ÐºÑ‚Ð¸ÐºÐ¾ÑŽ. @@ -91,7 +91,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.4: РЕДÐГУВÐÐÐЯ ТЕКСТУ. ВСТÐВКР+ Урок 1.1.4: РЕДÐГУВÐÐÐЯ ТЕКСТУ. ВСТÐВКР** ÐатиÑніть [i] щоб вÑтавити текÑÑ‚. ** @@ -108,12 +108,12 @@ ---> З прав текÑÑ‚. ---> З цього Ñ€Ñдка пропав деÑкий текÑÑ‚. - 5. Коли призвичаїтеÑÑŒ вÑтавлÑти текÑÑ‚ - переходьте до уроку 1.5. + 5. Коли призвичаїтеÑÑŒ вÑтавлÑти текÑÑ‚ - переходьте до уроку 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.5: РЕДÐГУВÐÐÐЯ ТЕКСТУ. ДОДÐÐ’ÐÐÐЯ. + Урок 1.1.5: РЕДÐГУВÐÐÐЯ ТЕКСТУ. ДОДÐÐ’ÐÐÐЯ. ** ÐатиÑніть [A] щоб додати текÑÑ‚. ** @@ -140,13 +140,13 @@ 5. ПіÑÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð²Ð¿Ñ€Ð°Ð², переходьте до наÑтупного уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 1.6: РЕДÐГУВÐÐÐЯ ФÐЙЛУ + Урок 1.1.6: РЕДÐГУВÐÐÐЯ ФÐЙЛУ ** ВикориÑтайте :wq щоб зберегти файл Ñ– вийти.** Увага! Перед виконаннÑм уроку прочитайте його повніÑÑ‚ÑŽ. - 1. Вийдіть з цього підручника Ñк ви робили в уроці 1.2: :q![ENTER] + 1. Вийдіть з цього підручника Ñк ви робили в уроці 1.1.2: :q![ENTER] Ðбо Ñкщо ви маєте доÑтуп до іншого терміналу виконуйте наÑтупні дії в ньому. @@ -164,7 +164,7 @@ 6. ПіÑÐ»Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ– заÑÐ²Ð¾Ñ”Ð½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… кроків виконайте Ñ—Ñ…. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПІДСУМОК УРОКУ 1 + ПІДСУМОК УРОКУ 1.1 1. КурÑор керуєтьÑÑ ÐºÑƒÑ€Ñорними клавішами, або клавішами [h][j][k][l] @@ -184,10 +184,10 @@ ЗауваженнÑ: ÐатиÑÐºÐ°Ð½Ð½Ñ [ESC] перенеÑе Ð²Ð°Ñ Ð² звичайний режим, чи відмінить не до ÐºÑ–Ð½Ñ†Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ñƒ команду. -Тепер переходьте до уроку 2. +Тепер переходьте до уроку 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.1: КОМÐÐДИ ВИДÐЛЕÐÐЯ + Урок 1.2.1: КОМÐÐДИ ВИДÐЛЕÐÐЯ ** Введіть dw щоб видалити Ñлово. ** @@ -207,11 +207,11 @@ ---> Є деÑкі Ñлова веÑело, Ñкі не потрібні папір в цьому реченні. 5. Повторюйте кроки 3 Ñ– 4 поки Ñ€ÐµÑ‡ÐµÐ½Ð½Ñ Ð½Ðµ Ñтане правильне, а тоді переходьте - до уроку 2.2. + до уроку 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.2: БІЛЬШЕ КОМÐÐД ВИДÐЛЕÐÐЯ + Урок 1.2.2: БІЛЬШЕ КОМÐÐД ВИДÐЛЕÐÐЯ ** Ðаберіть d$ щоб видалити Ñимволи від курÑора до ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдка. ** @@ -227,14 +227,14 @@ ---> ХтоÑÑŒ надрукував кінець цього Ñ€Ñдка двічі. кінець цього Ñ€Ñдка двічі. - 5. Перейдіть до уроку 2.3 щоб розібратиÑÑŒ в цьому детальніше. + 5. Перейдіть до уроку 1.2.3 щоб розібратиÑÑŒ в цьому детальніше. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.3:ОПЕРÐТОРИ І ПЕРЕМІЩЕÐÐЯ + Урок 1.2.3:ОПЕРÐТОРИ І ПЕРЕМІЩЕÐÐЯ Багато команд що змінюють текÑÑ‚ утворені з оператора Ñ– переміщеннÑ. @@ -257,7 +257,7 @@ переміщує курÑор. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.4: ВИКОРИСТÐÐÐЯ ЛІЧИЛЬÐИКРДЛЯ ПЕРЕМІЩЕÐÐЯ + Урок 1.2.4: ВИКОРИСТÐÐÐЯ ЛІЧИЛЬÐИКРДЛЯ ПЕРЕМІЩЕÐÐЯ ** Ð’Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ‡Ð¸Ñла перед переміщеннÑм повторює його Ñтільки раз. ** @@ -274,13 +274,13 @@ ---> Рце проÑто Ñ€Ñдок зі Ñловами, Ñеред Ñких можна рухати курÑором. - 6. Переходьте до уроку 2.5. + 6. Переходьте до уроку 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.5: БÐГÐТОРÐЗОВЕ ВИДÐЛЕÐÐЯ + Урок 1.2.5: БÐГÐТОРÐЗОВЕ ВИДÐЛЕÐÐЯ ** Ð’Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ‡Ð¸Ñла з оператором повторює його Ñтільки ж разів. ** @@ -304,7 +304,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.6: ОПЕРÐЦІЇ З РЯДКÐМИ + Урок 1.2.6: ОПЕРÐЦІЇ З РЯДКÐМИ ** Введіть dd щоб видалити веÑÑŒ Ñ€Ñдок. ** @@ -327,7 +327,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 2.7: ВІДКИÐУТИ ЗМІÐИ + Урок 1.2.7: ВІДКИÐУТИ ЗМІÐИ ** ÐатиÑніть u щоб ÑкаÑувати оÑтанні команди, U щоб виправити ввеÑÑŒ Ñ€Ñдок. ** @@ -349,7 +349,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПІДСУМОК УРОКУ 2 + ПІДСУМОК УРОКУ 1.2 1. Щоб видалити вÑе від курÑора аж до початку наÑтупного Ñлова введіть: dw @@ -372,7 +372,7 @@ Щоб ÑкаÑувати відміну натиÑніть: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.1: КОМÐÐДРPUT + Урок 1.3.1: КОМÐÐДРPUT ** Введіть p щоб вÑтавити перед тим видалений текÑÑ‚ піÑÐ»Ñ ÐºÑƒÑ€Ñору. ** @@ -395,7 +395,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.2: Команда заміни + Урок 1.3.2: Команда заміни ** Ðаберіть rx щоб замінити Ñимвол під курÑором на x . ** @@ -411,14 +411,14 @@ ---> Коли Ñ†Ñ Ð»Ñ–Ð³Ñ–Ñ Ð½Ð°Ð±Ð¸Ñ€Ð°Ð»Ð°Ð¼Ñ‚. хтоÑÑŒ наьтÑнкв геправмльні унопкм! ---> Коли Ñ†Ñ Ð»Ñ–Ð½Ñ–Ñ Ð½Ð°Ð±Ð¸Ñ€Ð°Ð»Ð°ÑÑŒ, хтоÑÑŒ натиÑнув неправильні кнопки! - 5. Зараз переходьте до уроку 3.3. + 5. Зараз переходьте до уроку 1.3.3. Примітка: Ви маєте вчитиÑÑŒ діÑми, а не проÑтим заучуваннÑм, пам'Ñтаєте? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.3: ОПЕРÐТОР ЗÐМІÐИ + Урок 1.3.3: ОПЕРÐТОР ЗÐМІÐИ ** Щоб зробити заміну до ÐºÑ–Ð½Ñ†Ñ Ñлова введіть ce . ** @@ -441,7 +441,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 3.4: БІЛЬШЕ ЗМІРЗ c + Урок 1.3.4: БІЛЬШЕ ЗМІРЗ c ** Оператор заміни викориÑтовуєтьÑÑ Ð· тими ж переміщеннÑми що Ñ– видаленнÑ. ** @@ -465,7 +465,7 @@ наборі. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПІДСУМОК УРОКУ 3 + ПІДСУМОК УРОКУ 1.3 1. Щоб вÑтавити текÑÑ‚ Ñкий був видалений наберіть p . Це вÑтавлÑÑ” @@ -487,7 +487,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.1: ПОЗИЦІЯ КУРСОРРІ СТÐТУС ФÐЙЛУ + Урок 1.4.1: ПОЗИЦІЯ КУРСОРРІ СТÐТУС ФÐЙЛУ ** Введіть CTRL-G щоб побачити вашу позицію в файлі, Ñ– його ÑтатуÑ. Введіть G щоб переміÑтитиÑÑŒ на потрібний Ñ€Ñдок файлу. ** @@ -510,7 +510,7 @@ 4. Якщо ви запам'Ñтали три попередні кроки, то виконуйте. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.2: КОМÐÐДРПОШУКУ + Урок 1.4.2: КОМÐÐДРПОШУКУ ** Введіть / (Ñлеш) Ñ– фразу, щоб шукати Ñ—Ñ— в текÑÑ‚Ñ–. ** @@ -534,7 +534,7 @@ Ð¾Ð¿Ñ†Ñ–Ñ 'wrapscan' була виключена. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.3: ПОШУК ПÐРÐИХ ДУЖОК + Урок 1.4.3: ПОШУК ПÐРÐИХ ДУЖОК ** Введіть % щоб знайти парну ),], чи } . ** @@ -558,7 +558,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 4.4: КОМÐÐДРЗÐМІÐИ + Урок 1.4.4: КОМÐÐДРЗÐМІÐИ ** Ðаберіть :s/Ñтаре/нове/g щоб замінити 'Ñтаре' на 'нове'. ** @@ -581,7 +581,7 @@ підтвердженнÑм кожної заміни. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПІДСУМОК УРОКУ 4 + ПІДСУМОК УРОКУ 1.4 1. CTRL-G виводить вашу позицію в файлі Ñ– назву файлу. @@ -606,7 +606,7 @@ Щоб щоразу підтверджувати заміну додайте 'c' :%s/Ñтаре/нове/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.1: ЯК ВИКОÐÐТИ ЗОВÐІШÐЮ КОМÐÐДУ + Урок 1.5.1: ЯК ВИКОÐÐТИ ЗОВÐІШÐЮ КОМÐÐДУ ** Введіть :! Ñ– зовнішню команду, щоб виконати ту команду. ** @@ -629,7 +629,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.2: ЩЕ ПРО ЗÐПИС ФÐЙЛІВ + Урок 1.5.2: ЩЕ ПРО ЗÐПИС ФÐЙЛІВ ** Щоб зберегти змінений текÑÑ‚, введіть :w ÐÐЗВÐ_ФÐЙЛУ ** @@ -654,7 +654,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.3: ВИБІР ТЕКСТУ ДЛЯ ЗÐПИСУ + Урок 1.5.3: ВИБІР ТЕКСТУ ДЛЯ ЗÐПИСУ ** Щоб зберегти чаÑтину файлу, наберіть v Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ :w ÐÐЗВÐ_ФÐЙЛУ ** @@ -679,14 +679,14 @@ Ðаприклад d видалить текÑÑ‚. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 5.4: ОТРИМÐÐÐЯ І ЗЛИТТЯ ФÐЙЛІВ + Урок 1.5.4: ОТРИМÐÐÐЯ І ЗЛИТТЯ ФÐЙЛІВ ** Щоб вÑтавити вміÑÑ‚ файлу введіть :r ÐÐЗВÐ_ФÐЙЛУ ** 1. ПоміÑÑ‚Ñ–Ñ‚ÑŒ курÑор деÑÑŒ над цим Ñ€Ñдком. -ЗауваженнÑ: ПіÑÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÑ€Ð¾ÐºÑƒ 2 ви побачите текÑÑ‚ з уроку 5.3. Тоді +ЗауваженнÑ: ПіÑÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÑ€Ð¾ÐºÑƒ 2 ви побачите текÑÑ‚ з уроку 1.5.3. Тоді переміÑÑ‚Ñ–Ñ‚ÑŒÑÑ Ð²Ð½Ð¸Ð·, щоб побачити вміÑÑ‚ цього уроку знову. 2. Тоді отримайте вміÑÑ‚ вашого файлу TEST викориÑтавши команду :r TEST , @@ -694,14 +694,14 @@ Файл що ви отримуєте поміщуєтьÑÑ Ð¿Ñ–Ð´ Ñ€Ñдком курÑора. 3. Щоб перевірити що файл вÑтавлено, прокрутіть текÑÑ‚ назад, Ñ– переконаєтеÑÑŒ - що тепер Ñ” дві копії урок 5.3, the original and the file version. + що тепер Ñ” дві копії урок 1.5.3, the original and the file version. Примітка: Також ви можете вÑтавлÑти вивід зовнішньої програми. Ðаприклад :r !ls читає вивід команди ls Ñ– вÑтавлÑÑ” його під курÑором. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПідÑумок 5 уроку + ПідÑумок 1.5 уроку 1. :!команда виконує зовнішню команду. @@ -719,7 +719,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.1: КОМÐÐДРВСТÐВКИ + Урок 1.6.1: КОМÐÐДРВСТÐВКИ ** Введіть o щоб вÑтавити новий Ñ€Ñдок під курÑором. ** @@ -742,7 +742,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.2: КОМÐÐДРДОПИСУВÐÐÐЯ + Урок 1.6.2: КОМÐÐДРДОПИСУВÐÐÐЯ ** ÐатиÑніть a щоб вÑтавити текÑÑ‚ піÑÐ»Ñ ÐºÑƒÑ€Ñору. ** @@ -766,7 +766,7 @@ Ñ” тільки те, де вÑтавлÑÑŽÑ‚ÑŒÑÑ Ñимволи. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.3: ІÐШИЙ СПОСІБ ЗÐМІÐИ + Урок 1.6.3: ІÐШИЙ СПОСІБ ЗÐМІÐИ ** Введіть велику R щоб замінити більш ніж один Ñимвол. ** @@ -789,7 +789,7 @@ Ñимвол видалÑÑ” Ñимвол Ñкий ÑтоÑв на його міÑці. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.4: КОПІЮВÐÐÐЯ І ВСТÐВКР+ Урок 1.6.4: КОПІЮВÐÐÐЯ І ВСТÐВКР** ВикориÑтайте оператор y щоб копіювати текÑÑ‚ Ñ– p щоб його вÑтавити ** @@ -813,7 +813,7 @@ ЗауваженнÑ: також можна викориÑтовувати y Ñк оператор; yw копіює одне Ñлово. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 6.5: ВСТÐÐОВЛЕÐÐЯ ОПЦІЙ + Урок 1.6.5: ВСТÐÐОВЛЕÐÐЯ ОПЦІЙ ** Ð’Ñтановити опцію так що пошук чи заміна буде ігнорувати регіÑÑ‚Ñ€ ** @@ -837,7 +837,7 @@ Примітка: Якщо ви хочете не брати до уваги регіÑÑ‚Ñ€ тільки під Ñ‡Ð°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ пошуку викориÑтайте ключ \c. Ðаприклад: /ігнорувати\c [ENTER] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПІДСУМОК УРОКУ 6 + ПІДСУМОК УРОКУ 1.6 1. Введіть о щоб додати Ñ€Ñдок ПІД курÑором Ñ– почати режим вÑтавки. Введіть O щоб додати Ñ€Ñдок ÐÐД курÑором. @@ -861,7 +861,7 @@ 7. ВикориÑтайте Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ "no" щоб вимкнути опцію: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.1: ОТРИМÐÐÐЯ ДОПОМОГИ + Урок 1.7.1: ОТРИМÐÐÐЯ ДОПОМОГИ ** ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¾Ñ— довідкової ÑиÑтеми ** @@ -884,7 +884,7 @@ :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.2: СТВОРЕÐÐЯ СКРИПТРÐВТОЗÐПУСКУ + Урок 1.7.2: СТВОРЕÐÐЯ СКРИПТРÐВТОЗÐПУСКУ ** Ð’Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… функцій Vim ** @@ -908,7 +908,7 @@ детальної інформації введіть :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Урок 7.3: ÐВТОДОПОВÐЕÐÐЯ + Урок 1.7.3: ÐВТОДОПОВÐЕÐÐЯ ** ÐÐ²Ñ‚Ð¾Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð·Ð° допомогою CTRL-D Ñ– [TAB] ** @@ -931,7 +931,7 @@ [TAB]. Це оÑобливо кориÑно Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ПІДСУМОК УРОКУ 7 + ПІДСУМОК УРОКУ 1.7 1. Введіть :help або натиÑніть [F1] щоб відкрити вікно довідки. diff --git a/runtime/tutor/tutor.utf-8 b/runtime/tutor/tutor1.utf-8 similarity index 92% rename from runtime/tutor/tutor.utf-8 rename to runtime/tutor/tutor1.utf-8 index 3df15f1a1d..5d1483c06f 100644 --- a/runtime/tutor/tutor.utf-8 +++ b/runtime/tutor/tutor1.utf-8 @@ -1,12 +1,13 @@ =============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = +=============================================================================== += C H A P T E R ONE = =============================================================================== Vim is a very powerful editor that has many commands, too many to explain in a tutor such as this. This tutor is designed to describe enough of the commands that you will be able to easily use Vim as an all-purpose editor. - The approximate time required to complete the tutor is 30 minutes, depending upon how much time is spent with experimentation. @@ -17,12 +18,12 @@ It is important to remember that this tutor is set up to teach by use. That means that you need to execute the commands to learn them properly. If you only read the text, you will forget the commands! - Now, make sure that your Caps-Lock key is NOT depressed and press the j key enough times to move the cursor so that lesson 1.1 completely fills the screen. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: MOVING THE CURSOR + Lesson 1.1.1: MOVING THE CURSOR ** To move the cursor, press the h,j,k,l keys as indicated. ** @@ -36,7 +37,7 @@ 2. Hold down the down key (j) until it repeats. Now you know how to move to the next lesson. - 3. Using the down key, move to lesson 1.2. + 3. Using the down key, move to lesson 1.1.2. NOTE: If you are ever unsure about something you typed, press to place you in Normal mode. Then retype the command you wanted. @@ -45,7 +46,7 @@ NOTE: The cursor keys should also work. But using hjkl you will be able to move around much faster, once you get used to it. Really! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: EXITING VIM + Lesson 1.1.2: EXITING VIM !! NOTE: Before executing any of the steps below, read this entire lesson!! @@ -64,11 +65,11 @@ NOTE: The cursor keys should also work. But using hjkl you will be able to NOTE: :q! discards any changes you made. In a few lessons you will learn how to save the changes to a file. - 5. Move the cursor down to lesson 1.3. + 5. Move the cursor down to lesson 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: TEXT EDITING - DELETION + Lesson 1.1.3: TEXT EDITING - DELETION ** Press x to delete the character under the cursor. ** @@ -84,14 +85,14 @@ NOTE: :q! discards any changes you made. In a few lessons you ---> The ccow jumpedd ovverr thhe mooon. - 5. Now that the line is correct, go on to lesson 1.4. + 5. Now that the line is correct, go on to lesson 1.1.4. NOTE: As you go through this tutor, do not try to memorize, learn by usage. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: TEXT EDITING - INSERTION + Lesson 1.1.4: TEXT EDITING - INSERTION ** Press i to insert text. ** @@ -109,12 +110,12 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. ---> There is text misng this . ---> There is some text missing from this line. - 5. When you are comfortable inserting text move to lesson 1.5. + 5. When you are comfortable inserting text move to lesson 1.1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: TEXT EDITING - APPENDING + Lesson 1.1.5: TEXT EDITING - APPENDING ** Press A to append text. ** @@ -134,17 +135,17 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. ---> There is also some text miss There is also some text missing here. - 5. When you are comfortable appending text move to lesson 1.6. + 5. When you are comfortable appending text move to lesson 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: EDITING A FILE + Lesson 1.1.6: EDITING A FILE ** Use :wq to save a file and exit. ** !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. If you have access to another terminal, do the following there. - Otherwise, exit this tutor as you did in lesson 1.2: :q! + Otherwise, exit this tutor as you did in lesson 1.1.2: :q! 2. At the shell prompt type this command: vim file.txt 'vim' is the command to start the Vim editor, 'file.txt' is the name of @@ -160,7 +161,7 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. 6. After reading the above steps and understanding them: do it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1 SUMMARY + Lesson 1.1 SUMMARY 1. The cursor is moved using either the arrow keys or the hjkl keys. @@ -180,10 +181,10 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage. NOTE: Pressing will place you in Normal mode or will cancel an unwanted and partially completed command. -Now continue with lesson 2. +Now continue with lesson 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: DELETION COMMANDS + Lesson 1.2.1: DELETION COMMANDS ** Type dw to delete a word. ** @@ -202,11 +203,11 @@ Now continue with lesson 2. ---> There are a some words fun that don't belong paper in this sentence. - 5. Repeat steps 3 and 4 until the sentence is correct and go to lesson 2.2. + 5. Repeat steps 3 and 4 until the sentence is correct and go to lesson 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: MORE DELETION COMMANDS + Lesson 1.2.2: MORE DELETION COMMANDS ** Type d$ to delete to the end of the line. ** @@ -222,14 +223,14 @@ Now continue with lesson 2. ---> Somebody typed the end of this line twice. end of this line twice. - 5. Move on to lesson 2.3 to understand what is happening. + 5. Move on to lesson 1.2.3 to understand what is happening. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: ON OPERATORS AND MOTIONS + Lesson 1.2.3: ON OPERATORS AND MOTIONS Many commands that change text are made from an operator and a motion. @@ -252,7 +253,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will move the cursor as specified. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: USING A COUNT FOR A MOTION + Lesson 1.2.4: USING A COUNT FOR A MOTION ** Typing a number before a motion repeats it that many times. ** @@ -269,13 +270,13 @@ NOTE: Pressing just the motion while in Normal mode without an operator will ---> This is just a line with words you can move around in. - 6. Move on to lesson 2.5. + 6. Move on to lesson 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: USING A COUNT TO DELETE MORE + Lesson 1.2.5: USING A COUNT TO DELETE MORE ** Typing a number with an operator repeats it that many times. ** @@ -298,7 +299,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: OPERATING ON LINES + Lesson 1.2.6: OPERATING ON LINES ** Type dd to delete a whole line. ** @@ -322,7 +323,7 @@ NOTE: Pressing just the motion while in Normal mode without an operator will Doubling to operate on a line also works for operators mentioned below. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: THE UNDO COMMAND + Lesson 1.2.7: THE UNDO COMMAND ** Press u to undo the last commands, U to fix a whole line. ** @@ -339,13 +340,13 @@ Doubling to operate on a line also works for operators mentioned below. ---> Fiix the errors oon thhis line and reeplace them witth undo. - 8. These are very useful commands. Now move on to the lesson 2 Summary. + 8. These are very useful commands. Now move on to the lesson 1.2 Summary. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2 SUMMARY + Lesson 1.2 SUMMARY 1. To delete from the cursor up to the next word type: dw 2. To delete from the cursor up to the end of the word type: de @@ -368,7 +369,7 @@ Doubling to operate on a line also works for operators mentioned below. To undo the undos, type: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: THE PUT COMMAND + Lesson 1.3.1: THE PUT COMMAND ** Type p to put previously deleted text after the cursor. ** @@ -391,7 +392,7 @@ Doubling to operate on a line also works for operators mentioned below. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: THE REPLACE COMMAND + Lesson 1.3.2: THE REPLACE COMMAND ** Type rx to replace the character at the cursor with x . ** @@ -407,14 +408,14 @@ Doubling to operate on a line also works for operators mentioned below. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! - 5. Now move on to lesson 3.3. + 5. Now move on to lesson 1.3.3. NOTE: Remember that you should be learning by doing, not memorization. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: THE CHANGE OPERATOR + Lesson 1.3.3: THE CHANGE OPERATOR ** To change until the end of a word, type ce . ** @@ -437,7 +438,7 @@ Notice that ce deletes the word and places you in Insert mode. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: MORE CHANGES USING c + Lesson 1.3.4: MORE CHANGES USING c ** The change operator is used with the same motions as delete. ** @@ -460,7 +461,7 @@ Notice that ce deletes the word and places you in Insert mode. NOTE: You can use the Backspace key to correct mistakes while typing. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3 SUMMARY + Lesson 1.3 SUMMARY 1. To put back text that has just been deleted, type p . This puts the @@ -483,7 +484,7 @@ Now go on to the next lesson. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: CURSOR LOCATION AND FILE STATUS + Lesson 1.4.1: CURSOR LOCATION AND FILE STATUS ** Type CTRL-G to show your location in the file and the file status. Type G to move to a line in the file. ** @@ -506,7 +507,7 @@ NOTE: You may see the cursor position in the lower right corner of the screen 4. If you feel confident to do this, execute steps 1 through 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: THE SEARCH COMMAND + Lesson 1.4.2: THE SEARCH COMMAND ** Type / followed by a phrase to search for the phrase. ** @@ -529,7 +530,7 @@ NOTE: When the search reaches the end of the file it will continue at the start, unless the 'wrapscan' option has been reset. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: MATCHING PARENTHESES SEARCH + Lesson 1.4.3: MATCHING PARENTHESES SEARCH ** Type % to find a matching ),], or } . ** @@ -552,7 +553,7 @@ NOTE: This is very useful in debugging a program with unmatched parentheses! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: THE SUBSTITUTE COMMAND + Lesson 1.4.4: THE SUBSTITUTE COMMAND ** Type :s/old/new/g to substitute 'new' for 'old'. ** @@ -575,7 +576,7 @@ NOTE: This is very useful in debugging a program with unmatched parentheses! with a prompt whether to substitute or not. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4 SUMMARY + Lesson 1.4 SUMMARY 1. CTRL-G displays your location in the file and the file status. @@ -598,7 +599,7 @@ NOTE: This is very useful in debugging a program with unmatched parentheses! To ask for confirmation each time add 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND + Lesson 1.5.1: HOW TO EXECUTE AN EXTERNAL COMMAND ** Type :! followed by an external command to execute that command. ** @@ -621,7 +622,7 @@ NOTE: All : commands must be finished by hitting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: MORE ON WRITING FILES + Lesson 1.5.2: MORE ON WRITING FILES ** To save the changes made to the text, type :w FILENAME ** @@ -644,7 +645,7 @@ NOTE: If you were to exit Vim and start it again with vim TEST , the file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: SELECTING TEXT TO WRITE + Lesson 1.5.3: SELECTING TEXT TO WRITE ** To save part of the file, type v motion :w FILENAME ** @@ -667,14 +668,14 @@ NOTE: Pressing v starts Visual selection. You can move the cursor around to do something with the text. For example, d deletes the text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: RETRIEVING AND MERGING FILES + Lesson 1.5.4: RETRIEVING AND MERGING FILES ** To insert the contents of a file, type :r FILENAME ** 1. Place the cursor just above this line. -NOTE: After executing Step 2 you will see text from lesson 5.3. Then move +NOTE: After executing Step 2 you will see text from lesson 1.5.3. Then move DOWN to see this lesson again. 2. Now retrieve your TEST file using the command :r TEST where TEST is @@ -682,7 +683,7 @@ NOTE: After executing Step 2 you will see text from lesson 5.3. Then move The file you retrieve is placed below the cursor line. 3. To verify that a file was retrieved, cursor back and notice that there - are now two copies of lesson 5.3, the original and the file version. + are now two copies of lesson 1.5.3, the original and the file version. NOTE: You can also read the output of an external command. For example, :r !ls reads the output of the ls command and puts it below the @@ -690,7 +691,7 @@ NOTE: You can also read the output of an external command. For example, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5 SUMMARY + Lesson 1.5 SUMMARY 1. :!command executes an external command. @@ -713,7 +714,7 @@ NOTE: You can also read the output of an external command. For example, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: THE OPEN COMMAND + Lesson 1.6.1: THE OPEN COMMAND ** Type o to open a line below the cursor and place you in Insert mode. ** @@ -736,7 +737,7 @@ NOTE: You can also read the output of an external command. For example, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: THE APPEND COMMAND + Lesson 1.6.2: THE APPEND COMMAND ** Type a to insert text AFTER the cursor. ** @@ -759,7 +760,7 @@ NOTE: a, i and A all go to the same Insert mode, the only difference is where the characters are inserted. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: ANOTHER WAY TO REPLACE + Lesson 1.6.3: ANOTHER WAY TO REPLACE ** Type a capital R to replace more than one character. ** @@ -782,7 +783,7 @@ NOTE: Replace mode is like Insert mode, but every typed character deletes an existing character. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: COPY AND PASTE TEXT + Lesson 1.6.4: COPY AND PASTE TEXT ** Use the y operator to copy text and p to paste it ** @@ -806,7 +807,7 @@ NOTE: Replace mode is like Insert mode, but every typed character deletes an NOTE: You can also use y as an operator: yw yanks one word, yy yanks the whole line, then p puts that line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: SET OPTION + Lesson 1.6.5: SET OPTION ** Set an option so a search or substitute ignores case ** @@ -829,7 +830,7 @@ NOTE: To remove the highlighting of matches enter: :nohlsearch NOTE: If you want to ignore case for just one search command, use \c in the phrase: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6 SUMMARY + Lesson 1.6 SUMMARY 1. Type o to open a line BELOW the cursor and start Insert mode. Type O to open a line ABOVE the cursor. @@ -852,7 +853,7 @@ NOTE: If you want to ignore case for just one search command, use \c 7. Prepend "no" to switch an option off: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.1: GETTING HELP + Lesson 1.7.1: GETTING HELP ** Use the on-line help system ** @@ -875,7 +876,7 @@ NOTE: If you want to ignore case for just one search command, use \c :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.2: CREATE A STARTUP SCRIPT + Lesson 1.7.2: CREATE A STARTUP SCRIPT ** Enable Vim features ** @@ -898,7 +899,7 @@ NOTE: If you want to ignore case for just one search command, use \c For more information type :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: COMPLETION + Lesson 1.7.3: COMPLETION ** Command line completion with CTRL-D and ** @@ -921,7 +922,7 @@ NOTE: Completion works for many commands. Just try pressing CTRL-D and . It is especially useful for :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 SUMMARY + Lesson 1.7 SUMMARY 1. Type :help or press or to open a help window. @@ -945,10 +946,13 @@ NOTE: Completion works for many commands. Just try pressing CTRL-D and ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - This concludes the Vim Tutor. It was intended to give a brief overview of - the Vim editor, just enough to allow you to use the editor fairly easily. - It is far from complete as Vim has many many more commands. Read the user - manual next: ":help user-manual". + This concludes Chapter 1 of the Vim Tutor. Consider continuing with Chapter 2. + + It was intended to give a brief overview of the Vim editor, just enough to + allow you to use the editor fairly easily. It is far from complete as Vim + has many many more commands. + + Read the user manual next: ":help user-manual". For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline diff --git a/runtime/tutor/tutor.vi.utf-8 b/runtime/tutor/tutor1.vi.utf-8 similarity index 93% rename from runtime/tutor/tutor.vi.utf-8 rename to runtime/tutor/tutor1.vi.utf-8 index 2e967c84c0..a48a248eeb 100644 --- a/runtime/tutor/tutor.vi.utf-8 +++ b/runtime/tutor/tutor1.vi.utf-8 @@ -18,10 +18,10 @@ sẽ quên các câu lệnh! Bây giá», cần chắc chắn là phím Shift KHÔNG bị nhấn và hãy nhấn phím - j đủ số lần cần thiết (di chuyển con trá») để Bài 1.1 hiện ra đầy đủ + j đủ số lần cần thiết (di chuyển con trá») để Bài 1.1.1 hiện ra đầy đủ trên màn hình. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 1.1: DI CHUYỂN CON TRỎ + Bài 1.1.1: DI CHUYỂN CON TRỎ ** Äể di chuyển con trá», nhấn các phím h,j,k,l nhÆ° đã chỉ ra. ** @@ -35,7 +35,7 @@ 2. Nhấn và giữ phím (j) cho đến khi nó lặp lại. ---> Bây giá» bạn biết cách chuyển tá»›i bài há»c thứ hai. - 3. Sá»­ dụng phím di chuyển xuống bài 1.2. + 3. Sá»­ dụng phím di chuyển xuống bài 1.1.2. Chú ý: Nếu bạn không chắc chắn vá» những gì đã gõ, hãy nhấn để chuyển vào chế Ä‘á»™ Câu lệnh, rồi gõ lại những câu lệnh mình muốn. @@ -44,7 +44,7 @@ Chú ý: Các phím mÅ©i tên cÅ©ng làm việc. NhÆ°ng má»™t khi sá»­ dụng th bạn sẽ di chuyển con trá» nhanh hÆ¡n so vá»›i các phím mÅ©i tên. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 1.2: VÀO VÀ THOÃT VIM + Bài 1.1.2: VÀO VÀ THOÃT VIM !! CHÚ Ã: TrÆ°á»›c khi thá»±c hiện bất kỳ lệnh nào, xin hãy Ä‘á»c cả bài há»c này!! @@ -65,9 +65,9 @@ Chú ý: Các phím mÅ©i tên cÅ©ng làm việc. NhÆ°ng má»™t khi sá»­ dụng th 4. Nếu bạn đã nhá»› và nắm chắc những câu lệnh trên, hãy thá»±c hiện các bÆ°á»›c từ 1 tá»›i 3 để thoát và quay vào trình soạn thảo. Sau đó di chuyển con trá» - tá»›i Bài 1.3. + tá»›i Bài 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 1.3: SOẠN THẢO VÄ‚N BẢN - XÓA + Bài 1.1.3: SOẠN THẢO VÄ‚N BẢN - XÓA ** Trong chế Ä‘á»™ Câu lệnh nhấn x để xóa ký tá»± nằm dÆ°á»›i con trá». ** @@ -83,14 +83,14 @@ Chú ý: Các phím mÅ©i tên cÅ©ng làm việc. NhÆ°ng má»™t khi sá»­ dụng th ---> Emm xiinh em đứnng chá»— nào cÅ©nkg xinh. - 5. Câu trên đã sá»­a xong, hãy chuyển tá»›i Bài 1.4. + 5. Câu trên đã sá»­a xong, hãy chuyển tá»›i Bài 1.1.4. Chú ý: Khi há»c theo cuốn hÆ°á»›ng dẫn này đừng cố nhá»›, mà há»c từ thá»±c hành. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 1.4: SOẠN THẢO VÄ‚N BẢN - CHÈN + Bài 1.1.4: SOẠN THẢO VÄ‚N BẢN - CHÈN ** Trong chế Ä‘á»™ Câu lệnh nhấn i để chèn văn bản. ** @@ -113,7 +113,7 @@ Chú ý: Khi há»c theo cuốn hÆ°á»›ng dẫn này đừng cố nhá»›, mà há»c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tá»”NG KẾT BÀI 1 + Tá»”NG KẾT BÀI 1.1 1. Con trỠđược di chuyển bởi các phím mÅ©i tên hoặc các phím hjkl. @@ -132,11 +132,11 @@ Chú ý: Khi há»c theo cuốn hÆ°á»›ng dẫn này đừng cố nhá»›, mà há»c CHÚ Ã: Nhấn sẽ Ä‘Æ°a bạn vào chế Ä‘á»™ Câu lệnh hoặc sẽ hủy bá» má»™t câu lệnh hay Ä‘oạn câu lệnh không mong muốn. -Bây giá» chúng ta tiếp tục vá»›i Bài 2. +Bây giá» chúng ta tiếp tục vá»›i Bài 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 2.1: CÃC LỆNH XÓA + Bài 1.2.1: CÃC LỆNH XÓA ** Gõ dw để xóa tá»›i cuối má»™t từ. ** @@ -155,11 +155,11 @@ Bây giá» chúng ta tiếp tục vá»›i Bài 2. ---> Khi trái tỉm tìm tim ai nhÆ° mùa đông giá lạnh lanh Anh đâu thành cánh én nhá» trùng khÆ¡i. - 5. Lặp lại các bÆ°á»›c cho đến khi sá»­a xong câu thÆ¡ rồi chuyển tá»›i Bài 2.2. + 5. Lặp lại các bÆ°á»›c cho đến khi sá»­a xong câu thÆ¡ rồi chuyển tá»›i Bài 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 2.2: CÃC CÂU LỆNH XÓA KHÃC + Bài 1.2.2: CÃC CÂU LỆNH XÓA KHÃC ** gõ d$ để xóa tá»›i cuối má»™t dòng. ** @@ -175,14 +175,14 @@ Bây giá» chúng ta tiếp tục vá»›i Bài 2. ---> Äã qua Ä‘i những tháng năm khá» dại. thừa thãi. - 5. Chuyển tá»›i Bài 2.3 để hiểu cái gì Ä‘ang xảy ra. + 5. Chuyển tá»›i Bài 1.2.3 để hiểu cái gì Ä‘ang xảy ra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 2.3: CÂU LỆNH VÀ Äá»I TƯỢNG + Bài 1.2.3: CÂU LỆNH VÀ Äá»I TƯỢNG Câu lệnh xóa d có dạng nhÆ° sau: @@ -205,7 +205,7 @@ CHÚ Ã: Dành cho những ngÆ°á»i ham tìm hiểu, chỉ nhấn đối tượ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 2.4: TRƯỜNG HỢP NGOẠI LỆ CỦA QUY LUẬT 'CÂU LỆNH-Äá»I TƯỢNG' + Bài 1.2.4: TRƯỜNG HỢP NGOẠI LỆ CỦA QUY LUẬT 'CÂU LỆNH-Äá»I TƯỢNG' ** Gõ dd để xóa cả má»™t dòng. ** @@ -228,7 +228,7 @@ CHÚ Ã: Dành cho những ngÆ°á»i ham tìm hiểu, chỉ nhấn đối tượ 9) Bao khổ Ä‘au chá» tia nắng bình minh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 2.5: CÂU LỆNH "HỦY THAO TÃC" + Bài 1.2.5: CÂU LỆNH "HỦY THAO TÃC" ** Nhấn u để hủy bá» những câu lệnh cuối cùng, U để sá»­a cả má»™t dòng. ** @@ -245,13 +245,13 @@ CHÚ Ã: Dành cho những ngÆ°á»i ham tìm hiểu, chỉ nhấn đối tượ ---> Câyy ccó cá»™ii, nuÆ°á»›c csó nguuồn. - 8. Äây là những câu lệnh rất hữu ích. Bây giá» chuyển tá»›i Tổng kết Bài 2. + 8. Äây là những câu lệnh rất hữu ích. Bây giá» chuyển tá»›i Tổng kết Bài 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tá»”NG KẾT BÀI 2 + Tá»”NG KẾT BÀI 1.2 1. Äể xóa từ con trá» tá»›i cuối má»™t từ gõ: dw @@ -274,7 +274,7 @@ CHÚ Ã: Dành cho những ngÆ°á»i ham tìm hiểu, chỉ nhấn đối tượ Äể hủy bá» các câu lệnh hủy bá», gõ: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 3.1: CÂU LỆNH DÃN + Bài 1.3.1: CÂU LỆNH DÃN ** Gõ p để dán những gì vừa xóa tá»›i sau con trá». ** @@ -297,7 +297,7 @@ CHÚ Ã: Dành cho những ngÆ°á»i ham tìm hiểu, chỉ nhấn đối tượ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 3.2: CÂU LỆNH THAY THẾ + Bài 1.3.2: CÂU LỆNH THAY THẾ ** Gõ r và má»™t ký tá»± để thay thế ký tá»± nằm dÆ°á»›i con trá». ** @@ -313,14 +313,14 @@ CHÚ Ã: Dành cho những ngÆ°á»i ham tìm hiểu, chỉ nhấn đối tượ ---> "Trên Ä‘á»i nài làm gì có Ä‘Æ°á»mg, ngÆ°á»i to Ä‘i mãi rồi thànk Ä‘Æ°á»ng là tHôi" ---> "Trên Ä‘á»i này làm gì có Ä‘Æ°á»ng, ngÆ°á»i ta Ä‘i mãi rồi thành Ä‘Æ°á»ng mà thôi" - 5. Bây giá» chuyển sang Bài 3.3. + 5. Bây giá» chuyển sang Bài 1.3.3. CHÚ Ã: Hãy nhá»› rằng bạn cần thá»±c hành, không nên "há»c vẹt". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 3.3: CÂU LỆNH THAY Äá»”I + Bài 1.3.3: CÂU LỆNH THAY Äá»”I ** Äể thay đổi má»™t phần hay cả má»™t từ, gõ cw . ** @@ -343,7 +343,7 @@ Chú ý rằng cw không chỉ thay đổi từ, nhÆ°ng còn Ä‘Æ°a bạn vào ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 3.4: TIẾP TỤC THAY Äá»”I VỚI c + Bài 1.3.4: TIẾP TỤC THAY Äá»”I VỚI c ** Câu lệnh thay đổi được sá»­ dụng vá»›i cùng đối tượng nhÆ° câu lệnh xóa. ** @@ -366,7 +366,7 @@ Chú ý rằng cw không chỉ thay đổi từ, nhÆ°ng còn Ä‘Æ°a bạn vào ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tá»”NG KẾT BÀI 3 + Tá»”NG KẾT BÀI 1.3 1. Äể dán Ä‘oạn văn bản vừa xóa, gõ p. Câu lệnh này sẽ đặt Ä‘oạn văn bản này @@ -389,7 +389,7 @@ Bây giá» chúng ta tiếp tục bài há»c má»›i. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 4.1: THÔNG TIN VỀ TẬP TIN VÀ VỊ TRà TRONG TẬP TIN + Bài 1.4.1: THÔNG TIN VỀ TẬP TIN VÀ VỊ TRà TRONG TẬP TIN ** Gõ CTRL-g để hiển thị vị trí của bạn trong tập tin và thông tin vá» tập tin. @@ -412,7 +412,7 @@ Bây giá» chúng ta tiếp tục bài há»c má»›i. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 4.2: CÂU LỆNH TÃŒM KIẾM + Bài 1.4.2: CÂU LỆNH TÃŒM KIẾM ** Gõ / và theo sau là cụm từ muốn tìm kiếm. ** @@ -435,7 +435,7 @@ Chú ý: Khi tìm kiếm đến cuối tập tin, việc tìm kiếm sẽ tiếp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 4.3: TÃŒM KIẾM CÃC DẤU NGOẶC SÃNH ÄÔI + Bài 1.4.3: TÃŒM KIẾM CÃC DẤU NGOẶC SÃNH ÄÔI ** Gõ % để tìm kiếm ),], hay } . ** @@ -458,7 +458,7 @@ Chú ý: Rất có ích khi sá»­a lá»—i chÆ°Æ¡ng trình, khi có các lá»—i th ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 4.4: MỘT CÃCH SỬA Lá»–I + Bài 1.4.4: MỘT CÃCH SỬA Lá»–I ** Gõ :s/cÅ©/má»›i/g để thay thế 'má»›i' vào 'cÅ©'. ** @@ -481,7 +481,7 @@ Chú ý: Rất có ích khi sá»­a lá»—i chÆ°Æ¡ng trình, khi có các lá»—i th ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tá»”NG KẾT BÀI 4 + Tá»”NG KẾT BÀI 1.4 1. Ctrl-g vị trí của con trá» trong tập tin và thông tin vá» tập tin. @@ -504,7 +504,7 @@ Chú ý: Rất có ích khi sá»­a lá»—i chÆ°Æ¡ng trình, khi có các lá»—i th ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: CÃCH THá»°C HIỆN MỘT CÂU LỆNH NGOẠI TRÚ + Lesson 1.5.1: CÃCH THá»°C HIỆN MỘT CÂU LỆNH NGOẠI TRÚ ** Gõ :! theo sau là má»™t câu lệnh ngoại trú để thá»±c hiện câu lệnh đó. ** @@ -527,7 +527,7 @@ Chú ý: Tất cả các câu lệnh : cần kết thúc bởi phím ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 5.2: GHI LẠI CÃC TẬP TIN + Bài 1.5.2: GHI LẠI CÃC TẬP TIN ** Äể ghi lại các thay đổi, gõ :w TÊNTỆPTIN. ** @@ -550,7 +550,7 @@ Chú ý: Nếu bạn thoát khá»i Vim và quay trở lại vá»›i tên tập tin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 5.3: CÂU LỆNH GHI CHỌN LỌC + Bài 1.5.3: CÂU LỆNH GHI CHỌN LỌC ** Äể ghi má»™t phần của tập tin, gõ :#,# w TÊNTẬPTIN ** @@ -573,7 +573,7 @@ Chú ý: Nếu bạn thoát khá»i Vim và quay trở lại vá»›i tên tập tin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 5.4: ÄỌC VÀ KẾT HỢP CÃC TẬP TIN + Bài 1.5.4: ÄỌC VÀ KẾT HỢP CÃC TẬP TIN ** Äể chèn ná»™i dung của má»™t tập tin, gõ :r TÊNTẬPTIN ** @@ -582,7 +582,7 @@ Chú ý: Nếu bạn thoát khá»i Vim và quay trở lại vá»›i tên tập tin 2. Äặt con trá» tại đầu trang này. -CHÚ Ã: Sau khi thá»±c hiện BÆ°á»›c 3 bạn sẽ thấy Bài 5.3. Sau đó cần di chuyển +CHÚ Ã: Sau khi thá»±c hiện BÆ°á»›c 3 bạn sẽ thấy Bài 1.5.3. Sau đó cần di chuyển XUá»NG bài há»c này lần nữa. 3. Bây giá» dùng câu lệnh :r TEST để Ä‘á»c tập tin TEST, trong đó TEST là @@ -591,12 +591,12 @@ CHÚ Ã: Sau khi thá»±c hiện BÆ°á»›c 3 bạn sẽ thấy Bài 5.3. Sau đó c CHÚ Ã: Tập tin được Ä‘á»c sẽ đặt bắt đầu từ vị trí của con trá». 4. Äể kiểm tra lại, di chuyển con trá» ngược trở lại và thấy rằng bây giá» - có hai Bài 5.3, bản gốc và bản vừa chèn. + có hai Bài 1.5.3, bản gốc và bản vừa chèn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tá»”NG KẾT BÀI 5 + Tá»”NG KẾT BÀI 1.5 1. :!câulệnh thá»±c hiện má»™t câu lệnh ngoại trú @@ -619,7 +619,7 @@ CHÚ Ã: Tập tin được Ä‘á»c sẽ đặt bắt đầu từ vị trí củ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 6.1: CÂU LỆNH TẠO DÃ’NG + Bài 1.6.1: CÂU LỆNH TẠO DÃ’NG ** Gõ o để mở má»™t dòng phía dÆ°á»›i con trá» và chuyển vào chế Ä‘á»™ Soạn thảo. ** @@ -642,7 +642,7 @@ Di chuyển con trá» tá»›i dòng này, rồi gõ Shift-O sẽ mở má»™t dòng ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 6.2: CÂU LỆNH THÊM VÀO + Bài 1.6.2: CÂU LỆNH THÊM VÀO ** Gõ a để chèn văn bản vào SAU con trá». ** @@ -665,7 +665,7 @@ Chú ý: Lệnh này thay cho việc gõ i , ký tá»± cuối cùng, văn bản ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 6.3: MỘT CÃCH THAY THẾ KHÃC + Bài 1.6.3: MỘT CÃCH THAY THẾ KHÃC ** Gõ chữ cái R hoa để thay thế nhiá»u ký tá»±. ** @@ -688,7 +688,7 @@ Chú ý: Lệnh này thay cho việc gõ i , ký tá»± cuối cùng, văn bản ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 6.4: THIẾT LẬP CÃC THAM Sá» + Bài 1.6.4: THIẾT LẬP CÃC THAM Sá» ** Thiết lập má»™t tùy chá»n để việc tìm kiếm hay thay thế lá» Ä‘i kiểu chữ ** @@ -711,7 +711,7 @@ Chú ý: Lệnh này thay cho việc gõ i , ký tá»± cuối cùng, văn bản 6. Äể xóa bá» việc hiện sáng từ tìm thấy, gõ: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tá»”NG KẾT BÀI 6 + Tá»”NG KẾT BÀI 1.6 1. Gõ o mở má»™t dòng phía DƯỚI con trá» và đặt con trá» trên dòng vừa mở @@ -734,7 +734,7 @@ Chú ý: Lệnh này thay cho việc gõ i , ký tá»± cuối cùng, văn bản ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 7: CÂU LỆNH TRỢ GIÚP + Bài 1.7: CÂU LỆNH TRỢ GIÚP ** Sá»­ dụng hệ thống trợ giúp có sẵn ** @@ -757,7 +757,7 @@ Chú ý: Lệnh này thay cho việc gõ i , ký tá»± cuối cùng, văn bản ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Bài 8: TẠO MỘT SCRIPT KHỞI ÄỘNG + Bài 1.8: TẠO MỘT SCRIPT KHỞI ÄỘNG ** Bật các tính năng của Vim ** diff --git a/runtime/tutor/tutor.zh.big5 b/runtime/tutor/tutor1.zh.big5 similarity index 100% rename from runtime/tutor/tutor.zh.big5 rename to runtime/tutor/tutor1.zh.big5 diff --git a/runtime/tutor/tutor.zh.euc b/runtime/tutor/tutor1.zh.euc similarity index 100% rename from runtime/tutor/tutor.zh.euc rename to runtime/tutor/tutor1.zh.euc diff --git a/runtime/tutor/tutor.zh.utf-8 b/runtime/tutor/tutor1.zh.utf-8 similarity index 100% rename from runtime/tutor/tutor.zh.utf-8 rename to runtime/tutor/tutor1.zh.utf-8 diff --git a/runtime/tutor/tutor.zh_cn.utf-8 b/runtime/tutor/tutor1.zh_cn.utf-8 similarity index 100% rename from runtime/tutor/tutor.zh_cn.utf-8 rename to runtime/tutor/tutor1.zh_cn.utf-8 diff --git a/runtime/tutor/tutor.zh_tw.utf-8 b/runtime/tutor/tutor1.zh_tw.utf-8 similarity index 100% rename from runtime/tutor/tutor.zh_tw.utf-8 rename to runtime/tutor/tutor1.zh_tw.utf-8 diff --git a/runtime/tutor/tutor2 b/runtime/tutor/tutor2 index eaeef40035..b189676cfb 100644 --- a/runtime/tutor/tutor2 +++ b/runtime/tutor/tutor2 @@ -1,9 +1,7 @@ =============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = =============================================================================== -= = -= C h a p t e r - T w o = -= = += C H A P T E R TWO = =============================================================================== Hic Sunt Dracones: if this is your first exposure to vim and you diff --git a/runtime/tutor/tutor2.utf-8 b/runtime/tutor/tutor2.utf-8 index eaeef40035..b189676cfb 100644 --- a/runtime/tutor/tutor2.utf-8 +++ b/runtime/tutor/tutor2.utf-8 @@ -1,9 +1,7 @@ =============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = =============================================================================== -= = -= C h a p t e r - T w o = -= = += C H A P T E R TWO = =============================================================================== Hic Sunt Dracones: if this is your first exposure to vim and you From b534e80008e325e66a246457bc2924383b86f979 Mon Sep 17 00:00:00 2001 From: h-east Date: Tue, 3 Dec 2024 20:37:52 +0100 Subject: [PATCH 056/244] runtime(doc): Tweak documentation style a bit closes: #16164 Signed-off-by: h-east Signed-off-by: Christian Brabandt --- runtime/doc/builtin.txt | 4 ++-- runtime/doc/options.txt | 9 +++++---- runtime/doc/terminal.txt | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index d0f0c7b030..ac10590b1d 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2024 Nov 26 +*builtin.txt* For Vim version 9.1. Last change: 2024 Dec 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3789,7 +3789,7 @@ getbufvar({buf}, {varname} [, {def}]) *getbufvar()* getcellpixels() *getcellpixels()* Returns a |List| of terminal cell pixel size. - List format is [xpixels, ypixels]. + List format is [xpixel, ypixel]. Only works on Unix (terminal and gVim) and Windows (gVim only). Returns [] on other systems or on failure. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 1de1057b22..273ea64dec 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Dec 01 +*options.txt* For Vim version 9.1. Last change: 2024 Dec 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1069,7 +1069,8 @@ A jump table for the options with a short description can be found at |Q_op|. done with ":syntax on". *'backspace'* *'bs'* -'backspace' 'bs' string (Vim default: "indent,eol,start", Vi default: "") +'backspace' 'bs' string (Vim default: "indent,eol,start", + Vi default: "") global Influences the working of , , CTRL-W and CTRL-U in Insert mode. This is a list of items, separated by commas. Each item allows @@ -2155,8 +2156,8 @@ A jump table for the options with a short description can be found at |Q_op|. "menu" or "menuone". No effect if "longest" is present. noselect Same as "noinsert", except that no menu item is - pre-selected. If both "noinsert" and "noselect" are present, - "noselect" has precedence. + pre-selected. If both "noinsert" and "noselect" are + present, "noselect" has precedence. fuzzy Enable |fuzzy-matching| for completion candidates. This allows for more flexible and intuitive matching, where diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index a0bfd6034e..da5b1481e1 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 9.1. Last change: 2024 Nov 23 +*terminal.txt* For Vim version 9.1. Last change: 2024 Dec 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1759,8 +1759,8 @@ mechanisms like `echo` statements (or similar) to help you in your job. For this reason, you can set: > let g:termdebug_config['debug'] = true < -This sets the `DEBUG` variable to `true` in the source code that you can use -within the source code. An example of its usage follows: > +This sets the `DEBUG` variable to `true`, which can be referenced in the +source code. An example of its usage follows: > if exists('g:termdebug_loaded') if DEBUG Echoerr('Termdebug already loaded.') From 876de275cb3affa5910664cc52a5177c214313e8 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 3 Dec 2024 20:43:52 +0100 Subject: [PATCH 057/244] patch 9.1.0902: filetype: Conda configuration files are not recognized Problem: filetype: Conda configuration files are not recognized Solution: detect '.condarc' and 'condarc' files as yaml filetype. (zeertzjq) closes: #16162 Signed-off-by: zeertzjq Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 3 +++ src/testdir/test_filetype.vim | 2 +- src/version.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index f91d405f7d..2c46c57b1e 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -452,6 +452,9 @@ au BufNewFile,BufRead .clang-format setf yaml " Clang-tidy au BufNewFile,BufRead .clang-tidy setf yaml +" Conda configuration file +au BufNewFile,BufRead .condarc,condarc setf yaml + " Matplotlib au BufNewFile,BufRead *.mplstyle,matplotlibrc setf yaml diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 51f4dc1c89..ef1d8b57e7 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -889,7 +889,7 @@ def s:GetFilenameChecks(): dict> xslt: ['file.xsl', 'file.xslt'], yacc: ['file.yy', 'file.yxx', 'file.y++'], yaml: ['file.yaml', 'file.yml', 'file.eyaml', 'any/.bundle/config', '.clangd', '.clang-format', '.clang-tidy', 'file.mplstyle', 'matplotlibrc', 'yarn.lock', - '/home/user/.kube/config'], + '/home/user/.kube/config', '.condarc', 'condarc'], yang: ['file.yang'], yuck: ['file.yuck'], z8a: ['file.z8a'], diff --git a/src/version.c b/src/version.c index 724fa61402..5a9f50f6ee 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 902, /**/ 901, /**/ From 2e359b98f212a2ef080a99661a70fe094394d72a Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Tue, 3 Dec 2024 21:10:43 +0100 Subject: [PATCH 058/244] runtime(tutor): fix typo in Chapter 2 Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/tutor/tutor2 | 2 +- runtime/tutor/tutor2.utf-8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/tutor/tutor2 b/runtime/tutor/tutor2 index b189676cfb..a3a499eb6d 100644 --- a/runtime/tutor/tutor2 +++ b/runtime/tutor/tutor2 @@ -117,7 +117,7 @@ REFERENCE: Numbered Registers :h quote0 NOTE: a common conundrum when coding is moving around large chunks of code. The following technique helps avoid number line calculations associated - with operatins like "a147d or :945,1091d a or even worse using + with operations like "a147d or :945,1091d a or even worse using i=1091-945 first 1. Move the cursor to the line below marked ---> diff --git a/runtime/tutor/tutor2.utf-8 b/runtime/tutor/tutor2.utf-8 index b189676cfb..a3a499eb6d 100644 --- a/runtime/tutor/tutor2.utf-8 +++ b/runtime/tutor/tutor2.utf-8 @@ -117,7 +117,7 @@ REFERENCE: Numbered Registers :h quote0 NOTE: a common conundrum when coding is moving around large chunks of code. The following technique helps avoid number line calculations associated - with operatins like "a147d or :945,1091d a or even worse using + with operations like "a147d or :945,1091d a or even worse using i=1091-945 first 1. Move the cursor to the line below marked ---> From 5ccf7f14070f620de1b599469cf5ea0d51fe4f92 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 3 Dec 2024 21:12:17 +0100 Subject: [PATCH 059/244] runtime(tutor): regenerated some translated tutor1 files Signed-off-by: Christian Brabandt --- runtime/tutor/tutor1.pl.cp1250 | 878 ++++++++++++++++----------------- runtime/tutor/tutor1.sk.cp1250 | 580 +++++++++++----------- runtime/tutor/tutor1.sr.cp1250 | 418 ++++++++-------- runtime/tutor/tutor1.zh.utf-8 | 60 +-- 4 files changed, 968 insertions(+), 968 deletions(-) diff --git a/runtime/tutor/tutor1.pl.cp1250 b/runtime/tutor/tutor1.pl.cp1250 index 869f837b28..f8f5012ac0 100644 --- a/runtime/tutor/tutor1.pl.cp1250 +++ b/runtime/tutor/tutor1.pl.cp1250 @@ -2,92 +2,92 @@ = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== - Vim to potezny edytor, który posiada wiele polecen, zbyt duzo, by - wyjasnic je wszystkie w tym tutorialu. Ten przewodnik ma nauczyc - Cie poslugiwac sie wystarczajaco wieloma komendami, bys mógl latwo - uzywac Vima jako edytora ogólnego przeznaczenia. + Vim to potê¿ny edytor, który posiada wiele poleceñ, zbyt du¿o, by + wyjaœniæ je wszystkie w tym tutorialu. Ten przewodnik ma nauczyæ + Ciê pos³ugiwaæ siê wystarczaj¹co wieloma komendami, byœ móg³ ³atwo + u¿ywaæ Vima jako edytora ogólnego przeznaczenia. - Czas potrzebny na ukonczenie tutoriala to 25 do 30 minut i zalezy - od tego jak wiele czasu spedzisz na eksperymentowaniu. + Czas potrzebny na ukoñczenie tutoriala to 25 do 30 minut i zale¿y + od tego jak wiele czasu spêdzisz na eksperymentowaniu. UWAGA: - Polecenia wykonywane w czasie lekcji zmodyfikuja tekst. Zrób - wczesniej kopie tego pliku do cwiczen (jesli zaczales komenda - "vimtutor", to juz pracujesz na kopii). + Polecenia wykonywane w czasie lekcji zmodyfikuj¹ tekst. Zrób + wczeœniej kopiê tego pliku do æwiczeñ (jeœli zacz¹³eœ komend¹ + "vimtutor", to ju¿ pracujesz na kopii). - Pamietaj, ze przewodnik ten zostal zaprojektowany do nauki poprzez - cwiczenia. Oznacza to, ze musisz wykonywac polecenia, by nauczyc sie ich - prawidlowo. Jesli bedziesz jedynie czytal tekst, szybko zapomnisz wiele - polecen! + Pamiêtaj, ¿e przewodnik ten zosta³ zaprojektowany do nauki poprzez + æwiczenia. Oznacza to, ¿e musisz wykonywaæ polecenia, by nauczyæ siê ich + prawid³owo. Jeœli bêdziesz jedynie czyta³ tekst, szybko zapomnisz wiele + poleceñ! - Teraz upewnij sie, ze nie masz wcisnietego Caps Locka i wciskaj j - tak dlugo dopóki Lekcja 1.1.1. nie wypelni calkowicie ekranu. + Teraz upewnij siê, ¿e nie masz wciœniêtego Caps Locka i wciskaj j + tak d³ugo dopóki Lekcja 1.1.1. nie wype³ni ca³kowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.1.1.: PORUSZANIE SIE KURSOREM + Lekcja 1.1.1.: PORUSZANIE SIÊ KURSOREM - ** By wykonac ruch kursorem, wcisnij h, j, k, l jak pokazano. ** + ** By wykonaæ ruch kursorem, wciœnij h, j, k, l jak pokazano. ** ^ k Wskazówka: h jest po lewej < h l > l jest po prawej - j j wyglada jak strzalka w dól + j j wygl¹da jak strza³ka w dó³ v - 1. Poruszaj kursorem dopóki nie bedziesz pewien, ze pamietasz polecenia. + 1. Poruszaj kursorem dopóki nie bêdziesz pewien, ¿e pamiêtasz polecenia. - 2. Trzymaj j tak dlugo az bedzie sie powtarzal. - Teraz wiesz jak dojsc do nastepnej lekcji. + 2. Trzymaj j tak d³ugo a¿ bêdzie siê powtarza³. + Teraz wiesz jak dojœæ do nastêpnej lekcji. - 3. Uzywajac strzalki w dól przejdz do nastepnej lekcji. + 3. U¿ywaj¹c strza³ki w dó³ przejdŸ do nastêpnej lekcji. -Uwaga: Jesli nie jestes pewien czegos co wpisales, wcisnij , by wrócic do +Uwaga: Jeœli nie jesteœ pewien czegoœ co wpisa³eœ, wciœnij , by wróciæ do trybu Normal. Wtedy powtórz polecenie. -Uwaga: Klawisze kursora takze powinny dzialac, ale uzywajac hjkl bedziesz - w stanie poruszac sie o wiele szybciej, jak sie tylko przyzwyczaisz. - Naprawde! +Uwaga: Klawisze kursora tak¿e powinny dzia³aæ, ale u¿ywaj¹c hjkl bêdziesz + w stanie poruszaæ siê o wiele szybciej, jak siê tylko przyzwyczaisz. + Naprawdê! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.2.: WYCHODZENIE Z VIM-a - !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj cala lekcje !! + !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca³¹ lekcjê !! - 1. Wcisnij (aby upewnic sie, ze jestes w trybie Normal). + 1. Wciœnij (aby upewniæ siê, ¿e jesteœ w trybie Normal). 2. Wpisz: :q!. - To spowoduje wyjscie z edytora PORZUCAJAC wszelkie zmiany, jakie - zdazyles zrobic. Jesli chcesz zapamietac zmiany i wyjsc, + To spowoduje wyjœcie z edytora PORZUCAJ¥C wszelkie zmiany, jakie + zd¹¿y³eœ zrobiæ. Jeœli chcesz zapamiêtaæ zmiany i wyjœæ, wpisz: :wq - 3. Kiedy widzisz znak zachety powloki wpisz komende, zeby wrócic + 3. Kiedy widzisz znak zachêty pow³oki wpisz komendê, ¿eby wróciæ do tutoriala. Czyli: vimtutor - 4. Jesli chcesz zapamietac polecenia, wykonaj kroki 1. do 3., aby - wyjsc i wrócic do edytora. + 4. Jeœli chcesz zapamiêtaæ polecenia, wykonaj kroki 1. do 3., aby + wyjœæ i wróciæ do edytora. -UWAGA: :q! porzuca wszelkie zmiany jakie zrobiles. W nastepnych - lekcjach dowiesz sie jak je zapamietywac. +UWAGA: :q! porzuca wszelkie zmiany jakie zrobi³eœ. W nastêpnych + lekcjach dowiesz siê jak je zapamiêtywaæ. - 5. Przenies kursor do lekcji 1.1.3. + 5. Przenieœ kursor do lekcji 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.3.: EDYCJA TEKSTU - KASOWANIE - ** Wcisnij x aby usunac znak pod kursorem. ** + ** Wciœnij x aby usun¹æ znak pod kursorem. ** - 1. Przenies kursor do linii ponizej oznaczonej --->. + 1. Przenieœ kursor do linii poni¿ej oznaczonej --->. - 2. By poprawic bledy, naprowadz kursor na znak do usuniecia. + 2. By poprawiæ b³êdy, naprowadŸ kursor na znak do usuniêcia. - 3. Wcisnij x aby usunac niechciany znak. + 3. Wciœnij x aby usun¹æ niechciany znak. 4. Powtarzaj kroki 2. do 4. dopóki zdanie nie jest poprawne. ----> Kkrowa prrzeskoczyla prrzez ksiiezycc. +---> Kkrowa prrzeskoczy³a prrzez ksiiê¿ycc. - 5. Teraz, kiedy zdanie jest poprawione, przejdz do Lekcji 1.1.4. + 5. Teraz, kiedy zdanie jest poprawione, przejdŸ do Lekcji 1.1.4. -UWAGA: Ucz sie przez cwiczenie, nie wkuwanie. +UWAGA: Ucz siê przez æwiczenie, nie wkuwanie. @@ -97,135 +97,135 @@ UWAGA: Ucz sie przez cwiczenie, nie wkuwanie. Lekcja 1.1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) - ** Wcisnij i aby wstawic tekst. ** + ** Wciœnij i aby wstawiæ tekst. ** - 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. + 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. - 2. Aby poprawic pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, - gdzie tekst ma byc wstawiony. + 2. Aby poprawiæ pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, + gdzie tekst ma byæ wstawiony. - 3. Wcisnij i a nastepnie wpisz konieczne poprawki. + 3. Wciœnij i a nastêpnie wpisz konieczne poprawki. - 4. Po poprawieniu bledu wcisnij , by wrócic do trybu Normal. - Powtarzaj kroki 2. do 4., aby poprawic cale zdanie. + 4. Po poprawieniu b³êdu wciœnij , by wróciæ do trybu Normal. + Powtarzaj kroki 2. do 4., aby poprawiæ ca³e zdanie. ----> W tej brkje troche . ----> W tej linii brakuje troche tekstu. +---> W tej brkje trochê . +---> W tej linii brakuje trochê tekstu. - 5. Kiedy czujesz sie swobodnie wstawiajac tekst, przejdz do - podsumowania ponizej. + 5. Kiedy czujesz siê swobodnie wstawiaj¹c tekst, przejdŸ do + podsumowania poni¿ej. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) - ** Wcisnij A by dodac tekst. ** + ** Wciœnij A by dodaæ tekst. ** - 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. - Nie ma znaczenia, który to bedzie znak. + 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. + Nie ma znaczenia, który to bêdzie znak. - 2. Wcisnij A i wpisz odpowiednie dodatki. + 2. Wciœnij A i wpisz odpowiednie dodatki. - 3. Kiedy tekst zostal dodany, wcisnij i wróc do trybu Normalnego. + 3. Kiedy tekst zosta³ dodany, wciœnij i wróæ do trybu Normalnego. - 4. Przenies kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., - aby poprawic zdanie. + 4. Przenieœ kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., + aby poprawiæ zdanie. ---> Brakuje tu tro - Brakuje tu troche tekstu. ----> Tu tez troche bra - Tu tez troche brakuje. + Brakuje tu trochê tekstu. +---> Tu te¿ trochê bra + Tu te¿ trochê brakuje. - 5. Kiedy juz utrwaliles cwiczenie, przejdz do lekcji 1.1.6. + 5. Kiedy ju¿ utrwali³eœ æwiczenie, przejdŸ do lekcji 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.6.: EDYCJA PLIKU - ** Uzyj :wq aby zapisac plik i wyjsc. ** + ** U¿yj :wq aby zapisaæ plik i wyjœæ. ** - !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj cala lekcje !! + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca³¹ lekcjê !! - 1. Zakoncz tutorial tak jak w lekcji 1.1.2.: :q! - lub, jesli masz dostep do innego terminala, wykonaj kolejne kroki tam. + 1. Zakoñcz tutorial tak jak w lekcji 1.1.2.: :q! + lub, jeœli masz dostêp do innego terminala, wykonaj kolejne kroki tam. - 2. W powloce wydaj polecenie: vim tutor - "vim" jest poleceniem uruchamiajacym edytor Vim. 'tutor' to nazwa pliku, - jaki chcesz edytowac. Uzyj pliku, który moze zostac zmieniony. + 2. W pow³oce wydaj polecenie: vim tutor + "vim" jest poleceniem uruchamiaj¹cym edytor Vim. 'tutor' to nazwa pliku, + jaki chcesz edytowaæ. U¿yj pliku, który mo¿e zostaæ zmieniony. - 3. Dodaj i usun tekst tak, jak sie nauczyles w poprzednich lekcjach. + 3. Dodaj i usuñ tekst tak, jak siê nauczy³eœ w poprzednich lekcjach. - 4. Zapisz plik ze zmianami i opusc Vima: :wq + 4. Zapisz plik ze zmianami i opuœæ Vima: :wq - 5. Jesli zakonczyles vimtutor w kroku 1., uruchom go ponownie i przejdz - do podsumowania ponizej. + 5. Jeœli zakoñczy³eœ vimtutor w kroku 1., uruchom go ponownie i przejdŸ + do podsumowania poni¿ej. 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1.1. PODSUMOWANIE - 1. Poruszasz kursorem uzywajac "strzalek" i klawiszy hjkl . - h (w lewo) j (w dól) k (do góry) l (w prawo) + 1. Poruszasz kursorem u¿ywaj¹c "strza³ek" i klawiszy hjkl . + h (w lewo) j (w dó³) k (do góry) l (w prawo) - 2. By wejsc do Vima, (z powloki) wpisz: + 2. By wejœæ do Vima, (z pow³oki) wpisz: vim NAZWA_PLIKU - 3. By wyjsc z Vima, wpisz: - :q! by usunac wszystkie zmiany. - LUB: :wq by zmiany zachowac. + 3. By wyjœæ z Vima, wpisz: + :q! by usun¹æ wszystkie zmiany. + LUB: :wq by zmiany zachowaæ. - 4. By usunac znak pod kursorem, wcisnij: x + 4. By usun¹æ znak pod kursorem, wciœnij: x - 5. By wstawic tekst przed kursorem lub dodac: + 5. By wstawiæ tekst przed kursorem lub dodaæ: i wpisz tekst wstawi przed kursorem - A wpisz tekst doda na koncu linii + A wpisz tekst doda na koñcu linii -UWAGA: Wcisniecie przeniesie Cie z powrotem do trybu Normal - lub odwola niechciane lub czesciowo wprowadzone polecenia. +UWAGA: Wciœniêcie przeniesie Ciê z powrotem do trybu Normal + lub odwo³a niechciane lub czêœciowo wprowadzone polecenia. -Teraz mozemy kontynuowac i przejsc do Lekcji 1.2. +Teraz mo¿emy kontynuowaæ i przejœæ do Lekcji 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.1.: POLECENIE DELETE (usuwanie) - ** Wpisz dw by usunac wyraz. ** + ** Wpisz dw by usun¹æ wyraz. ** - 1. Wcisnij , by upewnic sie, ze jestes w trybie Normal. + 1. Wciœnij , by upewniæ siê, ¿e jesteœ w trybie Normal. - 2. Przenies kursor do linii ponizej oznaczonej --->. + 2. Przenieœ kursor do linii poni¿ej oznaczonej --->. - 3. Przesun kursor na poczatek wyrazu, który chcesz usunac. + 3. Przesuñ kursor na pocz¹tek wyrazu, który chcesz usun¹æ. - 4. Wpisz dw by usunac wyraz. + 4. Wpisz dw by usun¹æ wyraz. - UWAGA: Litera d pojawi sie na dole ekranu. Vim czeka na wpisanie w . - Jesli zobaczysz inny znak, oznacza to, ze wpisales cos zle; wcisnij - i zacznij od poczatku. + UWAGA: Litera d pojawi siê na dole ekranu. Vim czeka na wpisanie w . + Jeœli zobaczysz inny znak, oznacza to, ¿e wpisa³eœ coœ Ÿle; wciœnij + i zacznij od pocz¹tku. ----> Jest tu pare papier wyrazów, które kamien nie naleza do nozyce tego zdania. +---> Jest tu parê papier wyrazów, które kamieñ nie nale¿¹ do no¿yce tego zdania. - 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie bedzie poprawne, potem - przejdz do Lekcji 1.2.2. + 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie bêdzie poprawne, potem + przejdŸ do Lekcji 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.2.2.: WIECEJ POLECEN USUWAJACYCH + Lekcja 1.2.2.: WIÊCEJ POLECEÑ USUWAJ¥CYCH - ** Wpisz d$ aby usunac tekst do konca linii. ** + ** Wpisz d$ aby usun¹æ tekst do koñca linii. ** - 1. Wcisnij aby sie upewnic, ze jestes w trybie Normal. + 1. Wciœnij aby siê upewniæ, ¿e jesteœ w trybie Normal. - 2. Przenies kursor do linii ponizej oznaczonej --->. + 2. Przenieœ kursor do linii poni¿ej oznaczonej --->. - 3. Przenies kursor do konca poprawnego zdania (PO pierwszej . ). + 3. Przenieœ kursor do koñca poprawnego zdania (PO pierwszej . ). - 4. Wpisz d$ aby usunac reszte linii. + 4. Wpisz d$ aby usun¹æ resztê linii. ----> Ktos wpisal koniec tego zdania dwukrotnie. zdania dwukrotnie. +---> Ktoœ wpisa³ koniec tego zdania dwukrotnie. zdania dwukrotnie. - 5. Przejdz do Lekcji 1.2.3., by zrozumiec co sie stalo. + 5. PrzejdŸ do Lekcji 1.2.3., by zrozumieæ co siê sta³o. @@ -235,68 +235,68 @@ Teraz mozemy kontynuowac i przejsc do Lekcji 1.2. Lekcja 1.2.3.: O OPERATORACH I RUCHACH - Wiele polecen zmieniajacych tekst jest zlozonych z operatora i ruchu. - Format dla polecenia usuwajacego z operatorem d jest nastepujacy: + Wiele poleceñ zmieniaj¹cych tekst jest z³o¿onych z operatora i ruchu. + Format dla polecenia usuwaj¹cego z operatorem d jest nastêpuj¹cy: d ruch gdzie: d - operator usuwania. - ruch - na czym polecenie bedzie wykonywane (lista ponizej). + ruch - na czym polecenie bêdzie wykonywane (lista poni¿ej). Krótka lista ruchów: - w - do poczatku nastepnego wyrazu WYLACZAJAC pierwszy znak. - e - do konca biezacego wyrazu, WLACZAJAC ostatni znak. - $ - do konca linii, WLACZAJAC ostatni znak. + w - do pocz¹tku nastêpnego wyrazu WY£¥CZAJ¥C pierwszy znak. + e - do koñca bie¿¹cego wyrazu, W£¥CZAJ¥C ostatni znak. + $ - do koñca linii, W£¥CZAJ¥C ostatni znak. -W ten sposób wpisanie de usunie znaki od kursora do konca wyrazu. +W ten sposób wpisanie de usunie znaki od kursora do koñca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor - tak, jak to okreslono. + tak, jak to okreœlono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.2.4.: UZYCIE MNOZNIKA DLA RUCHU + Lekcja 1.2.4.: U¯YCIE MNO¯NIKA DLA RUCHU - ** Wpisanie liczby przed ruchem powtarza ruch odpowiednia ilosc razy. ** + ** Wpisanie liczby przed ruchem powtarza ruch odpowiedni¹ iloœæ razy. ** - 1. Przenies kursor na poczatek linii ponizej zaznaczonej --->. + 1. Przenieœ kursor na pocz¹tek linii poni¿ej zaznaczonej --->. - 2. Wpisz 2w aby przeniesc kursor o dwa wyrazy do przodu. + 2. Wpisz 2w aby przenieœæ kursor o dwa wyrazy do przodu. - 3. Wpisz 3e aby przeniesc kursor do konca trzeciego wyrazu w przód. + 3. Wpisz 3e aby przenieœæ kursor do koñca trzeciego wyrazu w przód. - 4. Wpisz 0 (zero), aby przeniesc kursor na poczatek linii. + 4. Wpisz 0 (zero), aby przenieœæ kursor na pocz¹tek linii. 5. Powtórz kroki 2. i 3. z innymi liczbami. - ---> To jest zwykly wiersz z wyrazami, po których mozesz sie poruszac. + ---> To jest zwyk³y wiersz z wyrazami, po których mo¿esz siê poruszaæ. - 6. Przejdz do lekcji 1.2.5. + 6. PrzejdŸ do lekcji 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.2.5.: UZYCIE MNOZNIKA, BY WIECEJ USUNAC + Lekcja 1.2.5.: U¯YCIE MNO¯NIKA, BY WIÊCEJ USUN¥Æ - ** Wpisanie liczby z operatorem powtarza go odpowiednia ilosc razy. ** + ** Wpisanie liczby z operatorem powtarza go odpowiedni¹ iloœæ razy. ** - W wyzej wspomnianej kombinacji operatora usuwania i ruchu podaj mnoznik - przed ruchem, by wiecej usunac: + W wy¿ej wspomnianej kombinacji operatora usuwania i ruchu podaj mno¿nik + przed ruchem, by wiêcej usun¹æ: d liczba ruch - 1. Przenies kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. + 1. Przenieœ kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. - 2. Wpisz 2dw aby usunac dwa wyrazy KAPITALIKAMI. + 2. Wpisz 2dw aby usun¹æ dwa wyrazy KAPITALIKAMI. - 3. Powtarzaj kroki 1. i 2. z innymi mnoznikami, aby usunac kolejne wyrazy + 3. Powtarzaj kroki 1. i 2. z innymi mno¿nikami, aby usun¹æ kolejne wyrazy KAPITALIKAMI jednym poleceniem ----> ta ASD WE linia QWE ASDF ZXCV FG wyrazów zostala ERT FGH CF oczyszczona. +---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów zosta³a ERT FGH CF oczyszczona. -UWAGA: Mnoznik pomiedzy operatorem d i ruchem dziala podobnie do ruchu bez +UWAGA: Mno¿nik pomiêdzy operatorem d i ruchem dzia³a podobnie do ruchu bez operatora. @@ -304,68 +304,68 @@ UWAGA: Mnoznik pomiedzy operatorem d i ruchem dziala podobnie do ruchu bez Lekcja 1.2.6.: OPEROWANIE NA LINIACH - ** Wpisz dd aby usunac cala linie. ** + ** Wpisz dd aby usun¹æ ca³¹ liniê. ** - Z powodu czestosci usuwania calych linii, projektanci Vi zdecydowali, ze - bedzie latwiej wpisac dwa razy d aby usunac linie. + Z powodu czêstoœci usuwania ca³ych linii, projektanci Vi zdecydowali, ¿e + bêdzie ³atwiej wpisaæ dwa razy d aby usun¹æ liniê. - 1. Przenies kursor do drugiego zdania z wierszyka ponizej. - 2. Wpisz dd aby usunac wiersz. - 3. Teraz przenies sie do czwartego wiersza. - 4. Wpisz 2dd aby usunac dwa wiersze. + 1. Przenieœ kursor do drugiego zdania z wierszyka poni¿ej. + 2. Wpisz dd aby usun¹æ wiersz. + 3. Teraz przenieœ siê do czwartego wiersza. + 4. Wpisz 2dd aby usun¹æ dwa wiersze. ----> 1) Róze sa czerwone, ----> 2) Bloto jest fajne, ----> 3) Fiolki sa niebieskie, +---> 1) Ró¿e s¹ czerwone, +---> 2) B³oto jest fajne, +---> 3) Fio³ki s¹ niebieskie, ---> 4) Mam samochód, ---> 5) Zegar podaje czas, ----> 6) Cukier jest slodki, ----> 7) I ty tez. +---> 6) Cukier jest s³odki, +---> 7) I ty te¿. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.7.: POLECENIE UNDO (cofnij) - ** Wcisnij u aby cofnac skutki ostatniego polecenia. - U zas, by cofnac skutki dla calej linii. ** + ** Wciœnij u aby cofn¹æ skutki ostatniego polecenia. + U zaœ, by cofn¹æ skutki dla ca³ej linii. ** - 1. Przenies kursor do zdania ponizej oznaczonego ---> i umiesc go na - pierwszym bledzie. - 2. Wpisz x aby usunac pierwszy niechciany znak. - 3. Teraz wcisnij u aby cofnac skutki ostatniego polecenia. - 4. Tym razem popraw wszystkie bledy w linii uzywajac polecenia x . - 5. Teraz wcisnij wielkie U aby przywrócic linie do oryginalnego stanu. - 6. Teraz wcisnij u kilka razy, by cofnac U i poprzednie polecenia. - 7. Teraz wpisz CTRL-R (trzymaj równoczesnie wcisniete klawisze CTRL i R) - kilka razy, by cofnac cofniecia. + 1. Przenieœ kursor do zdania poni¿ej oznaczonego ---> i umieœæ go na + pierwszym b³êdzie. + 2. Wpisz x aby usun¹æ pierwszy niechciany znak. + 3. Teraz wciœnij u aby cofn¹æ skutki ostatniego polecenia. + 4. Tym razem popraw wszystkie b³êdy w linii u¿ywaj¹c polecenia x . + 5. Teraz wciœnij wielkie U aby przywróciæ liniê do oryginalnego stanu. + 6. Teraz wciœnij u kilka razy, by cofn¹æ U i poprzednie polecenia. + 7. Teraz wpisz CTRL-R (trzymaj równoczeœnie wciœniête klawisze CTRL i R) + kilka razy, by cofn¹æ cofniêcia. ----> Poopraw bledyyy w teej liniii i zaamiien je prrzez coofnij. +---> Poopraw b³êdyyy w teej liniii i zaamiieñ je prrzez coofnij. - 8. To sa bardzo pozyteczne polecenia. + 8. To s¹ bardzo po¿yteczne polecenia. - Przejdz teraz do podsumowania Lekcji 1.2. + PrzejdŸ teraz do podsumowania Lekcji 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1.2. PODSUMOWANIE - 1. By usunac znaki od kursora do nastepnego wyrazu, wpisz: dw - 2. By usunac znaki od kursora do konca linii, wpisz: d$ - 3. By usunac cala linie: dd - 4. By powtórzyc ruch, poprzedz go liczba: 2w + 1. By usun¹æ znaki od kursora do nastêpnego wyrazu, wpisz: dw + 2. By usun¹æ znaki od kursora do koñca linii, wpisz: d$ + 3. By usun¹æ ca³¹ liniê: dd + 4. By powtórzyæ ruch, poprzedŸ go liczb¹: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: - operator - to, co trzeba zrobic (np. d dla usuwania) - [liczba] - opcjonalne, ile razy powtórzyc ruch + operator - to, co trzeba zrobiæ (np. d dla usuwania) + [liczba] - opcjonalne, ile razy powtórzyæ ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), - $ (do konca linii) etc. + $ (do koñca linii) etc. - 6. By przejsc do poczatku linii, uzyj zera: 0 - 7. By cofnac poprzednie polecenie, wpisz: u (male u) - By cofnac wszystkie zmiany w linii, wpisz: U (wielkie U) - By cofnac cofniecie, wpisz: CTRL-R + 6. By przejœæ do pocz¹tku linii, u¿yj zera: 0 + 7. By cofn¹æ poprzednie polecenie, wpisz: u (ma³e u) + By cofn¹æ wszystkie zmiany w linii, wpisz: U (wielkie U) + By cofn¹æ cofniêcie, wpisz: CTRL-R @@ -373,182 +373,182 @@ UWAGA: Mnoznik pomiedzy operatorem d i ruchem dziala podobnie do ruchu bez Lekcja 1.3.1.: POLECENIE PUT (wstaw) - ** Wpisz p by wstawic ostatnie usuniecia za kursorem. ** + ** Wpisz p by wstawiæ ostatnie usuniêcia za kursorem. ** - 1. Przenies kursor do pierwszej linii ---> ponizej. + 1. Przenieœ kursor do pierwszej linii ---> poni¿ej. - 2. Wpisz dd aby usunac linie i przechowac ja w rejestrze Vima. + 2. Wpisz dd aby usun¹æ liniê i przechowaæ j¹ w rejestrze Vima. - 3. Przenies kursor do linii c), POWYZEJ tej, gdzie usunieta linia powinna - sie znajdowac. + 3. Przenieœ kursor do linii c), POWY¯EJ tej, gdzie usuniêta linia powinna + siê znajdowaæ. - 4. Wcisnij p by wstawic linie ponizej kursora. + 4. Wciœnij p by wstawiæ liniê poni¿ej kursora. - 5. Powtarzaj kroki 2. do 4. az znajda sie w odpowiednim porzadku. + 5. Powtarzaj kroki 2. do 4. a¿ znajd¹ siê w odpowiednim porz¹dku. ----> d) Jak dwa aniolki. ----> b) Na dole fiolki, ----> c) A my sie kochamy, ----> a) Na górze róze, +---> d) Jak dwa anio³ki. +---> b) Na dole fio³ki, +---> c) A my siê kochamy, +---> a) Na górze ró¿e, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.3.2.: POLECENIE REPLACE (zastap) + Lekcja 1.3.2.: POLECENIE REPLACE (zast¹p) - ** Wpisz rx aby zastapic znak pod kursorem na x . ** + ** Wpisz rx aby zast¹piæ znak pod kursorem na x . ** - 1. Przenies kursor do pierwszej linii ponizej oznaczonej ---> + 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej ---> - 2. Ustaw kursor na pierwszym bledzie. + 2. Ustaw kursor na pierwszym b³êdzie. - 3. Wpisz r a potem znak jaki powinien go zastapic. + 3. Wpisz r a potem znak jaki powinien go zast¹piæ. - 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bedzie taka, jak druga. + 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie bêdzie taka, jak druga. ----> Kjedy ten wiersz bil wstókiwany, ktos wciznal pere zlych klawirzy! ----> Kiedy ten wiersz byl wstukiwany, ktos wcisnal pare zlych klawiszy! +---> Kjedy ten wiersz bi³ wstókiwany, ktoœ wcizn¹³ perê z³ych klawirzy! +---> Kiedy ten wiersz by³ wstukiwany, ktoœ wcisn¹³ parê z³ych klawiszy! - 5. Teraz czas na Lekcje 1.3.3. + 5. Teraz czas na Lekcjê 1.3.3. -UWAGA: Pamietaj, by uczyc sie cwiczac, a nie pamieciowo. +UWAGA: Pamiêtaj, by uczyæ siê æwicz¹c, a nie pamiêciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.3.3.: OPERATOR CHANGE (zmien) + Lekcja 1.3.3.: OPERATOR CHANGE (zmieñ) - ** By zmienic do konca wyrazu, wpisz ce . ** + ** By zmieniæ do koñca wyrazu, wpisz ce . ** - 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. + 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. - 2. Umiesc kursor na u w lunos. + 2. Umieœæ kursor na u w lunos. 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). - 4. Wcisnij i przejdz do nastepnej planowanej zmiany. + 4. Wciœnij i przejdŸ do nastêpnej planowanej zmiany. - 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie bedzie takie same, + 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie bêdzie takie same, jak drugie. ----> Ta lunos ma pire slów, które tzina zbnic uzifajonc pcmazu zmien. ----> Ta linia ma pare slów, które trzeba zmienic uzywajac polecenia zmien. +---> Ta lunos ma pire s³ów, które t¿ina zbnic u¿ifajonc pcmazu zmieñ. +---> Ta linia ma parê s³ów, które trzeba zmieniæ u¿ywaj¹c polecenia zmieñ. - Zauwaz, ze ce nie tylko zamienia wyraz, ale takze zmienia tryb na + Zauwa¿, ¿e ce nie tylko zamienia wyraz, ale tak¿e zmienia tryb na Insert (wprowadzanie). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.3.4.: WIECEJ ZMIAN UZYWAJAC c + Lekcja 1.3.4.: WIÊCEJ ZMIAN U¯YWAJ¥C c - ** Polecenie change uzywa takich samych ruchów, jak delete. ** + ** Polecenie change u¿ywa takich samych ruchów, jak delete. ** - 1. Operator change dziala tak samo, jak delete. Format wyglada tak: + 1. Operator change dzia³a tak samo, jak delete. Format wygl¹da tak: c [liczba] ruch - 2. Ruchy sa takze takie same, np.: w (wyraz), $ (koniec linii) etc. + 2. Ruchy s¹ tak¿e takie same, np.: w (wyraz), $ (koniec linii) etc. - 3. Przenies sie do pierwszej linii ponizej oznaczonej ---> + 3. Przenieœ siê do pierwszej linii poni¿ej oznaczonej ---> - 4. Ustaw kursor na pierwszym bledzie. + 4. Ustaw kursor na pierwszym b³êdzie. - 5. Wpisz c$ , popraw koniec wiersza i wcisnij . + 5. Wpisz c$ , popraw koniec wiersza i wciœnij . ----> Koniec tego wiersza musi byc poprawiony, aby wygladal tak, jak drugi. ----> Koniec tego wiersza musi byc poprawiony uzywajac polecenia c$ . +---> Koniec tego wiersza musi byæ poprawiony, aby wygl¹da³ tak, jak drugi. +---> Koniec tego wiersza musi byæ poprawiony u¿ywaj¹c polecenia c$ . -UWAGA: Mozesz uzywac aby poprawiac bledy w czasie pisania. +UWAGA: Mo¿esz u¿ywaæ aby poprawiaæ b³êdy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1.3. PODSUMOWANIE - 1. Aby wstawic tekst, który zostal wczesniej usuniety wcisnij p . To - polecenie wstawia skasowany tekst PO kursorze (jesli cala linia - zostala usunieta, zostanie ona umieszczona w linii ponizej kursora). + 1. Aby wstawiæ tekst, który zosta³ wczeœniej usuniêty wciœnij p . To + polecenie wstawia skasowany tekst PO kursorze (jeœli ca³a linia + zosta³a usuniêta, zostanie ona umieszczona w linii poni¿ej kursora). - 2. By zamienic znak pod kursorem, wcisnij r a potem znak, który ma zastapic + 2. By zamieniæ znak pod kursorem, wciœnij r a potem znak, który ma zast¹piæ oryginalny. - 3. Operator change pozwala Ci na zastapienie od kursora do miejsca, gdzie - zabralby Cie ruch. Np. wpisz ce aby zamienic tekst od kursora do konca - wyrazu, c$ aby zmienic tekst do konca linii. + 3. Operator change pozwala Ci na zast¹pienie od kursora do miejsca, gdzie + zabra³by Ciê ruch. Np. wpisz ce aby zamieniæ tekst od kursora do koñca + wyrazu, c$ aby zmieniæ tekst do koñca linii. - 4. Format do polecenia change (zmien): + 4. Format do polecenia change (zmieñ): c [liczba] obiekt - Teraz przejdz do nastepnej lekcji. + Teraz przejdŸ do nastêpnej lekcji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.4.1.: POLOZENIE KURSORA ORAZ STATUS PLIKU + Lekcja 1.4.1.: PO£O¯ENIE KURSORA ORAZ STATUS PLIKU - ** Nacisnij CTRL-G aby zobaczyc swoje polozenie w pliku i status - pliku. Nacisnij G aby przejsc do linii w pliku. ** + ** Naciœnij CTRL-G aby zobaczyæ swoje po³o¿enie w pliku i status + pliku. Naciœnij G aby przejœæ do linii w pliku. ** - UWAGA: Przeczytaj cala lekcje zanim wykonasz jakies polecenia!!! + UWAGA: Przeczytaj ca³¹ lekcjê zanim wykonasz jakieœ polecenia!!! - 1. Przytrzymaj klawisz CTRL i wcisnij g . Uzywamy notacji CTRL-G. - Na dole strony pojawi sie pasek statusu z nazwa pliku i pozycja w pliku. - Zapamietaj numer linii dla potrzeb kroku 3. + 1. Przytrzymaj klawisz CTRL i wciœnij g . U¿ywamy notacji CTRL-G. + Na dole strony pojawi siê pasek statusu z nazw¹ pliku i pozycj¹ w pliku. + Zapamiêtaj numer linii dla potrzeb kroku 3. -UWAGA: Mozesz tez zobaczyc pozycje kursora w prawym, dolnym rogu ekranu. - Dzieje sie tak kiedy ustawiona jest opcja 'ruler' (wiecej w lekcji 6.). +UWAGA: Mo¿esz te¿ zobaczyæ pozycjê kursora w prawym, dolnym rogu ekranu. + Dzieje siê tak kiedy ustawiona jest opcja 'ruler' (wiêcej w lekcji 6.). - 2. Wcisnij G aby przejsc na koniec pliku. - Wcisnij gg aby przejsc do poczatku pliku. + 2. Wciœnij G aby przejœæ na koniec pliku. + Wciœnij gg aby przejœæ do pocz¹tku pliku. - 3. Wpisz numer linii, w której byles a potem G . To przeniesie Cie - z powrotem do linii, w której byles kiedy wcisnales CTRL-G. + 3. Wpisz numer linii, w której by³eœ a potem G . To przeniesie Ciê + z powrotem do linii, w której by³eœ kiedy wcisn¹³eœ CTRL-G. - 4. Jesli czujesz sie wystarczajaco pewnie, wykonaj kroki 1-3. + 4. Jeœli czujesz siê wystarczaj¹co pewnie, wykonaj kroki 1-3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.4.2.: POLECENIE SZUKAJ - ** Wpisz / a nastepnie wyrazenie, aby je znalezc. ** + ** Wpisz / a nastêpnie wyra¿enie, aby je znaleŸæ. ** - 1. W trybie Normal wpisz / . Zauwaz, ze znak ten oraz kursor pojawia - sie na dole ekranu tak samo, jak polecenie : . + 1. W trybie Normal wpisz / . Zauwa¿, ¿e znak ten oraz kursor pojawi¹ + siê na dole ekranu tak samo, jak polecenie : . - 2. Teraz wpisz blond . To jest slowo, którego chcesz szukac. + 2. Teraz wpisz b³ond . To jest s³owo, którego chcesz szukaæ. - 3. By szukac tej samej frazy ponownie, po prostu wcisnij n . - Aby szukac tej frazy w przeciwnym, kierunku wcisnij N . + 3. By szukaæ tej samej frazy ponownie, po prostu wciœnij n . + Aby szukaæ tej frazy w przeciwnym, kierunku wciœnij N . - 4. Jesli chcesz szukac frazy do tylu, uzyj polecenia ? zamiast / . + 4. Jeœli chcesz szukaæ frazy do ty³u, u¿yj polecenia ? zamiast / . - 5. Aby wrócic gdzie byles, wcisnij CTRL-O. Powtarzaj, by wrócic dalej. CTRL-I + 5. Aby wróciæ gdzie by³eœ, wciœnij CTRL-O. Powtarzaj, by wróciæ dalej. CTRL-I idzie do przodu. -Uwaga: 'blond' to nie jest metoda, by przeliterowac blad; 'blond' to blad. -Uwaga: Kiedy szukanie osiagnie koniec pliku, bedzie kontynuowane od poczatku - o ile opcja 'wrapscan' nie zostala przestawiona. +Uwaga: 'b³ond' to nie jest metoda, by przeliterowaæ b³¹d; 'b³ond' to b³¹d. +Uwaga: Kiedy szukanie osi¹gnie koniec pliku, bêdzie kontynuowane od pocz¹tku + o ile opcja 'wrapscan' nie zosta³a przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.4.3.: W POSZUKIWANIU PARUJACYCH NAWIASÓW + Lekcja 1.4.3.: W POSZUKIWANIU PARUJ¥CYCH NAWIASÓW - ** Wpisz % by znalezc parujacy ), ], lub } . ** + ** Wpisz % by znaleŸæ paruj¹cy ), ], lub } . ** - 1. Umiesc kursor na któryms z (, [, lub { w linii ponizej oznaczonej --->. + 1. Umieœæ kursor na którymœ z (, [, lub { w linii poni¿ej oznaczonej --->. 2. Teraz wpisz znak % . - 3. Kursor powinien sie znalezc na parujacym nawiasie. + 3. Kursor powinien siê znaleŸæ na paruj¹cym nawiasie. - 4. Wcisnij % aby przeniesc kursor z powrotem do parujacego nawiasu. + 4. Wciœnij % aby przenieœæ kursor z powrotem do paruj¹cego nawiasu. - 5. Przenies kursor do innego (,),[,],{ lub } i zobacz co robi % . + 5. Przenieœ kursor do innego (,),[,],{ lub } i zobacz co robi % . ---> To ( jest linia testowa z (, [, ] i {, } . )) -Uwaga: Ta funkcja jest bardzo uzyteczna w debuggowaniu programu +Uwaga: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu z niesparowanymi nawiasami! @@ -557,137 +557,137 @@ Uwaga: Ta funkcja jest bardzo uzyteczna w debuggowaniu programu Lekcja 1.4.4.: POLECENIE SUBSTITUTE (zamiana) - ** Wpisz :s/stary/nowy/g aby zamienic 'stary' na 'nowy'. ** + ** Wpisz :s/stary/nowy/g aby zamieniæ 'stary' na 'nowy'. ** - 1. Przenies kursor do linii ponizej oznaczonej --->. + 1. Przenieœ kursor do linii poni¿ej oznaczonej --->. - 2. Wpisz :s/czaas/czas . Zauwaz, ze to polecenie zmienia - tylko pierwsze wystapienie 'czaas' w linii. + 2. Wpisz :s/czaas/czas . Zauwa¿, ¿e to polecenie zmienia + tylko pierwsze wyst¹pienie 'czaas' w linii. - 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamiane (substytucje) - globalnie w calej linii. Zmienia wszystkie wystapienia 'czaas' w linii. + 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianê (substytucjê) + globalnie w ca³ej linii. Zmienia wszystkie wyst¹pienia 'czaas' w linii. ----> Najlepszy czaas na zobaczenie najladniejszych kwiatów to czaas wiosny. +---> Najlepszy czaas na zobaczenie naj³adniejszych kwiatów to czaas wiosny. - 4. Aby zmienic wszystkie wystapienia lancucha znaków pomiedzy dwoma liniami, - wpisz: :#,#s/stare/nowe/g gdzie #,# sa numerami linii ograniczajacych - region, gdzie ma nastapic zamiana. - wpisz :%s/stare/nowe/g by zmienic wszystkie wystapienia w calym pliku. - wpisz :%s/stare/nowe/gc by zmienic wszystkie wystapienia w calym - pliku, proszac o potwierdzenie za kazdym razem. + 4. Aby zmieniæ wszystkie wyst¹pienia ³añcucha znaków pomiêdzy dwoma liniami, + wpisz: :#,#s/stare/nowe/g gdzie #,# s¹ numerami linii ograniczaj¹cych + region, gdzie ma nast¹piæ zamiana. + wpisz :%s/stare/nowe/g by zmieniæ wszystkie wyst¹pienia w ca³ym pliku. + wpisz :%s/stare/nowe/gc by zmieniæ wszystkie wyst¹pienia w ca³ym + pliku, prosz¹c o potwierdzenie za ka¿dym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1.4. PODSUMOWANIE - 1. CTRL-G pokaze Twoja pozycje w pliku i status pliku. SHIFT-G przenosi - Cie do konca pliku. - G przenosi do konca pliku. + 1. CTRL-G poka¿e Twoj¹ pozycjê w pliku i status pliku. SHIFT-G przenosi + Ciê do koñca pliku. + G przenosi do koñca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. - 2. Wpisanie / a nastepnie lancucha znaków szuka lancucha DO PRZODU. - Wpisanie ? a nastepnie lancucha znaków szuka lancucha DO TYLU. - Po wyszukiwaniu wcisnij n by znalezc nastepne wystapienie szukanej - frazy w tym samym kierunku lub N by szukac w kierunku przeciwnym. + 2. Wpisanie / a nastêpnie ³añcucha znaków szuka ³añcucha DO PRZODU. + Wpisanie ? a nastêpnie ³añcucha znaków szuka ³añcucha DO TY£U. + Po wyszukiwaniu wciœnij n by znaleŸæ nastêpne wyst¹pienie szukanej + frazy w tym samym kierunku lub N by szukaæ w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. - 3. Wpisanie % gdy kursor znajduje sie na (,),[,],{, lub } lokalizuje - parujacy znak. + 3. Wpisanie % gdy kursor znajduje siê na (,),[,],{, lub } lokalizuje + paruj¹cy znak. - 4. By zamienic pierwszy stary na nowy w linii, wpisz :s/stary/nowy - By zamienic wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g - By zamienic frazy pomiedzy dwoma liniami # wpisz :#,#s/stary/nowy/g - By zamienic wszystkie wystapienia w pliku, wpisz :%s/stary/nowy/g - By Vim prosil Cie o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc + 4. By zamieniæ pierwszy stary na nowy w linii, wpisz :s/stary/nowy + By zamieniæ wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g + By zamieniæ frazy pomiêdzy dwoma liniami # wpisz :#,#s/stary/nowy/g + By zamieniæ wszystkie wyst¹pienia w pliku, wpisz :%s/stary/nowy/g + By Vim prosi³ Ciê o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.5.1.: JAK WYKONAC POLECENIA ZEWNETRZNE? + Lekcja 1.5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE? - ** Wpisz :! a nastepnie zewnetrzne polecenie, by je wykonac. ** + ** Wpisz :! a nastêpnie zewnêtrzne polecenie, by je wykonaæ. ** - 1. Wpisz znajome polecenie : by ustawic kursor na dole ekranu. To pozwala - na wprowadzenie komendy linii polecen. + 1. Wpisz znajome polecenie : by ustawiæ kursor na dole ekranu. To pozwala + na wprowadzenie komendy linii poleceñ. - 2. Teraz wstaw ! (wykrzyknik). To umozliwi Ci wykonanie dowolnego - zewnetrznego polecenia powloki. + 2. Teraz wstaw ! (wykrzyknik). To umo¿liwi Ci wykonanie dowolnego + zewnêtrznego polecenia pow³oki. - 3. Jako przyklad wpisz ls za ! a nastepnie wcisnij . To polecenie - pokaze spis plików w Twoim katalogu, tak jakbys byl przy znaku zachety - powloki. Mozesz tez uzyc :!dir jesli ls nie dziala. + 3. Jako przyk³ad wpisz ls za ! a nastêpnie wciœnij . To polecenie + poka¿e spis plików w Twoim katalogu, tak jakbyœ by³ przy znaku zachêty + pow³oki. Mo¿esz te¿ u¿yæ :!dir jeœli ls nie dzia³a. -Uwaga: W ten sposób mozna wykonac wszystkie polecenia powloki. -Uwaga: Wszystkie polecenia : musza byc zakonczone . - Od tego momentu nie zawsze bedziemy o tym wspominac. +Uwaga: W ten sposób mo¿na wykonaæ wszystkie polecenia pow³oki. +Uwaga: Wszystkie polecenia : musz¹ byæ zakoñczone . + Od tego momentu nie zawsze bêdziemy o tym wspominaæ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.5.2.: WIECEJ O ZAPISYWANIU PLIKÓW + Lekcja 1.5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW - ** By zachowac zmiany w tekscie, wpisz :w NAZWA_PLIKU . ** + ** By zachowaæ zmiany w tekœcie, wpisz :w NAZWA_PLIKU . ** - 1. Wpisz :!dir lub :!ls by zobaczyc spis plików w katalogu. - Juz wiesz, ze musisz po tym wcisnac . + 1. Wpisz :!dir lub :!ls by zobaczyæ spis plików w katalogu. + Ju¿ wiesz, ¿e musisz po tym wcisn¹æ . - 2. Wybierz nazwe pliku, jaka jeszcze nie istnieje, np. TEST. + 2. Wybierz nazwê pliku, jaka jeszcze nie istnieje, np. TEST. - 3. Teraz wpisz: :w TEST (gdzie TEST jest nazwa pliku jaka wybrales.) + 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw¹ pliku jak¹ wybra³eœ.) - 4. To polecenie zapamieta caly plik (Vim Tutor) pod nazwa TEST. - By to sprawdzic, wpisz :!dir lub :!ls zeby znowu zobaczyc liste plików. + 4. To polecenie zapamiêta ca³y plik (Vim Tutor) pod nazw¹ TEST. + By to sprawdziæ, wpisz :!dir lub :!ls ¿eby znowu zobaczyæ listê plików. -Uwaga: Zauwaz, ze gdybys teraz wyszedl z Vima, a nastepnie wszedl ponownie - poleceniem vim TEST , plik bylby dokladna kopia tutoriala, kiedy go - zapisywales. +Uwaga: Zauwa¿, ¿e gdybyœ teraz wyszed³ z Vima, a nastêpnie wszed³ ponownie + poleceniem vim TEST , plik by³by dok³adn¹ kopi¹ tutoriala, kiedy go + zapisywa³eœ. - 5. Teraz usun plik wpisujac (MS-DOS): :!del TEST + 5. Teraz usuñ plik wpisuj¹c (MS-DOS): :!del TEST lub (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.5.3.: WYBRANIE TEKSTU DO ZAPISU - ** By zachowac czesc pliku, wpisz v ruch :w NAZWA_PLIKU ** + ** By zachowaæ czêœæ pliku, wpisz v ruch :w NAZWA_PLIKU ** - 1. Przenies kursor do tego wiersza. + 1. Przenieœ kursor do tego wiersza. - 2. Wcisnij v i przenies kursor do punktu 5. Zauwaz, ze tekst zostal - podswietlony. + 2. Wciœnij v i przenieœ kursor do punktu 5. Zauwa¿, ¿e tekst zosta³ + podœwietlony. - 3. Wcisnij znak : . Na dole ekranu pojawi sie :'<,'> . + 3. Wciœnij znak : . Na dole ekranu pojawi siê :'<,'> . 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. - Upewnij sie, ze widzisz :'<,'>w TEST zanim wcisniesz Enter. + Upewnij siê, ¿e widzisz :'<,'>w TEST zanim wciœniesz Enter. - 5. Vim zapisze wybrane linie do pliku TEST. Uzyj :!dir lub :!ls , zeby to - zobaczyc. Jeszcze go nie usuwaj! Uzyjemy go w nastepnej lekcji. + 5. Vim zapisze wybrane linie do pliku TEST. U¿yj :!dir lub :!ls , ¿eby to + zobaczyæ. Jeszcze go nie usuwaj! U¿yjemy go w nastêpnej lekcji. -UWAGA: Wcisniecie v zaczyna tryb Wizualny. Mozesz poruszac kursorem, by - zmienic rozmiary zaznaczenia. Mozesz tez uzyc operatora, by zrobic cos - z tekstem. Na przyklad d usuwa tekst. +UWAGA: Wciœniêcie v zaczyna tryb Wizualny. Mo¿esz poruszaæ kursorem, by + zmieniæ rozmiary zaznaczenia. Mo¿esz te¿ u¿yæ operatora, by zrobiæ coœ + z tekstem. Na przyk³ad d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.5.4.: WSTAWIANIE I LACZENIE PLIKÓW + Lekcja 1.5.4.: WSTAWIANIE I £¥CZENIE PLIKÓW - ** By wstawic zawartosc pliku, wpisz :r NAZWA_PLIKU ** + ** By wstawiæ zawartoœæ pliku, wpisz :r NAZWA_PLIKU ** - 1. Umiesc kursor tuz powyzej tej linii. + 1. Umieœæ kursor tu¿ powy¿ej tej linii. -UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 1.5.3. Potem przejdz - do DOLU, by zobaczyc ponownie te lekcje. +UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 1.5.3. Potem przejdŸ + do DO£U, by zobaczyæ ponownie tê lekcjê. - 2. Teraz wczytaj plik TEST uzywajac polecenia :r TEST , gdzie TEST - jest nazwa pliku. - Wczytany plik jest umieszczony ponizej linii z kursorem. + 2. Teraz wczytaj plik TEST u¿ywaj¹c polecenia :r TEST , gdzie TEST + jest nazw¹ pliku. + Wczytany plik jest umieszczony poni¿ej linii z kursorem. - 3. By sprawdzic czy plik zostal wczytany, cofnij kursor i zobacz, ze - teraz sa dwie kopie Lekcji 1.5.3., oryginal i kopia z pliku. + 3. By sprawdziæ czy plik zosta³ wczytany, cofnij kursor i zobacz, ¿e + teraz s¹ dwie kopie Lekcji 1.5.3., orygina³ i kopia z pliku. -UWAGA: Mozesz tez wczytac wyjscie zewnetrznego polecenia. Na przyklad - :r !ls wczytuje wyjscie polecenia ls i umieszcza je pod ponizej +UWAGA: Mo¿esz te¿ wczytaæ wyjœcie zewnêtrznego polecenia. Na przyk³ad + :r !ls wczytuje wyjœcie polecenia ls i umieszcza je pod poni¿ej kursora. @@ -695,22 +695,22 @@ UWAGA: Mozesz tez wczytac wyjscie zewnetrznego polecenia. Na przyklad LEKCJA 1.5. PODSUMOWANIE - 1. :!polecenie wykonuje polecenie zewnetrzne. + 1. :!polecenie wykonuje polecenie zewnêtrzne. - Uzytecznymi przykladami sa: + U¿ytecznymi przyk³adami s¹: :!dir - pokazuje spis plików w katalogu. :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. - 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazwa NAZWA_PLIKU. + 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazw¹ NAZWA_PLIKU. 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do - biezacego pliku ponizej kursora. + bie¿¹cego pliku poni¿ej kursora. - 5. :r !dir wczytuje wyjscie polecenia dir i umieszcza je ponizej kursora. + 5. :r !dir wczytuje wyjœcie polecenia dir i umieszcza je poni¿ej kursora. @@ -718,22 +718,22 @@ UWAGA: Mozesz tez wczytac wyjscie zewnetrznego polecenia. Na przyklad Lekcja 1.6.1.: POLECENIE OPEN (otwórz) - ** Wpisz o by otworzyc linie ponizej kursora i przeniesc sie do + ** Wpisz o by otworzyæ liniê poni¿ej kursora i przenieœæ siê do trybu Insert (wprowadzanie). ** - 1. Przenies kursor do linii ponizej oznaczonej --->. + 1. Przenieœ kursor do linii poni¿ej oznaczonej --->. - 2. Wpisz o (male), by otworzyc linie PONIZEJ kursora i przeniesc sie + 2. Wpisz o (ma³e), by otworzyæ liniê PONI¯EJ kursora i przenieœæ siê do trybu Insert (wprowadzanie). - 3. Wpisz troche tekstu i wcisnij by wyjsc z trybu Insert (wprowadzanie). + 3. Wpisz trochê tekstu i wciœnij by wyjœæ z trybu Insert (wprowadzanie). ----> Po wcisnieciu o kursor znajdzie sie w otwartej linii w trybie Insert. +---> Po wciœniêciu o kursor znajdzie siê w otwartej linii w trybie Insert. - 4. By otworzyc linie POWYZEJ kursora, wcisnij wielkie O zamiast malego - o . Wypróbuj to na linii ponizej. + 4. By otworzyæ liniê POWY¯EJ kursora, wciœnij wielkie O zamiast ma³ego + o . Wypróbuj to na linii poni¿ej. ----> Otwórz linie powyzej wciskajac SHIFT-O gdy kursor bedzie na tej linii. +---> Otwórz liniê powy¿ej wciskaj¹c SHIFT-O gdy kursor bêdzie na tej linii. @@ -741,137 +741,137 @@ UWAGA: Mozesz tez wczytac wyjscie zewnetrznego polecenia. Na przyklad Lekcja 1.6.2.: POLECENIE APPEND (dodaj) - ** Wpisz a by dodac tekst ZA kursorem. ** + ** Wpisz a by dodaæ tekst ZA kursorem. ** - 1. Przenies kursor do poczatku pierwszej linii ponizej oznaczonej ---> + 1. Przenieœ kursor do pocz¹tku pierwszej linii poni¿ej oznaczonej ---> - 2. Wciskaj e dopóki kursor nie bedzie na koncu li . + 2. Wciskaj e dopóki kursor nie bêdzie na koñcu li . - 3. Wpisz a (male), aby dodac tekst ZA znakiem pod kursorem. + 3. Wpisz a (ma³e), aby dodaæ tekst ZA znakiem pod kursorem. - 4. Dokoncz wyraz tak, jak w linii ponizej. Wcisnij aby opuscic tryb + 4. Dokoñcz wyraz tak, jak w linii poni¿ej. Wciœnij aby opuœciæ tryb Insert. - 5. Uzyj e by przejsc do kolejnego niedokonczonego wyrazu i powtarzaj kroki + 5. U¿yj e by przejœæ do kolejnego niedokoñczonego wyrazu i powtarzaj kroki 3. i 4. ----> Ta li poz Ci cwi dodaw teks do kon lin ----> Ta linia pozwoli Ci cwiczyc dodawanie tekstu do konca linii. +---> Ta li poz Ci æwi dodaw teks do koñ lin +---> Ta linia pozwoli Ci æwiczyæ dodawanie tekstu do koñca linii. -Uwaga: a , i oraz A prowadza do trybu Insert, jedyna róznica jest miejsce, - gdzie nowe znaki beda dodawane. +Uwaga: a , i oraz A prowadz¹ do trybu Insert, jedyn¹ ró¿nic¹ jest miejsce, + gdzie nowe znaki bêd¹ dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.3.: INNA WERSJA REPLACE (zamiana) - ** Wpisz wielkie R by zamienic wiecej niz jeden znak. ** + ** Wpisz wielkie R by zamieniæ wiêcej ni¿ jeden znak. ** - 1. Przenies kursor do pierwszej linii ponizej oznaczonej --->. Przenies + 1. Przenieœ kursor do pierwszej linii poni¿ej oznaczonej --->. Przenieœ kursor do pierwszego xxx . - 2. Wcisnij R i wpisz numer ponizej w drugiej linii, tak, ze zastapi on + 2. Wciœnij R i wpisz numer poni¿ej w drugiej linii, tak, ¿e zast¹pi on xxx. - 3. Wcisnij by opuscic tryb Replace. Zauwaz, ze reszta linii pozostaje + 3. Wciœnij by opuœciæ tryb Replace. Zauwa¿, ¿e reszta linii pozostaje niezmieniona. - 5. Powtarzaj kroki by wymienic wszystkie xxx. + 5. Powtarzaj kroki by wymieniæ wszystkie xxx. ---> Dodanie 123 do xxx daje xxx. ---> Dodanie 123 do 456 daje 579. -UWAGA: Tryb Replace jest jak tryb Insert, ale kazdy znak usuwa istniejacy +UWAGA: Tryb Replace jest jak tryb Insert, ale ka¿dy znak usuwa istniej¹cy znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.4.: KOPIOWANIE I WKLEJANIE TEKSTU - ** uzyj operatora y aby skopiowac tekst i p aby go wkleic ** + ** u¿yj operatora y aby skopiowaæ tekst i p aby go wkleiæ ** - 1. Przejdz do linii oznaczonej ---> i umiesc kursor za "a)". + 1. PrzejdŸ do linii oznaczonej ---> i umieœæ kursor za "a)". - 2. Wejdz w tryb Wizualny v i przenies kursor na poczatek "pierwszy". + 2. WejdŸ w tryb Wizualny v i przenieœ kursor na pocz¹tek "pierwszy". - 3. Wcisnij y aby kopiowac (yankowac) podswietlony tekst. + 3. Wciœnij y aby kopiowaæ (yankowaæ) podœwietlony tekst. - 4. Przenies kursor do konca nastepnej linii: j$ + 4. Przenieœ kursor do koñca nastêpnej linii: j$ - 5. Wcisnij p aby wkleic (wpakowac) tekst. Dodaj: a drugi . + 5. Wciœnij p aby wkleiæ (wpakowaæ) tekst. Dodaj: a drugi . - 6. Uzyj trybu Wizualnego, aby wybrac " element.", yankuj go y , przejdz do - konca nastepnej linii j$ i upakuj tam tekst z p . + 6. U¿yj trybu Wizualnego, aby wybraæ " element.", yankuj go y , przejdŸ do + koñca nastêpnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) -Uwaga: mozesz uzyc y jako operatora; yw kopiuje jeden wyraz. +Uwaga: mo¿esz u¿yæ y jako operatora; yw kopiuje jeden wyraz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.5.: USTAWIANIE OPCJI -** Ustawianie opcji tak, by szukaj lub substytucja ignorowaly wielkosc liter ** +** Ustawianie opcji tak, by szukaj lub substytucja ignorowa³y wielkoœæ liter ** - 1. Szukaj 'ignore' wpisujac: /ignore - Powtórz szukanie kilka razy naciskajac klawisz n . + 1. Szukaj 'ignore' wpisuj¹c: /ignore + Powtórz szukanie kilka razy naciskaj¹c klawisz n . - 2. Ustaw opcje 'ic' (Ignore case -- ignoruj wielkosc liter) poprzez + 2. Ustaw opcjê 'ic' (Ignore case -- ignoruj wielkoœæ liter) poprzez wpisanie: :set ic - 3. Teraz szukaj 'ignore' ponownie wciskajac: n - Zauwaz, ze Ignore i IGNORE takze sa teraz znalezione. + 3. Teraz szukaj 'ignore' ponownie wciskaj¹c: n + Zauwa¿, ¿e Ignore i IGNORE tak¿e s¹ teraz znalezione. 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is - 5. Teraz wprowadz polecenie szukaj ponownie i zobacz co sie zdarzy: + 5. Teraz wprowadŸ polecenie szukaj ponownie i zobacz co siê zdarzy: /ignore - 6. Aby wylaczyc ignorowanie wielkosci liter: :set noic + 6. Aby wy³¹czyæ ignorowanie wielkoœci liter: :set noic -Uwaga: Aby usunac podswietlanie dopasowan, wpisz: :nohlsearch -Uwaga: Aby ignorowac wielkosc liter dla jednego wyszukiwania: /ignore\c +Uwaga: Aby usun¹æ podœwietlanie dopasowañ, wpisz: :nohlsearch +Uwaga: Aby ignorowaæ wielkoœæ liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1.6. PODSUMOWANIE - 1. Wpisanie o otwiera linie PONIZEJ kursora. - Wpisanie O otwiera linie POWYZEJ kursora. + 1. Wpisanie o otwiera liniê PONI¯EJ kursora. + Wpisanie O otwiera liniê POWY¯EJ kursora. 2. Wpisanie a wstawia tekst ZA znakiem, na którym jest kursor. - Wpisanie A dodaje tekst na koncu linii. + Wpisanie A dodaje tekst na koñcu linii. - 3. Polecenie e przenosi do konca wyrazu. + 3. Polecenie e przenosi do koñca wyrazu. 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki - nie zostanie wcisniety . - 6. Wpisanie ":set xxx" ustawia opcje "xxx". Niektóre opcje: - 'ic' 'ignorecase' ignoruj wielkosc znaków - 'is' 'incsearch' pokaz czesciowe dopasowania - 'hls' 'hlsearch' podswietl wszystkie dopasowania - Mozesz uzyc zarówno dlugiej, jak i krótkiej formy. - 7. Dodaj "no", aby wylaczyc opcje: :set noic + nie zostanie wciœniêty . + 6. Wpisanie ":set xxx" ustawia opcjê "xxx". Niektóre opcje: + 'ic' 'ignorecase' ignoruj wielkoœæ znaków + 'is' 'incsearch' poka¿ czêœciowe dopasowania + 'hls' 'hlsearch' podœwietl wszystkie dopasowania + Mo¿esz u¿yæ zarówno d³ugiej, jak i krótkiej formy. + 7. Dodaj "no", aby wy³¹czyæ opcjê: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 1.7.1.: JAK UZYSKAC POMOC? + LEKCJA 1.7.1.: JAK UZYSKAÆ POMOC? - ** Uzycie systemu pomocy on-line ** + ** U¿ycie systemu pomocy on-line ** - Vim posiada bardzo dobry system pomocy on-line. By zaczac, spróbuj jednej - z trzech mozliwosci: - - wcisnij klawisz (jesli taki masz) - - wcisnij klawisz (jesli taki masz) + Vim posiada bardzo dobry system pomocy on-line. By zacz¹æ, spróbuj jednej + z trzech mo¿liwoœci: + - wciœnij klawisz (jeœli taki masz) + - wciœnij klawisz (jeœli taki masz) - wpisz :help - Przeczytaj tekst w oknie pomocy, aby dowiedziec sie jak dziala pomoc. - wpisz CTRL-W CTRL-W aby przeskoczyc z jednego okna do innego - wpisz :q aby zamknac okno pomocy. + Przeczytaj tekst w oknie pomocy, aby dowiedzieæ siê jak dzia³a pomoc. + wpisz CTRL-W CTRL-W aby przeskoczyæ z jednego okna do innego + wpisz :q aby zamkn¹æ okno pomocy. - Mozesz tez znalezc pomoc na kazdy temat podajac argument polecenia ":help". - Spróbuj tych (nie zapomnij wcisnac ): + Mo¿esz te¿ znaleŸæ pomoc na ka¿dy temat podaj¹c argument polecenia ":help". + Spróbuj tych (nie zapomnij wcisn¹æ ): :help w :help c_CTRL-D @@ -880,63 +880,63 @@ Uwaga: Aby ignorowac wielkosc liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1.7.2.: TWORZENIE SKRYPTU STARTOWEGO - ** Wlacz mozliwosci Vima ** + ** W³¹cz mo¿liwoœci Vima ** - Vim ma o wiele wiecej mozliwosci niz Vi, ale wiekszosc z nich jest domyslnie - wylaczona. Jesli chcesz wlaczyc te mozliwosci na starcie musisz utworzyc + Vim ma o wiele wiêcej mo¿liwoœci ni¿ Vi, ale wiêkszoœæ z nich jest domyœlnie + wy³¹czona. Jeœli chcesz w³¹czyæ te mo¿liwoœci na starcie musisz utworzyæ plik "vimrc". - 1. Poczatek edycji pliku "vimrc" zalezy od Twojego systemu: + 1. Pocz¹tek edycji pliku "vimrc" zale¿y od Twojego systemu: :edit ~/.vimrc dla Uniksa :edit ~/_vimrc dla MS-Windows - 2. Teraz wczytaj przykladowy plik "vimrc": + 2. Teraz wczytaj przyk³adowy plik "vimrc": :read $VIMRUNTIME/vimrc_example.vim 3. Zapisz plik: :w - Nastepnym razem, gdy zaczniesz prace w Vimie bedzie on uzywac podswietlania - skladni. Mozesz dodac wszystkie swoje ulubione ustawienia do tego pliku + Nastêpnym razem, gdy zaczniesz pracê w Vimie bêdzie on u¿ywaæ podœwietlania + sk³adni. Mo¿esz dodaæ wszystkie swoje ulubione ustawienia do tego pliku "vimrc". - Aby uzyskac wiecej informacji, wpisz :help vimrc-intro + Aby uzyskaæ wiêcej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 1.7.3.: UZUPELNIANIE + Lekcja 1.7.3.: UZUPE£NIANIE - ** Uzupelnianie linii polecen z CTRL-D i ** + ** Uzupe³nianie linii poleceñ z CTRL-D i ** - 1. Upewnij sie, ze Vim nie jest w trybie kompatybilnosci: :set nocp + 1. Upewnij siê, ¿e Vim nie jest w trybie kompatybilnoœci: :set nocp - 2. Zerknij, jakie pliki sa w biezacym katalogu: :!ls lub :!dir + 2. Zerknij, jakie pliki s¹ w bie¿¹cym katalogu: :!ls lub :!dir - 3. Wpisz poczatek polecenia: :e + 3. Wpisz pocz¹tek polecenia: :e - 4. Wcisnij CTRL-D i Vim pokaze liste polecen, jakie zaczynaja sie na "e". + 4. Wciœnij CTRL-D i Vim poka¿e listê poleceñ, jakie zaczynaj¹ siê na "e". - 5. Wcisnij i Vim uzupelni polecenie do ":edit". + 5. Wciœnij i Vim uzupe³ni polecenie do ":edit". - 6. Dodaj spacje i zacznij wpisywac nazwe istniejacego pliku: :edit FIL + 6. Dodaj spacjê i zacznij wpisywaæ nazwê istniej¹cego pliku: :edit FIL - 7. Wcisnij . Vim uzupelni nazwe (jesli jest niepowtarzalna). + 7. Wciœnij . Vim uzupe³ni nazwê (jeœli jest niepowtarzalna). -UWAGA: Uzupelnianie dziala dla wielu polecen. Spróbuj wcisnac CTRL-D i . - Uzyteczne zwlaszcza przy :help . +UWAGA: Uzupe³nianie dzia³a dla wielu poleceñ. Spróbuj wcisn¹æ CTRL-D i . + U¿yteczne zw³aszcza przy :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.7. PODSUMOWANIE - 1. Wpisz :help albo wcisnij lub aby otworzyc okno pomocy. + 1. Wpisz :help albo wciœnij lub aby otworzyæ okno pomocy. - 2. Wpisz :help cmd aby uzyskac pomoc o cmd . + 2. Wpisz :help cmd aby uzyskaæ pomoc o cmd . - 3. Wpisz CTRL-W CTRL-W aby przeskoczyc do innego okna. + 3. Wpisz CTRL-W CTRL-W aby przeskoczyæ do innego okna. - 4. Wpisz :q aby zamknac okno pomocy. + 4. Wpisz :q aby zamkn¹æ okno pomocy. - 5. Utwórz plik startowy vimrc aby zachowac wybrane ustawienia. + 5. Utwórz plik startowy vimrc aby zachowaæ wybrane ustawienia. - 6. Po poleceniu : , wcisnij CTRL-D aby zobaczyc mozliwe uzupelnienia. - Wcisnij aby uzyc jednego z nich. + 6. Po poleceniu : , wciœnij CTRL-D aby zobaczyæ mo¿liwe uzupe³nienia. + Wciœnij aby u¿yæ jednego z nich. @@ -945,40 +945,40 @@ UWAGA: Uzupelnianie dziala dla wielu polecen. Spr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tutaj sie konczy tutorial Vima. Zostal on pomyslany tak, aby dac krótki - przeglad jego mozliwosci, wystarczajacy bys mógl go uzywac. Jest on - daleki od kompletnosci, poniewaz Vim ma o wiele, wiele wiecej polecen. + Tutaj siê koñczy tutorial Vima. Zosta³ on pomyœlany tak, aby daæ krótki + przegl¹d jego mo¿liwoœci, wystarczaj¹cy byœ móg³ go u¿ywaæ. Jest on + daleki od kompletnoœci, poniewa¿ Vim ma o wiele, wiele wiêcej poleceñ. - Dla dalszej nauki rekomendujemy ksiazke: + Dla dalszej nauki rekomendujemy ksi¹¿kê: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders - Pierwsza ksiazka calkowicie poswiecona Vimowi. Uzyteczna zwlaszcza dla - poczatkujacych. Zawiera wiele przykladów i ilustracji. + Pierwsza ksi¹¿ka ca³kowicie poœwiêcona Vimowi. U¿yteczna zw³aszcza dla + pocz¹tkuj¹cych. Zawiera wiele przyk³adów i ilustracji. Zobacz https://iccf-holland.org./click5.html - Starsza pozycja i bardziej o Vi niz o Vimie, ale takze warta + Starsza pozycja i bardziej o Vi ni¿ o Vimie, ale tak¿e warta polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. - To dobra ksiazka, by dowiedziec sie niemal wszystkiego, co chcialbys zrobic - z Vi. Szósta edycja zawiera tez informacje o Vimie. + To dobra ksi¹¿ka, by dowiedzieæ siê niemal wszystkiego, co chcia³byœ zrobiæ + z Vi. Szósta edycja zawiera te¿ informacje o Vimie. Po polsku wydano: Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins Wydawca: Helion 2001 (O'Reilly). ISBN: 83-7197-472-8 http://helion.pl/ksiazki/vilek.htm - Jest to ksiazeczka zawierajaca spis polecen vi i jego najwazniejszych - klonów (miedzy innymi Vima). + Jest to ksi¹¿eczka zawieraj¹ca spis poleceñ vi i jego najwa¿niejszych + klonów (miêdzy innymi Vima). Edytor vi - autorzy Linda Lamb i Arnold Robbins Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania ISBN: 83-7197-539-2 http://helion.pl/ksiazki/viedyt.htm - Rozszerzona wersja Learning the Vi Editor w polskim tlumaczeniu. + Rozszerzona wersja Learning the Vi Editor w polskim t³umaczeniu. - Ten tutorial zostal napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, - Colorado School of Mines korzystajac z pomocy Charlesa Smitha, + Ten tutorial zosta³ napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, + Colorado School of Mines korzystaj¹c z pomocy Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. @@ -986,10 +986,10 @@ UWAGA: Uzupelnianie dziala dla wielu polecen. Spr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Przetlumaczone przez Mikolaja Machowskiego, - Sierpien 2001, + Przet³umaczone przez Miko³aja Machowskiego, + Sierpieñ 2001, rev. Marzec 2002 - 2nd rev. Wrzesien 2004 + 2nd rev. Wrzesieñ 2004 3rd rev. Marzec 2006 - 4th rev. Grudzien 2008 - Wszelkie uwagi prosze kierowac na: mikmach@wp.pl + 4th rev. Grudzieñ 2008 + Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl diff --git a/runtime/tutor/tutor1.sk.cp1250 b/runtime/tutor/tutor1.sk.cp1250 index 69dabd0adb..1e6543e5c0 100644 --- a/runtime/tutor/tutor1.sk.cp1250 +++ b/runtime/tutor/tutor1.sk.cp1250 @@ -2,91 +2,91 @@ = V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = =============================================================================== - Vim je velmi výkonný editor, ktorý má príliž vela príkazov na to aby + Vim je ve¾mi výkonný editor, ktorý má príliž ve¾a príkazov na to aby mohli byt všetky popísané vo výuke akou je táto. Táto výuka - popisuje dostatocné množstvo príkazov nato aby bolo možné používat - Vim ako viacúcelový editor. + popisuje dostatoèné množstvo príkazov nato aby bolo možné používa + Vim ako viacúèelový editor. - Približný cas potrebný na prebratie tejto výuky je 25-30 minút, - závisí na tom, kolko je stráveného casu s preskúšavaním. + Približný èas potrebný na prebratie tejto výuky je 25-30 minút, + závisí na tom, ko¾ko je stráveného èasu s preskúšavaním. UPOZORNENIE: Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby - sa mohlo precvicovat na nom (pri štarte "vimtutor" je toto kópia). + sa mohlo precvièova na òom (pri štarte "vimtutor" je toto kópia). - Je dôležité zapamätat si, že táto výuka je vytvorená pre výuku - používaním. To znamená, že je potrebné si príkazy vyskúšat, aby bolo - ucenie správne. Ak len citas text, príkazy zabudneš! + Je dôležité zapamäta si, že táto výuka je vytvorená pre výuku + používaním. To znamená, že je potrebné si príkazy vyskúša, aby bolo + uèenie správne. Ak len èitas text, príkazy zabudneš! - Presvedc sa, že Caps-Lock NIEJE stlacený a stlact klávesu - j niekolko krát, aby sa kurzor posunul natolko, že lekcia 1.1.1 + Presvedè sa, že Caps-Lock NIEJE stlaèený a stlaèt klávesu + j nieko¾ko krát, aby sa kurzor posunul nato¾ko, že lekcia 1.1.1 celkom zaplní obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.1.1: POHYB KURZOROM - ** Pre pohyb kurzorum stlac klávesy h,j,k,l ako je znázornené. ** + ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** ^ - k Funkcia: Klávesa h je nalavo a vykoná pohyb dolava. + k Funkcia: Klávesa h je na¾avo a vykoná pohyb do¾ava. < h l > Klávesa l je napravo a vykoná pohyb doprava. j Klávesa j vyzerá ako šípka dole v 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. - 2. Drž stlacenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ----> Teraz sa už vieš pohybovat na nasledujúcu lekciu. + 2. Drž stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. +---> Teraz sa už vieš pohybova na nasledujúcu lekciu. 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.1.2. -Poznámka: Ak si niesi istý tým co si napísal, stlac +Poznámka: Ak si niesi istý tým èo si napísal, stlaè na prechod do normálneho módu. -Poznámka: Kurzorové klávesy sú tiež funkcné. Ale používaním hjkl sa budeš - schopný pohybovat rýchlejšie, ked si zvykneš ich používat. Naozaj! +Poznámka: Kurzorové klávesy sú tiež funkèné. Ale používaním hjkl sa budeš + schopný pohybova rýchlejšie, keï si zvykneš ich používa. Naozaj! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 1.1.2: ZATVÁRANIE VIMU - !! POZNÁMKA: Pred vykonaním týchto krokov si precítaj celú túto lekciu !! + !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! - 1. Stlac klávesu (aby si sa ucite nachádzal v normálnom móde) + 1. Stlaè klávesu (aby si sa uèite nachádzal v normálnom móde) 2. Napíš: :q! . - Tým ukoncíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. + Tým ukonèíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. - 3. Ked sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš - spet do tejto výuky. To môže byt: vimtutor + 3. Keï sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš + spe do tejto výuky. To môže by: vimtutor - 4. Ak si si tieto kroky spolahlivo zapamätal, vykonaj kroky 1 až 3, pre - ukoncenie a znovu spustenie editora. + 4. Ak si si tieto kroky spo¾ahlivo zapamätal, vykonaj kroky 1 až 3, pre + ukonèenie a znovu spustenie editora. -POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O niekolko lekcií - sa naucíš ako uložit zmeny do súboru +POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O nieko¾ko lekcií + sa nauèíš ako uloži zmeny do súboru - 5. presun kurzor dole na lekciu 1.1.3. + 5. presuò kurzor dole na lekciu 1.1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.1.3: EDITÁCIA TEXTU - MAZANIE -** Stlacenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** +** Stlaèenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** - 1. Presun kurzor nižšie na riadok oznacený znackou --->. + 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - 2. Aby si mohol odstránit chyby, pohybuj kurzorom kým neprejde na znak, - ktorý chceš zmazat. + 2. Aby si mohol odstráni chyby, pohybuj kurzorom kým neprejde na znak, + ktorý chceš zmaza. - 3. Stlac klávesu x aby sa zmazal nechcený znak. + 3. Stlaè klávesu x aby sa zmazal nechcený znak. 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. ----> Kraava skoocilla ccezz mesiiac. +---> Kraava skooèilla ccezz mesiiac. 5. Ak je veta správna, prejdi na lekciu 1.1.4. -POZNÁMKA: Neskúšaj si zapamätat obsah tejto výuky, ale sa uc používaním. +POZNÁMKA: Neskúšaj si zapamäta obsah tejto výuky, ale sa uè používaním. @@ -94,46 +94,46 @@ POZN Lekcia 1.1.4: EDITÁCIA TEXTU - VKLADANIE - ** Stlacenie klávesy i umožnuje vkladanie textu. ** + ** Stlaèenie klávesy i umožòuje vkladanie textu. ** - 1. Presun kurzor nižšie na prvý riadok za znacku --->. + 1. Presuò kurzor nižšie na prvý riadok za znaèku --->. 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, - presun kurzor na prvý znak za misto, kde má byt text vložený. + presuò kurzor na prvý znak za misto, kde má by text vložený. - 3. Stlac klávesu i a napíš potrebný text. + 3. Stlaè klávesu i a napíš potrebný text. - 4. Po opravení každej chyby, stlac pre návrat do normálneho módu. + 4. Po opravení každej chyby, stlaè pre návrat do normálneho módu. Zopakuj kroky 2 až 4 kým nieje veta správna. ---> Tu je text chýbajúci tejto. ----> Tu je nejaký text chýbajúci od tejto ciary. +---> Tu je nejaký text chýbajúci od tejto èiary. - 5. Ked sa dostatocne naucíš vkladat text, prejdi na nasledujúce zhrnutie. + 5. Keï sa dostatoène nauèíš vklada text, prejdi na nasledujúce zhrnutie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.1.5: EDITÁCIA TEXTU - PRIDÁVANIE - ** Stlacenie klávesy A umožnuje pridávat text. ** + ** Stlaèenie klávesy A umožòuje pridáva text. ** - 1. Presun kurozr nižšie na prvý riadok za znackou --->. + 1. Presuò kurozr nižšie na prvý riadok za znaèkou --->. Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. - 2. Stlac klávesu A a napíš potrebný text. + 2. Stlaè klávesu A a napíš potrebný text. - 3. Po pridaní textu stlac klávesu pre návrat do Normálneho módu. + 3. Po pridaní textu stlaè klávesu pre návrat do Normálneho módu. - 4. Presun kurozr na druhý riadok oznacený ---> a zopakuj + 4. Presuò kurozr na druhý riadok oznaèený ---> a zopakuj kroky 2 a 3 kým nieje veta správna. ---> Tu je nejaký text chýbajúci o - Tu je nejaký text chýbajúci od tialto. + Tu je nejaký text chýbajúci od tia¾to. ---> Tu tiež chýba nej Tu tiež chýba nejaký text. - 5. Ked sa dostatocne naucíš pridávat text, prejdi na lekciu 1.1.6. + 5. Keï sa dostatoène nauèíš pridáva text, prejdi na lekciu 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -142,21 +142,21 @@ POZN ** Napísaním :wq sa súbor uloží a zavrie ** -!! POZNÁMKA: Pred vykonaním týchto krokov si precítaj celú lekciu!! +!! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! 1. Opusti túto výuku, ako si to urobil v lekcii 1.1.2: :q! 2. Do príkazového riadku napíš príkaz: vim tutor 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, - ktorý chceš editovat. Použi taký súbor, ktorý môžeš menit. + ktorý chceš editova. Použi taký súbor, ktorý môžeš meni. -3. Vlož a zmaž text tak, ako si sa naucil v predošlých lekciach. +3. Vlož a zmaž text tak, ako si sa nauèil v predošlých lekciach. 4. Ulož súbor so zmenami a opusti Vim príkazom: :wq -5. Reštartuj vimtutor a presun sa dole na nasledujúce zhrnutie. +5. Reštartuj vimtutor a presuò sa dole na nasledujúce zhrnutie. -6. Urob tak po precítaní predošlých krokov a porozumeniu im. +6. Urob tak po preèítaní predošlých krokov a porozumeniu im. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -168,7 +168,7 @@ POZN 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME - 3. Na ukoncenie Vimu napíš: :q! pre zrušenie všetkých zmien + 3. Na ukonèenie Vimu napíš: :q! pre zrušenie všetkých zmien alebo napíš: :wq pre uloženie zmien. 4. Na zmazanie znaku na mieste kurzora napíš: x @@ -177,10 +177,10 @@ POZN i napíš vkladaný text vkladanie pred kurzor A napíš pridávaný text vkladanie za riadok -POZNÁMKA: Stlacenie ta premiestní do normálneho módu alebo zruší - nejaký nechcený a ciastocne dokoncený príkaz. +POZNÁMKA: Stlaèenie a premiestní do normálneho módu alebo zruší + nejaký nechcený a èiastoène dokonèený príkaz. -Teraz pokracuj lekciou 1.2. +Teraz pokraèuj lekciou 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -189,20 +189,20 @@ Teraz pokracuj lekciou 1.2. ** Napísanie príkazu dw zmaže znaky do konca slova. ** -1. Stlac aby si bol bezpecne v normálnom móde. +1. Stlaè aby si bol bezpeène v normálnom móde. -2. Presun kurzor nižšie na riadok oznacený znackou --->. +2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. -3. Presun kurzor na zaciatok slova, ktoré je potrebné zmazat. +3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza. 4. Napíš dw aby slovo zmizlo. -POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky ked ho - napíšeš. Vim na teba pocká, aby si mohol napísat - písmeno w. Ak vidíš nieco iné ako d , tak si napísal - nesprávny znak; stlac a zacni znova. +POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keï ho + napíšeš. Vim na teba poèká, aby si mohol napísa + písmeno w. Ak vidíš nieèo iné ako d , tak si napísal + nesprávny znak; stlaè a zaèni znova. ----> Tu je niekolko slov zábava, ktoré nie patria list do tejto vety. +---> Tu je nieko¾ko slov zábava, ktoré nie patria list do tejto vety. 5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 1.2.2. @@ -214,59 +214,59 @@ POZN ** Napísanie príkazu d$ zmaže znaky do konca riadku ** -1. Stlac aby si bol bezpecne v normálnom móde. +1. Stlaè aby si bol bezpeène v normálnom móde. -2. Presun kurzor nižšie na riadok oznacený znackou --->. +2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. -3. Presun kurzor na koniec správnej vety (ZA prvú bodku). +3. Presuò kurzor na koniec správnej vety (ZA prvú bodku). 4. Napíš d$ aby sa zmazali znaky do konca riadku. ---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. -5. Prejdi na lekciu 1.2.3 pre pochopenie toho co sa stalo. +5. Prejdi na lekciu 1.2.3 pre pochopenie toho èo sa stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.2.3: OPERÁTORY A POHYBY - Vela príkazov, ktoré menia text sú odvodené od operátorov a pohybov. + Ve¾a príkazov, ktoré menia text sú odvodené od operátorov a pohybov. Formát pre príkaz mazania klávesou d je nasledovný: d pohyb kde: d - je mazací operátor - pohyb - je to co operátor vykonáva (vypísané nižšie) + pohyb - je to èo operátor vykonáva (vypísané nižšie) Krátky list pohybov: - w - do zaciatku dalšieho slova, okrem jeho prvého písmena. + w - do zaèiatku ïalšieho slova, okrem jeho prvého písmena. e - do konca terajšieho slova, vrátane posledného znaku. $ - do konca riadku, vrátane posledného znaku Takže napísaním de sa zmaže všetko od kurzora do konca slova. -POZNÁMKA: Stlacením iba pohybu v normálnom móde bez operátora +POZNÁMKA: Stlaèením iba pohybu v normálnom móde bez operátora sa presunie kurzor tak ako je to špecivikované. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.2.4: Použitie viacnásobného pohybu - ** Napísaním císla pred pohyb ho zopakuje zadný pocet krát ** + ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** - 1. Presun kurozr nižšie na zaciatok riadku oznaceného --->. + 1. Presuò kurozr nižšie na zaèiatok riadku oznaèeného --->. 2. Napíš 2w a kurozr sa presunie o dve slová vpred. 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. - 4. Napíš 0 (nula) a kurozr sa presunie na zaciatok riadku. + 4. Napíš 0 (nula) a kurozr sa presunie na zaèiatok riadku. - 5. Zopakuj kroky 2 a 3 s rôznymi císlami. + 5. Zopakuj kroky 2 a 3 s rôznymi èíslami. ----> Toto je riadok so slovami po kotrých sa môžete pohybovat. +---> Toto je riadok so slovami po kotrých sa môžete pohybova. 6. Prejdi na lekciu 1.2.5. @@ -275,23 +275,23 @@ POZN Lekcia 1.2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE - ** Napísanie císla spolu s operátorom ho zopakuje zadaný pocet krát ** + ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** - V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož pocet + V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož poèet pred pohyb pre docielenie hromadného mazania: - d císlo pohyb + d èíslo pohyb - 1. Presun kurzor na prvé slovo písané VELKÝMI PÍSMENAMI - v riadku oznacenom --->. + 1. Presuò kurzor na prvé slovo písané VE¼KÝMI PÍSMENAMI + v riadku oznaèenom --->. - 2. Napíš 2dw a zmažeš dve slová písané VELKÝMI PÍSMENAMI + 2. Napíš 2dw a zmažeš dve slová písané VE¼KÝMI PÍSMENAMI - 3. Zopakuj kroky 1 a 2 s použitím rôzneho císla tak aby si zmazal slová - písané velkými písmenami jedným príkazom. + 3. Zopakuj kroky 1 a 2 s použitím rôzneho èísla tak aby si zmazal slová + písané ve¾kými písmenami jedným príkazom. ---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. -POZNÁMKA: Císlo medzi operátorom d a pohybom funguje podobne ako pri +POZNÁMKA: Èíslo medzi operátorom d a pohybom funguje podobne ako pri použití s pohybom bez operátora. @@ -301,19 +301,19 @@ POZN ** Napísanie príkazu dd zmaže celý riadok. ** -Vzhladom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, -že bude jednoduchšie mazat celý riadok napísaním dvoch písmen d. +Vzh¾adom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, +že bude jednoduchšie maza celý riadok napísaním dvoch písmen d. -1. Presun kurzor na druhý riadok v texte na spodu. +1. Presuò kurzor na druhý riadok v texte na spodu. 2. Napíš dd aby si zmazal riadok. 3. Prejdi na štvrtý riadok. 4. Napíš 2dd aby si zmazal dva riadky. - 1) Ruže sú cervené, + 1) Ruže sú èervené, 2) Blato je zábavné, 3) Fialky sú modré, 4) Mám auto, - 5) Hodinky ukazujú cas, + 5) Hodinky ukazujú èas, 6) Cukor je sladký, 7) A to si ty. @@ -322,21 +322,21 @@ Vzhladom na frekvenciu mazania cel Lekcia 1.2.7: PRÍKAZ UNDO -** Stlac u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** +** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** -1. Presun kurzor nižšie na riadok oznacený znackou ---> a premiestni ho na +1. Presuò kurzor nižšie na riadok oznaèený znaèkou ---> a premiestni ho na prvú chybu. 2. Napíš x pre zmazanie prvého nechceného riadku. -3. Teraz napíš u cím vrátíš spät posledne vykonaný príkaz. +3. Teraz napíš u èím vrátíš spä posledne vykonaný príkaz. 4. Teraz oprav všetky chyby na riadku použitím príkazu x . -5. Teraz napíš velké U cím vrátíš riadok do pôvodného stavu. -6. Teraz napíš u niekolko krát, cím vrátíš spät príkaz U. -7. Teraz napíš CTRL-R (drž klávesu CTRL stlacenú kým stlácaš R) niekolko - krát, cím vrátíš spät predtým vrátené príkazy (undo z undo). +5. Teraz napíš ve¾ké U èím vrátíš riadok do pôvodného stavu. +6. Teraz napíš u nieko¾ko krát, èím vrátíš spä príkaz U. +7. Teraz napíš CTRL-R (drž klávesu CTRL stlaèenú kým stláèaš R) nieko¾ko + krát, èím vrátíš spä predtým vrátené príkazy (undo z undo). ----> Opprav chybby nna toomto riadku a zmeen ich pommocou undo. +---> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. - 8. Tieto príkazy sú casto používané. Teraz prejdi na zhrnutie lekcie 1.2. + 8. Tieto príkazy sú èasto používané. Teraz prejdi na zhrnutie lekcie 1.2. @@ -351,43 +351,43 @@ Vzhladom na frekvenciu mazania cel 3. Pre zmazanie celého riadku napíš: dd - 4. Pre zopakovanie pohybu, napíš pred neho císlo: 2w + 4. Pre zopakovanie pohybu, napíš pred neho èíslo: 2w 5. Formát pre píkaz: - operátor [císlo] pohyb + operátor [èíslo] pohyb kde: - operátor - co treba robit, napríklad d pre zmazanie - [císlo] - je volitelný pocet pre opakovanie pohybu - pohyb - pohyb po texte vzhladom na operátor, napríklad w (slovo), - $ (do konca riadku), atd. + operátor - èo treba robi, napríklad d pre zmazanie + [èíslo] - je volite¾ný poèet pre opakovanie pohybu + pohyb - pohyb po texte vzh¾adom na operátor, napríklad w (slovo), + $ (do konca riadku), atï. - 6. Pre pohyb na zaciatok riadku použi nulu: 0 + 6. Pre pohyb na zaèiatok riadku použi nulu: 0 - 7. Pre vrátenie spät predošlej operácie napíš: u (malé u) - Pre vrátenie všetkých úprav na riadku napíš: U (velké U) + 7. Pre vrátenie spä predošlej operácie napíš: u (malé u) + Pre vrátenie všetkých úprav na riadku napíš: U (ve¾ké U) Pre vrátenie vrátených úprav napíš: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3.1: PRÍKAZ VLOŽIT + Lekcia 1.3.1: PRÍKAZ VLOŽI ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** - 1. Presun kurzor nižšie na prvý riadok textu. + 1. Presuò kurzor nižšie na prvý riadok textu. - 2. Napíš dd cím zmažeš riadok a uložíš ho do buffera editora Vim. + 2. Napíš dd èím zmažeš riadok a uložíš ho do buffera editora Vim. - 3. Presun kurzor vyššie tam, kam zmazaný riadok patrí. + 3. Presuò kurzor vyššie tam, kam zmazaný riadok patrí. 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. ----> d) Tiež sa dokážeš vzdelávat? +---> d) Tiež sa dokážeš vzdeláva? ---> b) Fialky sú modré, ---> c) Inteligencia sa vzdeláva, ----> a) Ruže sú cervené, +---> a) Ruže sú èervené, @@ -397,20 +397,20 @@ Vzhladom na frekvenciu mazania cel ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** - 1. Presun kurzor nižšie na prví riadok textu oznaceného znackou --->. + 1. Presuò kurzor nižšie na prví riadok textu oznaèeného znaèkou --->. - 2. Presun kurzor na zaciatok prvej chyby. + 2. Presuò kurzor na zaèiatok prvej chyby. - 3. napíš r a potom znak, ktorý tam má byt. + 3. napíš r a potom znak, ktorý tam má by. 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. ----> Kad bol tento riasok píaaný, niekro stlašil nesprábne klávesy! ----> Ked bol tento riadok písaný, niekto stlacil nesprávne klávesy! +---> Kaï bol tento riasok píaaný, niekro stlašil nesprábne klávesy! +---> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! 5. Teraz prejdi na lekciu 1.3.2. -POZNÁMKA: Pamätaj si, že naucit sa môžeš len používanim, nie pamätaním. +POZNÁMKA: Pamätaj si, že nauèi sa môžeš len používanim, nie pamätaním. @@ -418,20 +418,20 @@ POZN Lekcia 1.3.3: PRÍKAZ ÚPRAVY - ** Ak chceš zmenit cast slova do konca slova, napíš ce . ** + ** Ak chceš zmeni èas slova do konca slova, napíš ce . ** - 1. Presun kurzor nižšie na prvý riadok oznacený znackou --->. + 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. 2. Umiestni kurzor na písmeno o v slove rosfpl. 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) - 4. Stlac a prejdi na další znak, ktorý treba zmenit. + 4. Stlaè a prejdi na ïalší znak, ktorý treba zmeni. 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. ----> Tento rosfpl má niekolko skic, ktoré je pirewvbí zmenit piytucán príkazu. ----> Tento riadok má niekolko slov, ktoré je potrebné zmenit použitím príkazu. +---> Tento rosfpl má nieko¾ko skic, ktoré je pirewvbí zmeni piyuèán príkazu. +---> Tento riadok má nieko¾ko slov, ktoré je potrebné zmeni použitím príkazu. Poznámka, že ce zmaže slovo a nastaví vkladací mód. @@ -445,21 +445,21 @@ Pozn 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: - c [císlo] pohyb + c [èíslo] pohyb 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). - 3. Presun kurzor nižšie na prvý riadok oznacený znackou --->. + 3. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. - 4. Presun kurzor na prvú chybu. + 4. Presuò kurzor na prvú chybu. - 5. napíš c$ aby si mohol upravit zvyšok riadku podla druhého - a stlac . + 5. napíš c$ aby si mohol upravi zvyšok riadku pod¾a druhého + a stlaè . ---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ----> Koniec tohto riadku potrebuje opravit použitím príkazu c$ . +---> Koniec tohto riadku potrebuje opravi použitím príkazu c$ . -POZNÁMKA: Môžeš použit klávesu backspace na úpravu zmien pocas písania. +POZNÁMKA: Môžeš použi klávesu backspace na úpravu zmien poèas písania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -472,13 +472,13 @@ POZN 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý nahradí pôvodný znak. - 3. Príkaz na upravenie umožnuje zmenit od kurzora až po miesto, ktoré - urcuje pohyb. napr. Napíš ce cím zmníš text od pozície + 3. Príkaz na upravenie umožòuje zmeni od kurzora až po miesto, ktoré + urèuje pohyb. napr. Napíš ce èím zmníš text od pozície kurzora do konca slova, c$ zmení text do konca riadku. 4. Formát pre nahradenie je: - c [císlo] pohyb + c [èíslo] pohyb Teraz prejdi na nalsedujúcu lekciu. @@ -489,73 +489,73 @@ Teraz prejdi na nalseduj Lekcia 1.4.1: POZÍCIA A STATUS SÚBORU - ** Stlac CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. + ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. Napíš G pre presun na riadok v súbore. ** - Poznámka: Precítaj si celú túto lekciu skôr ako zacneš vykonávat kroky!! + Poznámka: Preèítaj si celú túto lekciu skôr ako zaèneš vykonáva kroky!! - 1. Drž stlacenú klávesu Ctrl a stlac g . Toto nazývame CTRL-G. + 1. Drž stlaèenú klávesu Ctrl a stlaè g . Toto nazývame CTRL-G. Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou - v súbore. Zapamätajsi si císlo riadku pre použitie v kroku 3. + v súbore. Zapamätajsi si èíslo riadku pre použitie v kroku 3. - 2. Stlac G cím sa dostaneš na spodok súboru. - Napíš gg cím sa dostaneš na zaciatok súboru. + 2. Stlaè G èím sa dostaneš na spodok súboru. + Napíš gg èím sa dostaneš na zaèiatok súboru. - 3. Napíš císlo riadku na ktorom si sa nachádzal a stlac G. To ta - vráti na riadok, na ktorom si prvý krát stlacil CTRL-G. + 3. Napíš èíslo riadku na ktorom si sa nachádzal a stlaè G. To a + vráti na riadok, na ktorom si prvý krát stlaèil CTRL-G. - 4. Ak sa cítíš schopný vykonat teto kroky, vykonaj kroky 1 až 3. + 4. Ak sa cítíš schopný vykona teto kroky, vykonaj kroky 1 až 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4.2: PRÍKAZ VYHLADÁVANIA + Lekcia 1.4.2: PRÍKAZ VYH¼ADÁVANIA - ** Napíš / nasledované retazcom pre vyhladanie príslušného retazca. ** + ** Napíš / nasledované reazcom pre vyh¾adanie príslušného reazca. ** 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu - s kurzorom zobrazí v dolnej casti obrazovky s : príkazom. + s kurzorom zobrazí v dolnej èasti obrazovky s : príkazom. - 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyhladat. + 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyh¾ada. - 3. Pre vyhladanie dalšieho výskytu rovnakého retazca, stlac jednoducho n. - Pre vyhladanie dalšieho výskytu rovnakého retazca opacným smerom, + 3. Pre vyh¾adanie ïalšieho výskytu rovnakého reazca, stlaè jednoducho n. + Pre vyh¾adanie ïalšieho výskytu rovnakého reazca opaèným smerom, N. - 4. Ak chceš vyhladat retazec v spätnom smere, použí príkaz ? miesto + 4. Ak chceš vyh¾ada reazec v spätnom smere, použí príkaz ? miesto príkazu /. - 5. Pre návrat na miesto z ktorého si prišiel stlac CTRL-O (drž stlacenú - klávesu Ctrl pocas stlacenia klávesy o). Zopakuj pre další návrat - spät. CTRL-I ide vpred. + 5. Pre návrat na miesto z ktorého si prišiel stlaè CTRL-O (drž stlaèenú + klávesu Ctrl poèas stlaèenia klávesy o). Zopakuj pre ïalší návrat + spä. CTRL-I ide vpred. POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. -POZNÁMKA: Ked vyhladávanie dosiahne koniec tohto súboru, bude pokracovat na - zaciatku, dokial nieje resetované nastavenie 'wrapscan' . +POZNÁMKA: Keï vyh¾adávanie dosiahne koniec tohto súboru, bude pokraèova na + zaèiatku, dokia¾ nieje resetované nastavenie 'wrapscan' . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4.3: VYHLADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK + Lekcia 1.4.3: VYH¼ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK - ** Napíš % pre vyhladanie príslušného znaku ),], alebo } . ** + ** Napíš % pre vyh¾adanie príslušného znaku ),], alebo } . ** 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie - oznaceného znackou --->. + oznaèeného znaèkou --->. 2. Teraz napíš znak % . 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. - 4. Napíš % pre presun kurzoru spät na otvárajúcu zátvorku. + 4. Napíš % pre presun kurzoru spä na otvárajúcu zátvorku. - 5. Presun kurzor na iný zo znakov (,),[,],{ alebo } a všimni si - co % vykonáva. + 5. Presuò kurzor na iný zo znakov (,),[,],{ alebo } a všimni si + èo % vykonáva. ---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) -Poznámka: Toto je velmi výhodné použít pri ladení programu s chýbajúcimi +Poznámka: Toto je ve¾mi výhodné použí pri ladení programu s chýbajúcimi uzatvárajúcimi zátvorkami! @@ -566,22 +566,22 @@ Pozn ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** - 1. Presun kurzor nižšie na riadok oznacený znackou --->. + 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý výskyt "thee" v riadku. - 3. Teraz napíš :s/thee/the/g co znamená celkové nahradenie v riadku. + 3. Teraz napíš :s/thee/the/g èo znamená celkové nahradenie v riadku. Toto nahradí všetky výskyty v riadku. ---> Thee best time to see thee flowers in thee spring. - 4. Pre zmenu všetkých výskytov daného retazca medzi dvomi ridakami, - napíš :#,#s/starý/nový/g kde #,# sú císla dvoch riadkov, v rozsahu + 4. Pre zmenu všetkých výskytov daného reazca medzi dvomi ridakami, + napíš :#,#s/starý/nový/g kde #,# sú èísla dvoch riadkov, v rozsahu ktorých sa nahradenie vykoná. napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, - s otázkou ci nahradit alebo nie + s otázkou èi nahradi alebo nie @@ -590,44 +590,44 @@ Pozn 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. - G ta premiestni na koniec riadku. - císlo G ta premiestni na riadok s císlom. - gg ta presunie na prvý riadok + G a premiestni na koniec riadku. + èíslo G a premiestni na riadok s èíslom. + gg a presunie na prvý riadok - 2. Napísanie / nasledované retazcom vyhladá retazec smerom DOPREDU. - Napísanie ? nasledované retazcom vyhlada retazec smerom DOZADU. - Napísanie n po vyhladávaní, vyhladá nasledujúci výskyt retazca - v rovnakom smere, pricom N vyhladá v opacnom smere. - CTRL-O ta vráti spät na staršiu pozíciu, CTRL-I na novšiu pozíciu. + 2. Napísanie / nasledované reazcom vyh¾adá reazec smerom DOPREDU. + Napísanie ? nasledované reazcom vyh¾ada reazec smerom DOZADU. + Napísanie n po vyh¾adávaní, vyh¾adá nasledujúci výskyt reazca + v rovnakom smere, prièom N vyh¾adá v opaènom smere. + CTRL-O a vráti spä na staršiu pozíciu, CTRL-I na novšiu pozíciu. - 3. Napísanie % ked kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu + 3. Napísanie % keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu párnu zátvorku. 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g - Pre nahradenie retazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g + Pre nahradenie reazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5.1: AKO SPUSTIT VONKAJŠÍ PRÍKAZ + Lekcia 1.5.1: AKO SPUSTI VONKAJŠÍ PRÍKAZ ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. - To umožní napísat príkaz. + To umožní napísa príkaz. - 2. Teraz napíš ! (výkricník). To umožní spustit hociaký vonkajší príkaz + 2. Teraz napíš ! (výkrièník). To umožní spusti hociaký vonkajší príkaz z príkazového riadku. - 3. Ako príklad napíš ls za ! a stlac . Tento príkaz + 3. Ako príklad napíš ls za ! a stlaè . Tento príkaz zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. Alebo použi :!dir ak ls nefunguje. -Poznámka: Takto je možné spustit hociaký vonkajší príkaz s argumentami. -Poznámka: Všetky príkazy : musia byt dokoncené stlacením +Poznámka: Takto je možné spusti hociaký vonkajší príkaz s argumentami. +Poznámka: Všetky príkazy : musia by dokonèené stlaèením @@ -639,19 +639,19 @@ Pozn ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. - Už vieš, že musíš za týmto stlacit . + Už vieš, že musíš za týmto stlaèi . 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. - Pre overenie napíš :!dir , cím zobrazíš obsah adresára. + Pre overenie napíš :!dir , èím zobrazíš obsah adresára. -Poznámka: že ak ukoncíš prácu s editorom Vim a znovu ho spustíš príkazom - vim TEST, súbor bude kópia výuky, ked si ho uložil. +Poznámka: že ak ukonèíš prácu s editorom Vim a znovu ho spustíš príkazom + vim TEST, súbor bude kópia výuky, keï si ho uložil. - 5. Teraz odstrán súbor napísaním (MS-DOS): :!del TEST + 5. Teraz odstráò súbor napísaním (MS-DOS): :!del TEST alebo (Unix): :!rm TEST @@ -659,43 +659,43 @@ Pozn Lekcia 1.5.3: VÝBER TEXTU PRE ULOŽENIE - ** Pre uloženie casti súboru, napíš v pohyb :w FILENAME ** + ** Pre uloženie èasti súboru, napíš v pohyb :w FILENAME ** - 1. Presun kurozr na tento riadok. + 1. Presuò kurozr na tento riadok. - 2. Stlac v a presun kurozr na piatu položku dole. Poznámka, že - tento text je vyznacený (highlighted). + 2. Stlaè v a presuò kurozr na piatu položku dole. Poznámka, že + tento text je vyznaèený (highlighted). - 3. Stlac klávesu : . V spodnej casti okna sa objaví :'<,'>. + 3. Stlaè klávesu : . V spodnej èasti okna sa objaví :'<,'>. 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. - Skontroluj, e vidíš :'<,'>w TEST predtým než stlacíš Enter. + Skontroluj, e vidíš :'<,'>w TEST predtým než stlaèíš Enter. - 5. Vim zapíše oznacené riadky do súboru TEST. Použi :!dir alebo :!ls - pre overenie. Zatial ho ešte nemaž! Použijeme ho v dalšej lekcii. + 5. Vim zapíše oznaèené riadky do súboru TEST. Použi :!dir alebo :!ls + pre overenie. Zatial ho ešte nemaž! Použijeme ho v ïalšej lekcii. -POZNÁMKA: Stlacením klávesy v sa spustí vizuálne oznacovanie. - Môžeš pohybovat kurzorom pre upresnenie vyznaceného textu. - Potom môžeš použit operátor pre vykonanie nejakej akcie - s textom. Napríklad d zmaže vyznacený text. +POZNÁMKA: Stlaèením klávesy v sa spustí vizuálne oznaèovanie. + Môžeš pohybova kurzorom pre upresnenie vyznaèeného textu. + Potom môžeš použi operátor pre vykonanie nejakej akcie + s textom. Napríklad d zmaže vyznaèený text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5.4: VÝBER A ZLUCOVANIE SÚBOROV + Lekcia 1.5.4: VÝBER A ZLUÈOVANIE SÚBOROV ** Pre vloženie obsahu súboru, napíš :r FILENAME ** 1. Premiestni kurzor nad tento riadok. -POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 1.5.3. Potom sa presun +POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 1.5.3. Potom sa presuò dole, aby si videl túto lekciu. 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. -POZNÁMKA: Môžeš tiež nacítat výstup vonkajšieho príkazu. Napríklad :r !ls - nacíta výstup príkazu ls a umiestni ho za pozíciu kurzora. +POZNÁMKA: Môžeš tiež naèíta výstup vonkajšieho príkazu. Napríklad :r !ls + naèíta výstup príkazu ls a umiestni ho za pozíciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -704,66 +704,66 @@ POZN 1. :!príkaz spustí vonkajší príkaz. - Niektoré využitelné príklady sú: + Niektoré využite¾né príklady sú: (MS_DOS) (UNIX) :!dir :!ls - zobrazí obsah adresára :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. - 3. v pohyb :w FILENAME uloží vizuálne oznacené riadky do + 3. v pohyb :w FILENAME uloží vizuálne oznaèené riadky do súboru FILENAME. 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho súboru za pozíciou kurzora. - 5. :r !dir nacíta výstup z príkazu dir a vloží ho za pozíciu kurzora. + 5. :r !dir naèíta výstup z príkazu dir a vloží ho za pozíciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6.1: PRÍKAZ OTVORIT + Lekcia 1.6.1: PRÍKAZ OTVORI ** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** - 1. Presun kurzor nižšie na riadok oznacený znackou --->. + 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - 2. Napíš o (malé písmeno) pre vloženie cistého riadku pod kurzorm + 2. Napíš o (malé písmeno) pre vloženie èistého riadku pod kurzorm a prepnutie do vkladacieho módu. - 3. Teraz skopíruj riadok oznacený ---> a stlac pre ukoncenie + 3. Teraz skopíruj riadok oznaèený ---> a stlaè pre ukonèenie vkladacieho módu. ---> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho módu. - 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš velké O , + 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš ve¾ké O , namiesto malého o. Vyskúšaj si to na riadku dole. ----> Vlož riadok nad týmto napísaním O, ked kurzor je na tomto riadku. +---> Vlož riadok nad týmto napísaním O, keï kurzor je na tomto riadku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6.2: PRÍKAZ PRIDAT + Lekcia 1.6.2: PRÍKAZ PRIDA ** Napíš a pre vloženie textu ZA kurzor. ** - 1. Presun kurzor nižšie na koniec prvého riadku oznaceného znackou ---> + 1. Presuò kurzor nižšie na koniec prvého riadku oznaèeného znaèkou ---> - 2. Stlac klávesu e dokial kurozr nieje na konci riadku. + 2. Stlaè klávesu e dokia¾ kurozr nieje na konci riadku. 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. - 4. Dokoncí slovo tak ako je to v druhom riadku. Stlaš pre + 4. Dokonèí slovo tak ako je to v druhom riadku. Stlaš pre opustenie vkladacieho módu. - 5. Použi e na presun na dalšie nedokoncené slovo a zopakuj kroky 3 a 4. + 5. Použi e na presun na ïalšie nedokonèené slovo a zopakuj kroky 3 a 4. ----> Tento ri ti dovoluje nácv priávan testu na koniec riadku. ----> Tento riadok ti dovoluje nácvik pridávania textu na koniec riadku. +---> Tento ri ti dovo¾uje nácv priávan testu na koniec riadku. +---> Tento riadok ti dovo¾uje nácvik pridávania textu na koniec riadku. POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde sa znaky vkladajú. @@ -773,15 +773,15 @@ POZN Lekcia 1.6.3: INÝ SPOSOB NAHRADZOVANIA - ** Napíš velké R pre nahradenie viac ako jedného znaku. ** + ** Napíš ve¾ké R pre nahradenie viac ako jedného znaku. ** - 1. Presun kurzor nižšie na prvý riadok oznacený znackou --->. Premiestni - kurzor na zaciatok prvého výskytu xxx. + 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. Premiestni + kurzor na zaèiatok prvého výskytu xxx. - 2. Teraz napíš R a napíš císlo uvedené v druhom riadku, takže + 2. Teraz napíš R a napíš èíslo uvedené v druhom riadku, takže sa ním nahradí pôvodné xxx. - 3. Stlac pre opustenie nahradzovacieho módu. Poznámka, že zvyšok + 3. Stlaè pre opustenie nahradzovacieho módu. Poznámka, že zvyšok riadku zostane nezmenený. 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. @@ -799,56 +799,56 @@ POZN ** použí operátor y pre copy textku a p pre jeho paste ** - 1. Chod nižšie na riadok oznacený ---> a umiestni kurozr za "a)". + 1. Choï nižšie na riadok oznaèený ---> a umiestni kurozr za "a)". - 2. Naštartuj vizuálny mód použitím v a presun kurozr pred "first". + 2. Naštartuj vizuálny mód použitím v a presuò kurozr pred "first". - 3. Napíš y pre vystrihnutie (copy) oznaceného textu. + 3. Napíš y pre vystrihnutie (copy) oznaèeného textu. - 4. Presun kurozr na koniec dalšieho riadku: j$ + 4. Presuò kurozr na koniec ïalšieho riadku: j$ 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . - 6. Použi vizuálny mód pre oznacenie "položka.", vystrihni to - použitím y, presun sa na koniec nasledujúceho riadku použitím j$ + 6. Použi vizuálny mód pre oznaèenie "položka.", vystrihni to + použitím y, presuò sa na koniec nasledujúceho riadku použitím j$ a vlož sem text použitím p. ---> a) toto je prvá položka ---> b) -POZNÁMKA: Môžeš použit tiež y ako operátor; yw vystrihne jedno slovo. +POZNÁMKA: Môžeš použi tiež y ako operátor; yw vystrihne jedno slovo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.6.5: NASTAVENIE MOŽNOSTÍ -** Nastav možnosti, takže vyhladávanie alebo nahradzovanie ignoruje +** Nastav možnosti, takže vyh¾adávanie alebo nahradzovanie ignoruje rozlišovanie ** - 1. Vyhladaj retazec 'ignore' napísaním: + 1. Vyh¾adaj reazec 'ignore' napísaním: /ignore - Zopakuj vyhladávanie niekolko krát stlacením klávesy n . + Zopakuj vyh¾adávanie nieko¾ko krát stlaèením klávesy n . - 2. Nastav možnost 'ic' (Ignore case) napísaním príkazu: + 2. Nastav možnos 'ic' (Ignore case) napísaním príkazu: :set ic - 3. Teraz vyhladaj retazec 'ingore' znova stlacením klávesy n - Poznámka, že teraz sú vyhladané aj Ignore a IGNORE. + 3. Teraz vyh¾adaj reazec 'ingore' znova stlaèením klávesy n + Poznámka, že teraz sú vyh¾adané aj Ignore a IGNORE. - 4. Nastav možnosti 'hlsearch' a 'incsearch': + 4. Nastav možnosi 'hlsearch' a 'incsearch': :set hls is - 5. Teraz spusti vyhladávací príkaz znovu, a pozri co sa stalo: + 5. Teraz spusti vyh¾adávací príkaz znovu, a pozri èo sa stalo: /ignore - 6. Pre opetovné zapnutie rozlyšovania velkých a malých písmen + 6. Pre opetovné zapnutie rozlyšovania ve¾kých a malých písmen napíš: :set noic POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch -POZNÁMKA: Ak chceš nerozlyšovat velkost písmen len pre jedno - použitie vyhladávacieho príkazu, použi \c: /ignore\c +POZNÁMKA: Ak chceš nerozlyšova ve¾kos písmen len pre jedno + použitie vyh¾adávacieho príkazu, použi \c: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 1.6 ZHRNUTIE @@ -864,14 +864,14 @@ POZN 4. Operátor y vystrihne (skopíruje) text, p ho vloží. - 5. Napísanie velkého R prepne do nahradzovacieho módu, kým nieje - stlacené . + 5. Napísanie ve¾kého R prepne do nahradzovacieho módu, kým nieje + stlaèené . - 6. Napísanie ":set xxx" nastaví možnost "xxx". Niektoré nastavenia sú: - 'ic' 'ignorecase' ignoruje velké a malé písmená pocas vyhladávania. - 'is' 'incsearch' zobrazuje ciastocné retazce vyhladávaného retazca. - 'hls' 'hlsearch' vyznací všetky vyhladávané retazce. - Môžeš použit hociktorý z dlhých a krátkych názvov možností. + 6. Napísanie ":set xxx" nastaví možnos "xxx". Niektoré nastavenia sú: + 'ic' 'ignorecase' ignoruje ve¾ké a malé písmená poèas vyh¾adávania. + 'is' 'incsearch' zobrazuje èiastoèné reazce vyh¾adávaného reazca. + 'hls' 'hlsearch' vyznaèí všetky vyh¾adávané reazce. + Môžeš použi hociktorý z dlhých a krátkych názvov možností. 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic @@ -889,16 +889,16 @@ POZN Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden z týchto troch: - - stlac klávesu (ak nejakú máš) - - stlac klávesu (ak nejakú máš) + - stlaè klávesu (ak nejakú máš) + - stlaè klávesu (ak nejakú máš) - napíš :help - Cítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. + Èítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. - Napíš :q cím zatvoríš okno nápovedy. + Napíš :q èím zatvoríš okno nápovedy. - Môžeš nájst help ku hociakej téme pridaním argumentu ku príkazu ":help". - Vyskúšaj tieto (nezabudni stlacit ): + Môžeš nájs help ku hociakej téme pridaním argumentu ku príkazu ":help". + Vyskúšaj tieto (nezabudni stlaèi ): :help w :help c_CTRL-D @@ -911,86 +911,86 @@ POZN ** Zapni funkcie editora Vim ** - Vim má omnoho viac funkcii než Vi, ale vecšina z nich je implicitne + Vim má omnoho viac funkcii než Vi, ale veèšina z nich je implicitne vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. - 1. Zacni editovat "vimrc" súbor, to závisí na použitom systéme: + 1. Zaèni editova "vimrc" súbor, to závisí na použitom systéme: :e ~/.vimrc pre Unix :e ~/_vimrc pre MS-Windows - 2. Teraz si precítaj text príkladu "vimrc" súboru: + 2. Teraz si preèítaj text príkladu "vimrc" súboru: :r $VIMRUNTIME/vimrc_example.vim 3. Ulož súbor: :w - Pri nasledujúcom štarte editora Vim sa použije zvýraznovanie syntaxe. - Do "vimrc" súboru môžeš pridat všetky svoje uprednostnované nastavenia. + Pri nasledujúcom štarte editora Vim sa použije zvýrazòovanie syntaxe. + Do "vimrc" súboru môžeš prida všetky svoje uprednostòované nastavenia. Pre viac informácii napíš :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.7.3: DOKONCENIE + LEKCIA 1.7.3: DOKONÈENIE - ** Dokonci príkaz na príkazovom riadku použitím CTRL-D a ** + ** Dokonèi príkaz na príkazovom riadku použitím CTRL-D a ** 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir - 3. Napíš zaciatok príkazu: :e + 3. Napíš zaèiatok príkazu: :e - 4. Stlac CTRL-D a Vim zobrazí zoznam príkazov zacínajúcich "e". + 4. Stlaè CTRL-D a Vim zobrazí zoznam príkazov zaèínajúcich "e". - 5. Stlac a Vim dokoncí meno príkazu na ":edit". + 5. Stlaè a Vim dokonèí meno príkazu na ":edit". - 6. Teraz pridaj medzerník a zaciatok mena existujúceho súboru: + 6. Teraz pridaj medzerník a zaèiatok mena existujúceho súboru: :edit FIL - 7. Stlac . Vim dokoncí meno (ak je jedinecné). + 7. Stlaè . Vim dokonèí meno (ak je jedineèné). -POZNÁMKA: Dokoncovanie funguje pre vela príkazov. Vyskúšaj stlacenie - CTRL-D a . Špeciálne je to užitocné pre príkaz :help. +POZNÁMKA: Dokonèovanie funguje pre ve¾a príkazov. Vyskúšaj stlaèenie + CTRL-D a . Špeciálne je to užitoèné pre príkaz :help. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 1.7 ZHRNUTIE - 1. Napíš :help alebo stlac alebo pre otvorenie okna nápovedy. + 1. Napíš :help alebo stlaè alebo pre otvorenie okna nápovedy. - 2. Napíš :help príkaz pre vyhladanie nápovedy ku príkazu príkaz. + 2. Napíš :help príkaz pre vyh¾adanie nápovedy ku príkazu príkaz. - 3. Napíš CTRL-W CTRL-W na preskocenie do iného okna. + 3. Napíš CTRL-W CTRL-W na preskoèenie do iného okna. 4. Napíš :q pre zatvorenie okna nápovedy - 5. Vytvor štartovací skript vimrc pre udržanie uprednostnovaných nastavení. + 5. Vytvor štartovací skript vimrc pre udržanie uprednostòovaných nastavení. - 6. Pocas písania príkazu : stlac CTRL-D pre zobrazenie dokoncení. - Stlac pre použitie jedného z dokoncení. + 6. Poèas písania príkazu : stlaè CTRL-D pre zobrazenie dokonèení. + Stlaè pre použitie jedného z dokonèení. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Toto vymedzuje výuku Vimu. Toto je urcené pre strucný prehlad o editore - Vim, úplne postacujúce pre lahké a obstojné používanie tohto editora. - Táto výuka je daleko od kompletnosti, pretože Vim má omnoho viacej príkazov. - Ako dalšie si precítaj užívatlský manuál: ":help user-manual". + Toto vymedzuje výuku Vimu. Toto je urèené pre strucný preh¾ad o editore + Vim, úplne postaèujúce pre ¾ahké a obstojné používanie tohto editora. + Táto výuka je ïaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. + Ako ïalšie si preèítaj užívat¾ský manuál: ":help user-manual". - Pre dalšie cítanie a štúdium je odporúcaná kniha: + Pre ïalšie èítanie a štúdium je odporúèaná kniha: Vim - Vi Improved - od Steve Oualline - Vydavatel: New Riders - Prvá kniha urcená pre Vim. Špeciálne vhodná pre zaciatocníkov. + Vydavate¾: New Riders + Prvá kniha urèená pre Vim. Špeciálne vhodná pre zaèiatoèníkov. Obsahuje množstvo príkladov a obrázkov. Pozri na https://iccf-holland.org/click5.html - Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúcaná: + Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúèaná: Learning the Vi Editor - od Linda Lamb - Vydavatel: O'Reilly & Associates Inc. + Vydavate¾: O'Reilly & Associates Inc. Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. Šieste vydanie obsahuje tiež informácie o editore Vim. @@ -1002,7 +1002,7 @@ POZN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Preklad do Slovenciny: Luboš Celko + Preklad do Slovenèiny: ¼uboš Èelko e-mail: celbos@inmail.sk Last Change: 2006 Apr 18 encoding: iso8859-2 diff --git a/runtime/tutor/tutor1.sr.cp1250 b/runtime/tutor/tutor1.sr.cp1250 index f7c29cf3a7..40a19f0bcd 100644 --- a/runtime/tutor/tutor1.sr.cp1250 +++ b/runtime/tutor/tutor1.sr.cp1250 @@ -1,23 +1,23 @@ =============================================================================== -= D o b r o d o š l i u VIM p r i r u c n i k - Verzija 1.7 = += D o b r o d o š l i u VIM p r i r u è n i k - Verzija 1.7 = =============================================================================== - Vim je mocan editor sa mnogo komandi, suviše da bismo ih ovde sve - opisali. Prirucnik je zamišljen da opiše dovoljno komandi da biste + Vim je moæan editor sa mnogo komandi, suviše da bismo ih ovde sve + opisali. Priruènik je zamišljen da opiše dovoljno komandi da biste mogli lagodno da koristite Vim kao editor opšte namene. - Približno vreme potrebno za uspešan završetak prirucnika je izmedu + Približno vreme potrebno za uspešan završetak priruènika je izmeðu 25 i 30 minuta, u zavisnosti od vremena potrošenog na vežbu. UPOZORENJE: - Komande u lekcijama ce menjati tekst. Iskopirajte ovaj fajl i - vežbajte na kopiji (ako ste pokrenuli "vimtutor" ovo je vec kopija). + Komande u lekcijama æe menjati tekst. Iskopirajte ovaj fajl i + vežbajte na kopiji (ako ste pokrenuli "vimtutor" ovo je veæ kopija). - Važno je upamtiti da je ovaj prirucnik zamišljen za aktivnu vežbu. - To znaci da morate upotrebljavati komande o kojima citate da biste - ih naucili. Ako samo citate tekst, zaboravicete komande! + Važno je upamtiti da je ovaj priruènik zamišljen za aktivnu vežbu. + To znaèi da morate upotrebljavati komande o kojima èitate da biste + ih nauèili. Ako samo èitate tekst, zaboraviæete komande! - Ako je Caps Lock ukljucen ISKLJUCITE ga. Pritisnite taster j dovoljno + Ako je Caps Lock ukljuèen ISKLJUÈITE ga. Pritisnite taster j dovoljno puta da lekcija 1.1.1 cela stane na ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -32,22 +32,22 @@ v 1. Pomerajte kursor po ekranu dok se ne naviknete na komande. - 2. Pritisnite taster (j) dok ne pocne da se ponavlja. - Sada znate kako da dodete do naredne lekcije. + 2. Pritisnite taster (j) dok ne poène da se ponavlja. + Sada znate kako da doðete do naredne lekcije. - 3. Koristeci taster j predite na lekciju 1.1.2. + 3. Koristeæi taster j preðite na lekciju 1.1.2. NAPOMENA: Ako niste sigurni šta ste zapravo pritisnuli, pritisnite za prelazak u Normal mod i pokušajte ponovo. -NAPOMENA: Strelice takode pomeraju kursor, ali korišcenje tastera hjkl je +NAPOMENA: Strelice takoðe pomeraju kursor, ali korišæenje tastera hjkl je znatno brže, kad se jednom naviknete na njih. Zaista! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.1.2: IZLAZAK IZ VIM-a - !! UPOZORENJE: Pre izvodenja bilo kog koraka, procitajte celu lekciju!! + !! UPOZORENJE: Pre izvoðenja bilo kog koraka, proèitajte celu lekciju!! 1. Pritisnite (editor je sada u Normal modu). @@ -55,13 +55,13 @@ NAPOMENA: Strelice takode pomeraju kursor, ali kori Ovime se izlazi iz editora, sa GUBITKOM svih izmena. 3. Kada se pojavi komandni prompt, unesite komandu koja je pokrenula - ovaj prirucnik: vimtutor + ovaj priruènik: vimtutor 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 da biste izašli iz editora i ponovo ga pokrenuli. NAPOMENA: :q! poništava sve izmene koje ste napravili. - U narednim lekcijama naucicete kako da sacuvate izmene. + U narednim lekcijama nauèiæete kako da saèuvate izmene. 5. Pomerite kursor na lekciju 1.1.3. @@ -72,10 +72,10 @@ NAPOMENA: :q! poni ** Pritisnite x za brisanje znaka pod kursorom. ** - 1. Pomerite kursor na red oznacen sa --->. + 1. Pomerite kursor na red oznaèen sa --->. 2. Da biste ispravili greške, pomerajte kursor dok se - ne nade na slovu koje treba izbrisati. + ne naðe na slovu koje treba izbrisati. 3. Pritisnite taster x da izbrišete neželjeno slovo. @@ -83,10 +83,10 @@ NAPOMENA: :q! poni ---> RRRibaa riibi grizzze rrreepp. - 5. Kad ispravite red, predite na lekciju 1.1.4. + 5. Kad ispravite red, preðite na lekciju 1.1.4. -NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, - vec vežbajte njihovu primenu. +NAPOMENA: Dok koristite priruènik, nemojte uèiti komande napamet, + veæ vežbajte njihovu primenu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -95,20 +95,20 @@ NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, ** Pritisnite i za ubacivanje teksta ispred kursora. ** - 1. Pomerite kursor na prvi sledeci red oznacen sa --->. + 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. - 2. Da biste tekst prvog reda izjednacili s tekstom drugog, namestite - kursor na prvi znak POSLE kog cete ubaciti potreban tekst. + 2. Da biste tekst prvog reda izjednaèili s tekstom drugog, namestite + kursor na prvi znak POSLE kog æete ubaciti potreban tekst. 3. Pritisnite i pa unesite potrebne dopune. 4. Po ispravci svake greške pritisnite da se vratite u Normal mod. - Ponovite korake od 2 do 4 da biste ispravili celu recenicu. + Ponovite korake od 2 do 4 da biste ispravili celu reèenicu. ---> Do teka neoje v red. ---> Deo teksta nedostaje iz ovog reda. - 5. Predite na sledecu lekciju. + 5. Preðite na sledeæu lekciju. @@ -118,7 +118,7 @@ NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, ** Pritisnite A za dodavanje teksta. ** - 1. Pomerite kursor na prvi sledeci red oznacen sa --->. + 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. Nije važno gde se nalazi kursor u tom redu. 2. Pritisnite A i unesite dodatni tekst. @@ -126,7 +126,7 @@ NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, 3. Pošto ste dodali tekst, pritisnite za povratak u Normal mod. - 4. Pomerite kursor na drugi red oznacen sa ---> i ponavljajte + 4. Pomerite kursor na drugi red oznaèen sa ---> i ponavljajte korake 2 i 3 dok ne ispravite tekst. ---> Deo teksta nedostaje u @@ -134,41 +134,41 @@ NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, ---> Deo teksta nedostaje Deo teksta nedostaje i ovde. - 5. Predite na lekciju 1.1.6. + 5. Preðite na lekciju 1.1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.1.6: IZMENA FAJLA ** Upotrebite :wq za snimanje teksta i izlazak iz editora. ** - !! UPOZORENJE: Pre izvodenja bilo kog koraka, procitajte celu lekciju!! + !! UPOZORENJE: Pre izvoðenja bilo kog koraka, proèitajte celu lekciju!! - 1. Izadite iz editora kao u lekciji 1.1.2: :q! + 1. Izaðite iz editora kao u lekciji 1.1.2: :q! - 2. Na komandnom promptu unesite sledecu komandu: vim tutor + 2. Na komandnom promptu unesite sledeæu komandu: vim tutor 'vim' je komanda za pokretanja Vim editora, 'tutor' je ime fajla koji želite da menjate. Koristite fajl koji imate pravo da menjate. 3. Ubacujte i brišite tekst kao u prethodnim lekcijama. - 4. Snimite izmenjeni tekst i izadite iz Vim-a: :wq + 4. Snimite izmenjeni tekst i izaðite iz Vim-a: :wq - 5. Ponovo pokrenite vimtutor i procitajte rezime koji sledi. + 5. Ponovo pokrenite vimtutor i proèitajte rezime koji sledi. - 6. Pošto procitate korake iznad i u potpunosti ih razumete: + 6. Pošto proèitate korake iznad i u potpunosti ih razumete: izvršite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 1.1 - 1. Kursor se pomera strelicama ili pomocu tastera hjkl . + 1. Kursor se pomera strelicama ili pomoæu tastera hjkl . h (levo) j (dole) k (gore) l (desno) 2. Za pokretanje Vim-a iz shell-a: vim IME_FAJLA 3. Izlaz: :q! sve promene su izgubljene. - ILI: :wq promene su sacuvane. + ILI: :wq promene su saèuvane. 4. Brisanje znaka na kome se nalazi kursor: x @@ -177,7 +177,7 @@ NAPOMENA: Dok koristite prirucnik, nemojte uciti komande napamet, A unesite tekst dodavanje na kraju reda NAPOMENA: Pritiskom na prebacujete Vim u Normal mod i - prekidate neželjenu ili delimicno izvršenu komandu. + prekidate neželjenu ili delimièno izvršenu komandu. Nastavite sa lekcijom 1.2. @@ -185,25 +185,25 @@ Nastavite sa lekcijom 1.2. Lekcija 1.2.1: NAREDBE BRISANJA - ** Otkucajte dw za brisanje reci. ** + ** Otkucajte dw za brisanje reèi. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. - 2. Pomerite kursor na red oznacen sa --->. + 2. Pomerite kursor na red oznaèen sa --->. - 3. Pomerite kursor na pocetak reci koju treba izbrisati. + 3. Pomerite kursor na poèetak reèi koju treba izbrisati. - 4. Otkucajte dw da biste uklonili rec. + 4. Otkucajte dw da biste uklonili reè. -NAPOMENA: Slovo d ce se pojaviti na dnu ekrana kad ga otkucate. Vim ceka +NAPOMENA: Slovo d æe se pojaviti na dnu ekrana kad ga otkucate. Vim èeka da otkucate w . Ako je prikazano neko drugo slovo, pogrešili ste u kucanju; pritisnite i pokušajte ponovo. (Ako se ne pojavi - ništa, možda je iskljucena opcija 'showcmd': vidi lekciju 1.6.5.) + ništa, možda je iskljuèena opcija 'showcmd': vidi lekciju 1.6.5.) ----> Neke reci smešno ne pripadaju na papir ovoj recenici. +---> Neke reèi smešno ne pripadaju na papir ovoj reèenici. - 5. Ponavljajte korake 3 i 4 dok ne ispravite recenicu, pa - predite na lekciju 1.2.2. + 5. Ponavljajte korake 3 i 4 dok ne ispravite reèenicu, pa + preðite na lekciju 1.2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.2.2: JOŠ BRISANJA @@ -212,16 +212,16 @@ NAPOMENA: Slovo d ce se pojaviti na dnu ekrana kad ga otkucate. Vim ceka 1. Pritisnite da biste bili sigurni da ste u Normal modu. - 2. Pomerite kursor na red oznacen sa --->. + 2. Pomerite kursor na red oznaèen sa --->. - 3. Pomerite kursor do kraja ispravnog dela recenice + 3. Pomerite kursor do kraja ispravnog dela reèenice (POSLE prve . ). 4. Otkucajte d$ za brisanje ostatka reda. ---> Neko je uneo kraj ovog reda dvaput. kraj ovog reda dvaput. - 5. Predite na lekciju 1.2.3 za podrobnije objašnjenje. + 5. Preðite na lekciju 1.2.3 za podrobnije objašnjenje. @@ -232,49 +232,49 @@ NAPOMENA: Slovo d ce se pojaviti na dnu ekrana kad ga otkucate. Vim ceka Mnoge komande za izmenu teksta sastoje se od operatora i pokreta. - Oblik komande brisanja sa d operatorom je sledeci: + Oblik komande brisanja sa d operatorom je sledeæi: d pokret - Pri cemu je: + Pri èemu je: d - operator brisanja. - pokret - ono na cemu ce se operacija izvršavati (opisano u nastavku). + pokret - ono na èemu æe se operacija izvršavati (opisano u nastavku). Kratak spisak pokreta: - w - sve do pocetka sledece reci, NE UKLJUCUJUCI prvo slovo. - e - sve do kraja tekuce reci, UKLJUCUJUCI poslednje slovo. - $ - sve do kraje reda, UKLJUCUJUCI poslednje slovo. + w - sve do poèetka sledeæe reèi, NE UKLJUÈUJUÆI prvo slovo. + e - sve do kraja tekuæe reèi, UKLJUÈUJUÆI poslednje slovo. + $ - sve do kraje reda, UKLJUÈUJUÆI poslednje slovo. - Kucanjem de brisace se tekst od kursora do kraja reci. + Kucanjem de brisaæe se tekst od kursora do kraja reèi. NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operatora, kursor se pomera kao što je opisano. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2.4: KORIŠCENJE BROJANJA ZA POKRETE + Lekcija 1.2.4: KORIŠÆENJE BROJANJA ZA POKRETE ** Unošenjem nekog broja pre pokreta, pokret se izvršava taj broj puta. ** - 1. Pomerite kursor na red oznacen sa --->. + 1. Pomerite kursor na red oznaèen sa --->. - 2. Otkucajte 2w da pomerite kursor dve reci napred. + 2. Otkucajte 2w da pomerite kursor dve reèi napred. - 3. Otkucajte 3e da pomerite kursor na kraj trece reci napred. + 3. Otkucajte 3e da pomerite kursor na kraj treæe reèi napred. - 4. Otkucajte 0 (nulu) da pomerite kursor na pocetak reda. + 4. Otkucajte 0 (nulu) da pomerite kursor na poèetak reda. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ----> Recenica sa recima po kojoj možete pomerati kursor. +---> Reèenica sa reèima po kojoj možete pomerati kursor. - 6. Predite na lekciju 1.2.5. + 6. Preðite na lekciju 1.2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2.5: KORIŠCENJE BROJANJA ZA VECE BRISANJE + Lekcija 1.2.5: KORIŠÆENJE BROJANJA ZA VEÆE BRISANJE ** Unošenje nekog broja s operatorom ponavlja operator taj broj puta. ** @@ -284,15 +284,15 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez d broj pokret - 1. Pomerite kursor na prvo slovo u reci s VELIKIM SLOVIMA u redu - oznacenom sa --->. + 1. Pomerite kursor na prvo slovo u reèi s VELIKIM SLOVIMA u redu + oznaèenom sa --->. - 2. Otkucajte d2w da izbrišete dve reci sa VELIKIM SLOVIMA + 2. Otkucajte d2w da izbrišete dve reèi sa VELIKIM SLOVIMA - 3. Ponovite korake 1 i 2 sa razlicitim brojevima da izbrišete - uzastopne reci sa VELIKIM SLOVIMA korišcenjem samo jedne komande. + 3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbrišete + uzastopne reèi sa VELIKIM SLOVIMA korišæenjem samo jedne komande. ----> ovaj ABCCC DÐE red FGHI JK LMN OP s recima je RSŠ TUVZŽ ispravljen. +---> ovaj ABCÈÆ DÐE red FGHI JK LMN OP s reèima je RSŠ TUVZŽ ispravljen. @@ -302,12 +302,12 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ** Otkucajte dd za brisanje celog reda. ** - Zbog ucestalosti brisanja celih redova, autori Vi-ja odlucili su da + Zbog uèestalosti brisanja celih redova, autori Vi-ja odluèili su da je lakše brisati redove ako se otkuca d dvaput. 1. Pomerite kursor na drugi red u donjoj strofi. 2. Otkucajte dd da ga izbrišete. - 3. Pomerite kursor na cetvrti red. + 3. Pomerite kursor na èetvrti red. 4. Otkucajte 2dd da biste izbrisali dva reda. ---> 1) Sedlo mi je od marame, @@ -315,7 +315,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> 3) uzda od kanapa, ---> 4) auto mi je ovde, ---> 5) satovi pokazuju vreme, ----> 6) a bic mi je od ocina +---> 6) a biè mi je od oèina ---> 7) prebijena štapa. @@ -325,28 +325,28 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ** Pritisnite u za poništavanje poslednje komande, U za ceo red. ** - 1. Pomerite kursor na red oznacen sa ---> i postavite ga na mesto + 1. Pomerite kursor na red oznaèen sa ---> i postavite ga na mesto prve greške. 2. Otkucajte x da izbrišete prvi neželjeni znak. 3. Otkucajte u da poništite poslednju izvršenu komandu. - 4. Sad ispravite sve greške u redu koristeci komandu x . + 4. Sad ispravite sve greške u redu koristeæi komandu x . 5. Otkucajte veliko U da biste vratili sadržaj reda u prvobitno stanje. 6. Onda otkucajte u nekoliko puta da biste poništili U i prethodne komande. - 7. Sad otkucajte CTRL-R (držeci CTRL dok pritiskate R) + 7. Sad otkucajte CTRL-R (držeæi CTRL dok pritiskate R) nekoliko puta da biste vratili izmene (poništili poništavanja). ---> Iiisspravite greške uu ovvom redu ii pooništiteee ih. - 8. Ovo su veoma korisne komande. Predite na rezime lekcije 1.2. + 8. Ovo su veoma korisne komande. Preðite na rezime lekcije 1.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 1.2 - 1. Brisanje od kursora do sledece reci: dw + 1. Brisanje od kursora do sledeæe reèi: dw 2. Brisanje od kursora do kraja reda: d$ 3. Brisanje celog reda: dd @@ -357,13 +357,13 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operator - šta uraditi, recimo d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu na kome se radi, - kao što je: w (rec), $ (kraj reda), itd. + kao što je: w (reè), $ (kraj reda), itd. - 6. Pomeranje kursora na pocetak reda: 0 + 6. Pomeranje kursora na poèetak reda: 0 7. Za poništavanje prethodnih izmena, pritisnite: u (malo u) Za poništavanje svih promena u redu, pritisnite: U (veliko U) - Za vracanja promena, otkucajte: CTRL-R + Za vraæanja promena, otkucajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3.1: KOMANDA POSTAVLJANJA @@ -371,7 +371,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ** Otkucajte p da postavite prethodno izbrisan tekst iza kursora. ** - 1. Pomerite kursor na prvi sledeci red oznacen sa --->. + 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. 2. Otkucajte dd da izbrišete red i smestite ga u Vim registar. @@ -384,7 +384,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> d) prebijena štapa. ---> b) uzda od kanapa, ----> c) a bic mi je od ocina +---> c) a biè mi je od oèina ---> a) Sedlo mi je od marame, @@ -394,7 +394,7 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ** Otkucajte rx da zamenite znak ispod kursora slovom x . ** - 1. Pomerite kursor na prvi sledeci red oznacen sa --->. + 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. 2. Pomerite kursor tako da se nalazi na prvoj grešci. @@ -406,33 +406,33 @@ NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez ---> Kedi ju ovej red ugašen, nako je protresao pustašne testere! ---> Kada je ovaj red unošen, neko je pritiskao pogrešne tastere! - 5. Predite na lekciju 1.3.3. + 5. Preðite na lekciju 1.3.3. -NAPOMENA: Setite se da treba da ucite vežbanjem, ne pamcenjem. +NAPOMENA: Setite se da treba da uèite vežbanjem, ne pamæenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3.3: OPERATOR IZMENE - ** Za izmenu teksta do kraja reci, otkucajte ce .** + ** Za izmenu teksta do kraja reèi, otkucajte ce .** - 1. Pomerite kursor na prvi sledeci red oznacen sa --->. + 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. 2. Postavite kursor na a u rakdur. - 3. Otkucajte ce i ispravite rec (u ovom slucaju otkucajte ed ). + 3. Otkucajte ce i ispravite reè (u ovom sluèaju otkucajte ed ). - 4. Pritisnite i pomerite kursor na sledeci znak koji + 4. Pritisnite i pomerite kursor na sledeæi znak koji treba ispraviti. - 5. Ponavljajte korake 3 i 4 sve dok prva recenica ne bude ista + 5. Ponavljajte korake 3 i 4 sve dok prva reèenica ne bude ista kao druga. ---> Ovaj rakdur ima nekoliko rejga koje treflja isprpikati operagrom izmene. ----> Ovaj red ima nekoliko reci koje treba ispraviti operatorom izmene. +---> Ovaj red ima nekoliko reèi koje treba ispraviti operatorom izmene. -Uocite da ce briše rec i postavlja editor u Insert mod. +Uoèite da ce briše reè i postavlja editor u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3.4: DALJE IZMENE UPOTREBOM c @@ -440,13 +440,13 @@ Uocite da ce bri ** Komanda izmene se koristi sa istim pokretima kao i brisanje. ** - 1. Operator izmene se koristi na isti nacin kao i operator brisanja: + 1. Operator izmene se koristi na isti naèin kao i operator brisanja: c [broj] pokret - 2. Pokreti su isti, recimo: w (rec) i $ (kraj reda). + 2. Pokreti su isti, recimo: w (reè) i $ (kraj reda). - 3. Pomerite kursor na prvi sledeci red oznacen sa --->. + 3. Pomerite kursor na prvi sledeæi red oznaèen sa --->. 4. Pomerite kursor na prvu grešku. @@ -454,7 +454,7 @@ Uocite da ce bri drugi red, pa pritisnite . ---> Kraj ovog reda treba izmeniti tako da izgleda kao red ispod. ----> Kraj ovog reda treba ispraviti korišcenjem c$ komande. +---> Kraj ovog reda treba ispraviti korišæenjem c$ komande. NAPOMENA: Za ispravljanje grešaka možete koristiti Backspace . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -463,20 +463,20 @@ NAPOMENA: Za ispravljanje gre 1. Za postavljanje teksta koji ste upravo izbrisali, pritisnite p . Ovo postavlja tekst IZA kursora (ako je bio izbrisan jedan ili više redova - sadržaj ce doci na red ispod kursora). + sadržaj æe doæi na red ispod kursora). 2. Za zamenu znaka na kome se nalazi kursor, pritisnite r i onda željeni znak. 3. Operator izmene dozvoljava promenu teksta od kursora do pozicije gde se završava pokret. Primera radi, kucajte ce za izmenu od kursora do - kraja reci, ili c$ za izmenu od kursora do kraja reda. + kraja reèi, ili c$ za izmenu od kursora do kraja reda. 4. Oblik operacije izmene je: c [broj] pokret -Predite na narednu lekciju. +Preðite na narednu lekciju. @@ -486,20 +486,20 @@ Predite na narednu lekciju. ** Pritisnite CTRL-G za prikaz pozicije kursora u tekstu i status fajla. Pritisnite G za pomeranje kursora na neki red u tekstu. ** -NAPOMENA: Procitajte celu lekciju pre izvodenja bilo kog koraka!! +NAPOMENA: Proèitajte celu lekciju pre izvoðenja bilo kog koraka!! 1. Držite taster CTRL i pritisnite g . Ovo zovemo CTRL-G. - Editor ce na dnu ekrana ispisati poruku sa imenom fajla i pozicijom + Editor æe na dnu ekrana ispisati poruku sa imenom fajla i pozicijom kursora u tekstu. Zapamtite broj reda za 3. korak. NAPOMENA: U donjem desnom uglu može se videti poziciju kursora ako je - ukljucena opcija 'ruler' (vidi :help ruler ili lekciju 1.6.5.) + ukljuèena opcija 'ruler' (vidi :help ruler ili lekciju 1.6.5.) 2. Pritisnite G za pomeranje kursora na kraj teksta. - Pritisnite 1G ili gg za pomranje kursora na pocetak teksta. + Pritisnite 1G ili gg za pomranje kursora na poèetak teksta. 3. Otkucajte broj reda na kome ste malopre bili i onda G . Kursor - ce se vratiti na red na kome je bio kad ste otkucali CTRL-G. + æe se vratiti na red na kome je bio kad ste otkucali CTRL-G. 4. Ako ste spremni, izvršite korake od 1 do 3. @@ -512,7 +512,7 @@ NAPOMENA: U donjem desnom uglu mo zajedno sa kursorom na dnu ekrana kao i kod komande : . 2. Sada otkucajte 'grrreška' . (Bez razmaka i navodnika.) - To je rec koju tražite. + To je reè koju tražite. 3. Za ponovno traženje istog izraza, otkucajte n . Za traženje istog izraza u suprotnom smeru, otkucajte N . @@ -524,8 +524,8 @@ NAPOMENA: U donjem desnom uglu mo ---> "grrreška" je pogrešno; umesto grrreška treba da stoji greška. -NAPOMENA: Ako pretraga dode do kraja teksta traženje ce se nastaviti od - njegovog pocetka osim ako je opcija 'wrapscan' iskljucena. +NAPOMENA: Ako pretraga doðe do kraja teksta traženje æe se nastaviti od + njegovog poèetka osim ako je opcija 'wrapscan' iskljuèena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.4.3: TRAŽENJE PARA ZAGRADE @@ -533,17 +533,17 @@ NAPOMENA: Ako pretraga dode do kraja teksta tra ** Otkucajte % za nalaženje para ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { - otvorenih zagrada u redu oznacenom sa --->. + otvorenih zagrada u redu oznaèenom sa --->. 2. Otkucajte znak % . - 3. Kursor ce se pomeriti na odgovarajucu zatvorenu zagradu. + 3. Kursor æe se pomeriti na odgovarajuæu zatvorenu zagradu. 4. Otkucajte % da pomerite kursor na prvu zagradu u paru. 5. Pomerite kursor na neku od (,),[,],{ ili } i ponovite komandu % . ----> Red ( testiranja obicnih ( [ uglastih ] i { viticastih } zagrada.)) +---> Red ( testiranja obiènih ( [ uglastih ] i { vitièastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! @@ -555,19 +555,19 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! ** Otkucajte :s/staro/novo/g da zamenite 'staro' za 'novo'. ** - 1. Pomerite kursor na red oznacen sa --->. + 1. Pomerite kursor na red oznaèen sa --->. 2. Otkucajte :s/rdi/ri/ . Primetite da ova komanda zamenjuje samo prvo "rdi" u redu. - 3. Otkucajte :s/rdi/ri/g . Dodavanje opcije g znaci da ce se komanda + 3. Otkucajte :s/rdi/ri/g . Dodavanje opcije g znaèi da æe se komanda izvršiti u celom redu, zamenom svih pojava niza "rdi". ---> rdiba rdibi grdize rep. - 4. Za zamenu svih izraza izmedu neka dva reda, + 4. Za zamenu svih izraza izmeðu neka dva reda, otkucajte :#,#s/staro/novo/g gde su #,# krajnji brojevi redova u opsegu - u kome ce se obaviti zamena. + u kome æe se obaviti zamena. Otkucajte :%s/staro/novo/g za zamenu svih izraza u celom tekstu. Otkucajte :%s/staro/novo/gc za nalaženje svih izraza u tekstu i potvrdu zamene. @@ -585,7 +585,7 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! Kucanjem ? sa izrazom taj izraz se traži UNAZAD. Posle komande traženja koristite n za nalaženje izraza u istom smeru, a N za nalaženje u suprotnom smeru. - CTRL-O vraca kursor na prethodnu poziciju, a CTRL-I na narednu. + CTRL-O vraæa kursor na prethodnu poziciju, a CTRL-I na narednu. 3. Kucanjem % kad je kursor na zagradi on se pomera na njen par. @@ -602,20 +602,20 @@ NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! ** Otkucajte :! pa spoljašnju komandu koju želite da izvršite. ** 1. Otkucajte poznatu komandu : da biste namestili kursor na dno - ekrana. Time omogucavate unos komande u komandnoj liniji editora. + ekrana. Time omoguæavate unos komande u komandnoj liniji editora. - 2. Otkucajte znak ! (uzvicnik). Ovime omogucavate + 2. Otkucajte znak ! (uzviènik). Ovime omoguæavate izvršavanje bilo koje spoljašnje komande. - 3. Kao primer otkucajte ls posle ! i pritisnite . Ovo ce + 3. Kao primer otkucajte ls posle ! i pritisnite . Ovo æe prikazati sadržaj direktorijuma, kao da ste na komandnom promptu. Otkucajte :!dir ako :!ls ne radi. -NAPOMENA: Na ovaj nacin moguce je izvršiti bilo koju spoljašnju komandu, +NAPOMENA: Na ovaj naèin moguæe je izvršiti bilo koju spoljašnju komandu, zajedno sa njenim argumentima. NAPOMENA: Sve : komande se izvršavaju pošto pritisnete . - U daljem tekstu to necemo uvek napominjati. + U daljem tekstu to neæemo uvek napominjati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -624,25 +624,25 @@ NAPOMENA: Sve : komande se izvr ** Za snimanje promena, otkucajte :w IME_FAJLA . ** 1. Otkucajte :!dir ili :!ls za pregled sadržaja direktorijuma. - Vec znate da morate pritisnuti posle toga. + Veæ znate da morate pritisnuti posle toga. 2. Izaberite ime fajla koji još ne postoji, npr. TEST. 3. Otkucajte: :w TEST (gde je TEST ime koje ste izabrali.) - 4. Time cete snimiti ceo fajl (Vim Tutor) pod imenom TEST. + 4. Time æete snimiti ceo fajl (Vim Tutor) pod imenom TEST. Za proveru, otkucajte opet :!dir ili :!ls za pregled sadržaja direktorijuma. NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , - tekst bi bio tacna kopija ovog fajla u trenutku kad ste + tekst bi bio taèna kopija ovog fajla u trenutku kad ste ga snimili. - 5. Izbrišite fajl tako što cete otkucati (MS-DOS): :!del TEST + 5. Izbrišite fajl tako što æete otkucati (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5.3: SNIMANJE OZNACENOG TEKSTA + Lekcija 1.5.3: SNIMANJE OZNAÈENOG TEKSTA ** Da biste snimili deo teksta, otkucajte v pokret :w IME_FAJLA ** @@ -650,40 +650,40 @@ NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , 1. Pomerite kursor na ovu liniju. 2. Pritisnite v i pomerite kursor pet redova ispod. Primetite da je - tekst oznacen inverzno. + tekst oznaèen inverzno. - 3. Pritisnite : . Na dnu ekrana pojavice se :'<,'> . + 3. Pritisnite : . Na dnu ekrana pojaviæe se :'<,'> . 4. Otkucajte w TEST , gde je TEST ime fajla koji još ne postoji. Proverite da zaista piše :'<,'>w TEST pre nego što pritisnete . - 5. Vim ce snimiti oznaceni tekst u TEST. Proverite sa :!dir ili !ls . - Nemojte još brisati fajl! Koristicemo ga u narednoj lekciji. + 5. Vim æe snimiti oznaèeni tekst u TEST. Proverite sa :!dir ili !ls . + Nemojte još brisati fajl! Koristiæemo ga u narednoj lekciji. -NAPOMENA: Komanda v zapocinje vizuelno oznacavanje. Možete pomerati kursor - i tako menjati velicinu oznacenog teksta. Onda možete upotrebiti - operatore nad tekstom. Na primer, d ce izbrisati oznaceni tekst. +NAPOMENA: Komanda v zapoèinje vizuelno oznaèavanje. Možete pomerati kursor + i tako menjati velièinu oznaèenog teksta. Onda možete upotrebiti + operatore nad tekstom. Na primer, d æe izbrisati oznaèeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5.4: UCITAVANJE FAJLA U TEKST + Lekcija 1.5.4: UÈITAVANJE FAJLA U TEKST ** Za ubacivanje sadržaja fajla, otkucajte :r IME_FAJLA ** 1. Postavite kursor iznad ove linije. -NAPOMENA: Pošto izvršite 2. korak videcete tekst iz lekcije 1.5.3. Tada +NAPOMENA: Pošto izvršite 2. korak videæete tekst iz lekcije 1.5.3. Tada pomerite kursor DOLE da biste ponovo videli ovu lekciju. - 2. Ucitajte fajl TEST koristeci komandu :r TEST gde je TEST ime fajla - koje ste koristili u prethodnoj lekciji. Sadržaj ucitanog fajla je - ubacen ispod kursora. + 2. Uèitajte fajl TEST koristeæi komandu :r TEST gde je TEST ime fajla + koje ste koristili u prethodnoj lekciji. Sadržaj uèitanog fajla je + ubaèen ispod kursora. - 3. Da biste proverili da je fajl ucitan, vratite kursor unazad i + 3. Da biste proverili da je fajl uèitan, vratite kursor unazad i primetite dve kopije lekcije 1.5.3, originalnu i onu iz fajla. -NAPOMENA: Takode možete ucitati izlaz spoljašnje komande. Na primer, - :r !ls ce ucitati izlaz komande ls i postaviti ga ispod +NAPOMENA: Takoðe možete uèitati izlaz spoljašnje komande. Na primer, + :r !ls æe uèitati izlaz komande ls i postaviti ga ispod kursora. @@ -700,13 +700,13 @@ NAPOMENA: Takode mo 2. :w FAJL zapisuje trenutni tekst na disk pod imenom FAJL. - 3. v pokret :w IME_FAJLA snima vizuelno oznacene redove u fajl + 3. v pokret :w IME_FAJLA snima vizuelno oznaèene redove u fajl IME_FAJLA. - 4. :r IME_FAJLA ucitava fajl IME_FAJLA sa diska i stavlja + 4. :r IME_FAJLA uèitava fajl IME_FAJLA sa diska i stavlja njegov sadržaj ispod kursora. - 5. :r !dir ucitava izlaz komande dir i postavlja ga ispod kursora. + 5. :r !dir uèitava izlaz komande dir i postavlja ga ispod kursora. @@ -717,7 +717,7 @@ NAPOMENA: Takode mo ** Pritisnite o da biste otvorili red ispod kursora i prešli u Insert mod. ** - 1. Pomerite kursor na sledeci red oznacen sa --->. + 1. Pomerite kursor na sledeæi red oznaèen sa --->. 2. Otkucajte malo o da biste otvorili novi red ISPOD kursora i prešli u Insert mod. @@ -728,7 +728,7 @@ NAPOMENA: Takode mo ---> Kad pritisnete o kursor prelazi u novootvoreni red u Insert modu. 4. Za otvaranje reda IZNAD kursora, umesto malog otkucajte veliko O . - Isprobajte na donjem redu oznacenom sa --->. + Isprobajte na donjem redu oznaèenom sa --->. ---> Otvorite red iznad ovog kucanjem velikog O dok je kursor u ovom redu. @@ -739,31 +739,31 @@ NAPOMENA: Takode mo ** Otkucajte a za dodavanje teksta IZA kursora. ** - 1. Pomerite kursor na pocetak sledeceg reda oznacenog sa --->. + 1. Pomerite kursor na poèetak sledeæeg reda oznaèenog sa --->. - 2. Kucajte e dok kursor ne dode na kraj reci re . + 2. Kucajte e dok kursor ne doðe na kraj reèi re . 3. Otkucajte a (malo) da biste dodali tekst IZA kursora. - 4. Dopunite rec kao što je u redu ispod. Pritisnite za izlazak + 4. Dopunite reè kao što je u redu ispod. Pritisnite za izlazak iz Insert moda. - 5. Sa e predite na narednu nepotpunu rec i ponovite korake 3 i 4. + 5. Sa e preðite na narednu nepotpunu reè i ponovite korake 3 i 4. ----> Ovaj re omogucava ve dodav teksta u nekom redu. ----> Ovaj red omogucava vežbanje dodavanja teksta u nekom redu. +---> Ovaj re omoguæava ve dodav teksta u nekom redu. +---> Ovaj red omoguæava vežbanje dodavanja teksta u nekom redu. NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina - razlika je u poziciji od koje ce se tekst ubacivati. + razlika je u poziciji od koje æe se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6.3: DRUGI NACIN ZAMENE + Lekcija 1.6.3: DRUGI NAÈIN ZAMENE ** Otkucajte veliko R da biste zamenili više od jednog znaka. ** - 1. Pomerite kursor na prvi sledeci red oznacen sa --->. - Pomerite kursor na pocetak prvog xxx . + 1. Pomerite kursor na prvi sledeæi red oznaèen sa --->. + Pomerite kursor na poèetak prvog xxx . 2. Pritisnite R i otkucajte broj koji je red ispod, tako da zameni xxx . @@ -777,7 +777,7 @@ NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina ---> Dodavanje 123 na 456 daje 579. NAPOMENA: Replace mod je kao Insert mod, s tom razlikom što svaki - uneti znak briše vec postojeci. + uneti znak briše veæ postojeæi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6.4: KOPIRANJE I LEPLJENJE TEKSTA @@ -789,41 +789,41 @@ NAPOMENA: Replace mod je kao Insert mod, s tom razlikom 2. Aktivirajte Visual mod sa v i pomerite kursor sve do ispred "prvi". - 3. Pritisnite y da biste kopirali oznaceni tekst u interni bafer. + 3. Pritisnite y da biste kopirali oznaèeni tekst u interni bafer. - 4. Pomerite kursor do kraja sledeceg reda: j$ + 4. Pomerite kursor do kraja sledeæeg reda: j$ 5. Pritisnite p da biste zalepili tekst. Onda otkucajte: a drugi . - 6. Upotrebite Visual mod da oznacite " red.", kopirajte sa y , kursor - pomerite na kraj sledeceg reda sa j$ i tamo zalepite tekst sa p . + 6. Upotrebite Visual mod da oznaèite " red.", kopirajte sa y , kursor + pomerite na kraj sledeæeg reda sa j$ i tamo zalepite tekst sa p . ---> a) ovo je prvi red. b) -NAPOMENA: takode možete koristiti y kao operator; yw kopira jednu rec. +NAPOMENA: takoðe možete koristiti y kao operator; yw kopira jednu reè. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6.5: POSTAVLJANJE OPCIJA - ** Postavite opciju tako da traženje i zamena ignorišu velicinu slova ** + ** Postavite opciju tako da traženje i zamena ignorišu velièinu slova ** - 1. Potražite rec 'razlika': /razlika + 1. Potražite reè 'razlika': /razlika Ponovite nekoliko puta pritiskom na n . 2. Aktivirajte opciju 'ic' (Ignore case): :set ic - 3. Ponovo potražite rec 'razlika' pritiskom na n - Primetite da su sada pronadeni i RAZLIKA i Razlika. + 3. Ponovo potražite reè 'razlika' pritiskom na n + Primetite da su sada pronaðeni i RAZLIKA i Razlika. 4. Aktivirajte opcije 'hlsearch' i 'incsearch': :set hls is - 5. Ponovo otkucajte komandu traženja i uocite razlike: /razlika + 5. Ponovo otkucajte komandu traženja i uoèite razlike: /razlika 6. Za deaktiviranje opcije ic kucajte: :set noic -NAPOMENA: Za neoznacavanje pronadenih izraza otkucajte: :nohlsearch -NAPOMENA: Ako želite da ne razlikujete velicinu slova u samo jednoj komandi +NAPOMENA: Za neoznaèavanje pronaðenih izraza otkucajte: :nohlsearch +NAPOMENA: Ako želite da ne razlikujete velièinu slova u samo jednoj komandi traženja, dodajte \c u izraz: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 1.6 @@ -834,7 +834,7 @@ NAPOMENA: Ako 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju reda. - 3. Komanda e pomera kursor na kraj reci. + 3. Komanda e pomera kursor na kraj reèi. 4. Operator y kopira tekst, p ga lepi. @@ -842,29 +842,29 @@ NAPOMENA: Ako 6. Kucanje ":set xxx" aktivira opciju "xxx". Neke opcije su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju - 'is' 'incsearch' prikazuje pronaden tekst dok kucate izraz - 'hls' 'hlsearch' oznacava inverzno sve pronadene izraze + 'is' 'incsearch' prikazuje pronaðen tekst dok kucate izraz + 'hls' 'hlsearch' oznaèava inverzno sve pronaðene izraze Možete koristite dugo ili kratko ime opcije. 7. Ispred imena opcije stavite "no" da je deaktivirate: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.7.1: DOBIJANJE POMOCI + Lekcija 1.7.1: DOBIJANJE POMOÆI - ** Koristite on-line sistem za pomoc ** + ** Koristite on-line sistem za pomoæ ** - Vim ima detaljan on-line sistem za pomoc. Za pocetak, pokušajte nešto - od sledeceg: + Vim ima detaljan on-line sistem za pomoæ. Za poèetak, pokušajte nešto + od sledeæeg: - pritisnite taster (ako ga imate na tastaturi) - pritisnite taster (ako ga imate na tastaturi) - otkucajte :help - Procitajte tekst u prozoru pomoci da biste naucili pomoc radi. + Proèitajte tekst u prozoru pomoæi da biste nauèili pomoæ radi. Kucanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. - Otkucajte :q da zatvorite prozor pomoci. + Otkucajte :q da zatvorite prozor pomoæi. - Pomoc o prakticno bilo kojoj temi možete dobiti dodavanjem argumenta + Pomoæ o praktièno bilo kojoj temi možete dobiti dodavanjem argumenta komandi ":help". Pokušajte ovo (ne zaboravite na kraju): :help w @@ -875,22 +875,22 @@ NAPOMENA: Ako Lekcija 1.7.2: PRAVLJENJE STARTNOG SKRIPTA - ** Aktivirajte mogucnosti editora ** + ** Aktivirajte moguænosti editora ** - Vim ima mnogo više mogucnosti nego Vi, ali vecina nije automatski - aktivirana. Za dodatne mogucnosti napravite "vimrc" fajl. + Vim ima mnogo više moguænosti nego Vi, ali veæina nije automatski + aktivirana. Za dodatne moguænosti napravite "vimrc" fajl. 1. Otvorite "vimrc" fajl. Ovo zavisi od vašeg sistema: :e ~/.vimrc za Unix :e ~/_vimrc za MS-Windows - 2. Onda ucitajte primer sadržaja "vimrc" fajla: + 2. Onda uèitajte primer sadržaja "vimrc" fajla: :r $VIMRUNTIME/vimrc_example.vim 3. Snimite fajl sa: :w - Sledeci put kada pokrenete Vim, bojenje sintakse teksta bice + Sledeæi put kada pokrenete Vim, bojenje sintakse teksta biæe aktivirano. Sva svoja podešavanja možete dodati u "vimrc" fajl. Za više informacija otkucajte :help vimrc-intro @@ -904,35 +904,35 @@ NAPOMENA: Ako 2. Pogledajte koji fajlovi postoje u direktorijumu: :!ls ili :!dir - 3. Otkucajte pocetak komande: :e + 3. Otkucajte poèetak komande: :e - 4. Otkucajte CTRL-D i Vim ce prikazati spisak komandi koje pocinju sa "e". + 4. Otkucajte CTRL-D i Vim æe prikazati spisak komandi koje poèinju sa "e". - 5. Pritisnite i Vim ce dopuniti ime komande u ":edit". + 5. Pritisnite i Vim æe dopuniti ime komande u ":edit". - 6. Dodajte razmak i pocetak imena postojeceg fajla: :edit FA + 6. Dodajte razmak i poèetak imena postojeæeg fajla: :edit FA - 7. Pritisnite . Vim ce dopuniti ime fajla (ako je jedinstveno). + 7. Pritisnite . Vim æe dopuniti ime fajla (ako je jedinstveno). -NAPOMENA: Moguce je dopuniti mnoge komande. Samo probajte CTRL-D i . - Narocito je korisno za :help komande. +NAPOMENA: Moguæe je dopuniti mnoge komande. Samo probajte CTRL-D i . + Naroèito je korisno za :help komande. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 1.7 - 1. Otkucajte :help ili pritisnite ili za pomoc. + 1. Otkucajte :help ili pritisnite ili za pomoæ. - 2. Otkucajte :help komanda biste dobili pomoc za tu komandu. + 2. Otkucajte :help komanda biste dobili pomoæ za tu komandu. 3. Otkucajte CTRL-W CTRL-W za prelazak u drugi prozor. - 4. Otkucajte :q da zatvorite prozor pomoci. + 4. Otkucajte :q da zatvorite prozor pomoæi. 5. Napravite vimrc startni skript za aktiviranje podešavanja koja vam odgovaraju. - 6. Dok kucate neku od : komandi, pritisnite CTRL-D da biste videli moguce + 6. Dok kucate neku od : komandi, pritisnite CTRL-D da biste videli moguæe vrednosti. Pritisnite da odaberete jednu od njih. @@ -941,30 +941,30 @@ NAPOMENA: Moguce je dopuniti mnoge komande. Samo probajte CTRL-D i . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ovim je prirucnik završen. Njegov cilj je bio kratak pregled Vim editora, - koliko da omoguci njegovo relativno jednostavno korišcenje. Prirucnik nije - potpun, jer Vim ima mnogo više komandi. Kao sledece, procitajte prirucnik: + Ovim je priruènik završen. Njegov cilj je bio kratak pregled Vim editora, + koliko da omoguæi njegovo relativno jednostavno korišæenje. Priruènik nije + potpun, jer Vim ima mnogo više komandi. Kao sledeæe, proèitajte priruènik: ":help user-manual". - Za dalje citanje i ucenje, preporucujemo knjigu: + Za dalje èitanje i uèenje, preporuèujemo knjigu: Vim - Vi Improved - by Steve Oualline - Izdavac: New Riders - Prva knjiga potpuno posvecena Vim-u. Narocito korisna za pocetnike. + Izdavaè: New Riders + Prva knjiga potpuno posveæena Vim-u. Naroèito korisna za poèetnike. Ima mnoštvo primera i slika. Vidite https://iccf-holland.org/click5.html - Sledeca knjiga je starija i više govori o Vi-u nego o Vim-u, ali je takode - preporucujemo: + Sledeæa knjiga je starija i više govori o Vi-u nego o Vim-u, ali je takoðe + preporuèujemo: Learning the Vi Editor - by Linda Lamb - Izdavac: O'Reilly & Associates Inc. + Izdavaè: O'Reilly & Associates Inc. Dobra knjiga iz koje možete saznati skoro sve što možete raditi u Vi-ju. Šesto izdanje ima i informacija o Vim-u. - Ovaj prirucnik su napisali: Michael C. Pierce i Robert K. Ware, - Colorado School of Mines koristeci ideje Charlesa Smitha, + Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware, + Colorado School of Mines koristeæi ideje Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. - Prilagodavanje za Vim uradio je Bram Moolenaar. + Prilagoðavanje za Vim uradio je Bram Moolenaar. Prevod na srpski: Ivan Nejgebauer Verzija 1.0, maj/juni 2014. diff --git a/runtime/tutor/tutor1.zh.utf-8 b/runtime/tutor/tutor1.zh.utf-8 index fc35259837..3b44665d12 100644 --- a/runtime/tutor/tutor1.zh.utf-8 +++ b/runtime/tutor/tutor1.zh.utf-8 @@ -26,7 +26,7 @@ ^ k æ示︰ h çš„éµä½äºŽå·¦é‚Šï¼Œæ¯æ¬¡æŒ‰ä¸‹å°±æœƒå‘左移動。 < h l > l çš„éµä½äºŽå³é‚Šï¼Œæ¯æ¬¡æŒ‰ä¸‹å°±æœƒå‘å³ç§»å‹•ã€‚ - j j éµçœ‹èµ·ä¾†å¾ˆè±¡ä¸€æ”¯å°–端方å‘æœä¸‹çš„箭頭。 + j j éµçœ‹ä¾†å¾ˆè±¡ä¸€æ”¯å°–端方å‘æœä¸‹çš„箭頭。 v 1. 請隨æ„在å±å¹•å…§ç§»å‹•å…‰æ¨™ï¼Œç›´è‡³æ‚¨è¦ºå¾—舒æœç‚ºæ­¢ã€‚ @@ -105,7 +105,7 @@ 3. 然後按下 i éµï¼ŒæŽ¥è‘—輸入必è¦çš„文本字符。 - 4. 所有文本都修正完畢,請按下 éµè¿”回正常模å¼ã€‚ + 4. 所有文本m修正完畢,請按下 éµè¿”回正常模å¼ã€‚ é‡å¾©æ­¥é©Ÿ2至步驟4以便修正å¥å­ã€‚ ---> There is text misng this . @@ -128,7 +128,7 @@ :q! <回車> - 或者輸入以下命令ä¿å­˜æ‰€æœ‰ä¿®æ”¹ï¸° + 或芨擗J以下命令ä¿å­˜æ‰€æœ‰ä¿®æ”¹ï¸° :wq <回車> @@ -138,7 +138,7 @@ i 輸入必è¦æ–‡æœ¬ -特別æ示︰按下 éµæœƒå¸¶æ‚¨å›žåˆ°æ­£å¸¸æ¨¡å¼æˆ–者å–消一個ä¸æœŸæœ›æˆ–è€…éƒ¨åˆ†å®Œæˆ +特別æ示︰按下 éµæœƒå¸¶æ‚¨å›žåˆ°æ­£å¸¸æ¨¡å¼æˆ–籵消一個ä¸æœŸæœ›æˆ–苀﹞嬪髡 的命令。 好了,第一講到此çµæŸã€‚下é¢æŽ¥ä¸‹ä¾†ç¹¼çºŒç¬¬äºŒè¬›çš„內容。 @@ -196,7 +196,7 @@ 刪除命令 d çš„æ ¼å¼å¦‚下︰ - [number] d object 或者 d [number] object + [number] d object 或 d [number] object å…¶æ„如下︰ number - 代表執行命令的次數(å¯é¸é …,缺çœè¨­ç½®ç‚º 1 )。 @@ -209,7 +209,7 @@ $ - 從當å‰å…‰æ¨™ç•¶å‰ä½ç½®ç›´åˆ°ç•¶å‰è¡Œæœ«ã€‚ 特別æ示︰ - å°äºŽå‹‡äºŽæŽ¢ç´¢è€…,請在正常模å¼ä¸‹é¢åƒ…按代表相應å°è±¡çš„éµè€Œä¸ä½¿ç”¨å‘½ä»¤ï¼Œå‰‡ + å°äºŽå‹‡äºŽæŽ¢ç´¢çŸ·A請在正常模å¼ä¸‹é¢åƒ…按代表相應å°è±¡çš„éµè€Œä¸ä½¿ç”¨å‘½ä»¤ï¼Œå‰‡ 將看到光標的移動正如上é¢çš„å°è±¡åˆ—表所代表的一樣。 @@ -221,7 +221,7 @@ ** 輸入 dd å¯ä»¥åˆªé™¤æ•´ä¸€å€‹ç•¶å‰è¡Œã€‚ ** - 鑒于整行刪除的高頻度,VIM 的設計者決定è¦ç°¡åŒ–整行刪除,僅需è¦åœ¨åŒä¸€è¡Œä¸Š + 鑒于整行刪除的高頻度,VIM 的設計籵M定è¦ç°¡åŒ–整行刪除,僅需è¦åœ¨åŒä¸€è¡Œä¸Š 擊打兩次 d å°±å¯ä»¥åˆªé™¤æŽ‰å…‰æ¨™æ‰€åœ¨çš„整行了。 1. 請將光標移動到本節中下é¢çš„短å¥æ®µè½ä¸­çš„第二行。 @@ -249,14 +249,14 @@ 2. 輸入 x 刪除第一個ä¸æƒ³ä¿ç•™çš„å­—æ¯ã€‚ 3. 然後輸入 u 撤消最後執行的(一次)命令。 4. 這次è¦ä½¿ç”¨ x 修正本行的所有錯誤。 - 5. ç¾åœ¨è¼¸å…¥ä¸€å€‹å¤§å¯«çš„ U ,æ¢å¾©åˆ°è©²è¡Œçš„原始狀態。 + 5. ç¾åœ¨è¼¸å…¥ä¸€å€‹å¤§å¯«çš„ U ,庖_到該行的原始狀態。 6. 接著多次輸入 u 以撤消 U 以åŠæ›´å‰çš„命令。 7. 然後多次輸入 CTRL-R (先按下 CTRL éµä¸æ”¾é–‹ï¼ŒæŽ¥è‘—輸入 R éµ) ,這樣就 - å¯ä»¥åŸ·è¡Œæ¢å¾©å‘½ä»¤ï¼Œä¹Ÿå°±æ˜¯æ’¤æ¶ˆæŽ‰æ’¤æ¶ˆå‘½ä»¤ã€‚ + å¯ä»¥åŸ·è¡Œåº–_命令,也就是撤消掉撤消命令。 ---> Fiix the errors oon thhis line and reeplace them witth undo. - 8. 這些都是éžå¸¸æœ‰ç”¨çš„命令。下é¢æ˜¯ç¬¬äºŒè¬›çš„å°çµäº†ã€‚ + 8. 這些m是éžå¸¸æœ‰ç”¨çš„命令。下é¢æ˜¯ç¬¬äºŒè¬›çš„å°çµäº†ã€‚ @@ -273,7 +273,7 @@ 4. 在正常模å¼ä¸‹ä¸€å€‹å‘½ä»¤çš„æ ¼å¼æ˜¯ï¸° - [number] command object 或者 command [number] object + [number] command object 或 command [number] object å…¶æ„是︰ number - 代表的是命令執行的次數 command - 代表è¦åšçš„事情,比如 d 代表刪除 @@ -282,7 +282,7 @@ 5. 欲撤消以å‰çš„æ“作,請輸入︰u (å°å¯«çš„u) 欲撤消在一行中所åšçš„改動,請輸入︰U (大寫的U) - 欲撤消以å‰çš„撤消命令,æ¢å¾©ä»¥å‰çš„æ“作çµæžœï¼Œè«‹è¼¸å…¥ï¸°CTRL-R + 欲撤消以å‰çš„撤消命令,庖_以å‰çš„æ“作çµæžœï¼Œè«‹è¼¸å…¥ï¸°CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第一節︰置入類命令 @@ -334,7 +334,7 @@ 第三講第三節︰更改類命令 - ** è¦æ”¹è®Šä¸€å€‹å–®å­—/單詞的部分或者全部,請輸入 cw ** + ** è¦æ”¹è®Šä¸€å€‹å–®å­—/單詞的部分或穸部,請輸入 cw ** 1. 請將光標移動到本節中下é¢æ¨™è¨˜æœ‰ ---> 的第一行。 @@ -361,7 +361,7 @@ 1. 更改類指令的工作方å¼è·Ÿåˆªé™¤é¡žå‘½ä»¤æ˜¯ä¸€è‡´çš„。æ“作格å¼æ˜¯ï¸° - [number] c object 或者 c [number] object + [number] c object 或 c [number] object 2. å°è±¡åƒæ•¸ä¹Ÿæ˜¯ä¸€æ¨£çš„,比如 w 代表單字/單詞,$代表行末等等。 @@ -393,7 +393,7 @@ 4. 更改類命令的格å¼æ˜¯ï¸° - [number] c object 或者 c [number] object + [number] c object 或 c [number] object 下é¢æˆ‘們繼續學習下一講。 @@ -427,7 +427,7 @@ ** 輸入 / 以åŠå°¾éš¨çš„字符串å¯ä»¥ç”¨ä»¥åœ¨ç•¶å‰æ–‡ä»¶ä¸­æŸ¥æ‰¾è©²å­—符串。** - 1. 在正常模å¼ä¸‹è¼¸å…¥ / 字符。您此時會注æ„到該字符和光標都會出ç¾åœ¨å±å¹•åº• + 1. 在正常模å¼ä¸‹è¼¸å…¥ / 字符。您此時會注æ„到該字符和光標m會出ç¾åœ¨å±å¹•åº• 部,這跟 : 命令是一樣的。 2. 接著輸入 errroor <回車>。那個errroor就是您è¦æŸ¥æ‰¾çš„字符串。 @@ -500,7 +500,7 @@ 2. 輸入 / 然後緊隨一個字符串是則是在當å‰æ‰€ç·¨è¼¯çš„文檔中å‘後查找該字符串。 輸入å•è™Ÿ ? 然後緊隨一個字符串是則是在當å‰æ‰€ç·¨è¼¯çš„文檔中å‘å‰æŸ¥æ‰¾è©²å­— 符串。完æˆä¸€æ¬¡æŸ¥æ‰¾ä¹‹å¾ŒæŒ‰ n éµå‰‡æ˜¯é‡å¾©ä¸Šä¸€æ¬¡çš„命令,å¯åœ¨åŒä¸€æ–¹å‘上查 - 找下一個字符串所在;或者按 Shift-N å‘相åæ–¹å‘查找下該字符串所在。 + æ‰¾ä¸‹ä¸€å€‹å­—ç¬¦ä¸²æ‰€åœ¨ï¼›æˆ–è‚ Shift-N å‘相åæ–¹å‘查找下該字符串所在。 3. 如果光標當å‰ä½ç½®æ˜¯æ‹¬è™Ÿ(ã€)ã€[ã€]ã€{ã€},按 % å¯ä»¥å°‡å…‰æ¨™ç§»å‹•åˆ°é…å°çš„ 括號上。 @@ -523,12 +523,12 @@ 2. 接著輸入感嘆號 ! 這個字符,這樣就å…許您執行外部的 shell 命令了。 3. 我們以 ls 命令為例。輸入 !ls <回車> 。該命令就會列舉出您當å‰ç›®éŒ„çš„ - 內容,就如åŒæ‚¨åœ¨å‘½ä»¤è¡Œæ示符下輸入 ls 命令的çµæžœä¸€æ¨£ã€‚如果 !ls æ²’èµ· + 內容,就如åŒæ‚¨åœ¨å‘½ä»¤è¡Œæ示符下輸入 ls 命令的çµæžœä¸€æ¨£ã€‚如果 !ls æ²’ 作用,您å¯ä»¥è©¦è©¦ :!dir 看看。 ----> æ示︰ 所有的外部命令都å¯ä»¥ä»¥é€™ç¨®æ–¹å¼åŸ·è¡Œã€‚ +---> æ示︰ 所有的外部命令må¯ä»¥ä»¥é€™ç¨®æ–¹å¼åŸ·è¡Œã€‚ ----> æ示︰ 所有的 : 命令都必須以 <回車> 告終。 +---> æ示︰ 所有的 : 命令m必須以 <回車> 告終。 @@ -539,7 +539,7 @@ ** è¦å°‡å°æ–‡ä»¶çš„改動ä¿å­˜åˆ°æ–‡ä»¶ä¸­ï¼Œè«‹è¼¸å…¥ :w FILENAME ** - 1. 輸入 :!dir 或者 :!ls ç²çŸ¥ç•¶å‰ç›®éŒ„的內容。您應當已知é“最後還得敲 + 1. 輸入 :!dir 或 :!ls ç²çŸ¥ç•¶å‰ç›®éŒ„的內容。您應當已知é“最後還得敲 <回車> å§ã€‚ 2. é¸æ“‡ä¸€å€‹å°šæœªå­˜åœ¨æ–‡ä»¶å,比如 TEST 。 @@ -562,7 +562,7 @@ ** è¦ä¿å­˜æ–‡ä»¶çš„部分內容,請輸入 :#,# w FILENAME ** - 1. å†ä¾†åŸ·è¡Œä¸€æ¬¡ :!dir 或者 :!ls ç²çŸ¥ç•¶å‰ç›®éŒ„的內容,然後é¸æ“‡ä¸€å€‹åˆé©çš„ + 1. å†ä¾†åŸ·è¡Œä¸€æ¬¡ :!dir 或 :!ls ç²çŸ¥ç•¶å‰ç›®éŒ„的內容,然後é¸æ“‡ä¸€å€‹åˆé©çš„ ä¸é‡å的文件å,比如 TEST 。 2. 接著將光標移動至本é çš„最頂端,然後按 CTRL-g 找到該行的行號。別忘了 @@ -700,7 +700,7 @@ Open up a line above this by typing Shift-O while the cursor is on this line. 第六講第四節︰設置類命令的é¸é … - ** 設置å¯ä½¿æŸ¥æ‰¾æˆ–者替æ›å¯å¿½ç•¥å¤§å°å¯«çš„é¸é … ** + ** 設置å¯ä½¿æŸ¥æ‰¾æˆ–芫懂咱i忽略大å°å¯«çš„é¸é … ** 1. è¦æŸ¥æ‰¾å–®è©ž ignore å¯åœ¨æ­£å¸¸æ¨¡å¼ä¸‹è¼¸å…¥ /ignore 。è¦é‡å¾©æŸ¥æ‰¾è©²è©žï¼Œå¯ä»¥ @@ -772,7 +772,7 @@ Open up a line above this by typing Shift-O while the cursor is on this line. ** 啟用vim的功能 ** - Vim的功能特性è¦æ¯”vi多得多,但大部分功能都沒有缺çœæ¿€æ´»ã€‚為了啟動更多的 + Vim的功能特性è¦æ¯”vi多得多,但大部分功能m沒有缺çœæ¿€æ´»ã€‚為了啟動更多的 功能,您得創建一個vimrc文件。 1. 開始編輯vimrc文件,這å–決于您所使用的æ“作系統︰ @@ -801,15 +801,15 @@ Open up a line above this by typing Shift-O while the cursor is on this line. 為了更進一步的åƒè€ƒå’Œå­¸ç¿’,以下這本書值得推薦︰ - Vim - Vi Improved - 作者︰Steve Oualline + Vim - Vi Improved - 作矷JSteve Oualline 出版社︰New Riders - 這是第一本完全講解vim的書ç±ã€‚å°äºŽåˆå­¸è€…特別有用。其中還包å«æœ‰å¤§é‡å¯¦ä¾‹ + 這是第一本完全講解vim的書ç±ã€‚å°äºŽåˆå­¸è‚µS別有用。其中還包å«æœ‰å¤§é‡å¯¦ä¾‹ å’Œåœ–ç¤ºã€‚æ¬²çŸ¥è©³æƒ…ï¼Œè«‹è¨ªå• https://iccf-holland.org/click5.html 以下這本書比較è€äº†è€Œä¸”內容主è¦æ˜¯vi而ä¸æ˜¯vim,但是也值得推薦︰ - Learning the Vi Editor - 作者︰Linda Lamb + Learning the Vi Editor - 作矷JLinda Lamb 出版社︰O'Reilly & Associates Inc. 這是一本ä¸éŒ¯çš„書,通éŽå®ƒæ‚¨å¹¾ä¹Žèƒ½å¤ äº†è§£åˆ°å…¨éƒ¨vi能夠åšåˆ°çš„事情。此書的第 @@ -817,7 +817,7 @@ Open up a line above this by typing Shift-O while the cursor is on this line. 本教程是由來自Calorado School of Mineseçš„Michael C. Pierceã€Robert K. Ware 所編寫的,其中來自Colorado State Universityçš„Charles Smithæ供了 - 很多創æ„。編者通信地å€æ˜¯ï¸° + 很多創æ„。編苀q信地å€æ˜¯ï¸° bware@mines.colorado.edu @@ -825,9 +825,9 @@ Open up a line above this by typing Shift-O while the cursor is on this line. - 譯制者附言︰ + 譯制耵言︰ =========== - 簡體中文教程翻譯版之譯制者為æ¢æ˜Œæ³° ,還有 + 簡體中文教程翻譯版之譯制肮åœè›é°¹ ,還有 å¦å¤–一個è¯ç³»åœ°å€ï¸°linuxrat@gnuchina.org。 ç¹é«”中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux ä¸­æ–‡é …ç›®å° From 0b5926f77fb8ff042cc061566bb3fc634428ce2e Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Tue, 3 Dec 2024 21:14:45 +0100 Subject: [PATCH 060/244] translation(it): include Italian version of tutor chapter 2 Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/tutor/Make_all.mak | 3 +- runtime/tutor/tutor2.it | 197 ++++++++++++++++++++++++++++++++++ runtime/tutor/tutor2.it.utf-8 | 197 ++++++++++++++++++++++++++++++++++ 3 files changed, 396 insertions(+), 1 deletion(-) create mode 100644 runtime/tutor/tutor2.it create mode 100644 runtime/tutor/tutor2.it.utf-8 diff --git a/runtime/tutor/Make_all.mak b/runtime/tutor/Make_all.mak index 01fd12ddee..aafc3960ff 100644 --- a/runtime/tutor/Make_all.mak +++ b/runtime/tutor/Make_all.mak @@ -41,7 +41,8 @@ CHAPTER1 = \ tutor1.zh.utf-8 CHAPTER2 = \ - tutor2 + tutor2 \ + tutor2.it CONVERTED = $(CHAPTER1) $(CHAPTER2) diff --git a/runtime/tutor/tutor2.it b/runtime/tutor/tutor2.it new file mode 100644 index 0000000000..1d04b355ef --- /dev/null +++ b/runtime/tutor/tutor2.it @@ -0,0 +1,197 @@ +=============================================================================== += Benvenuto alla G u i d a all'Editor V I M - Versione 1.7 = +=============================================================================== += C A P I T O L O DUE = +=============================================================================== + + Hic Sunt Dracones: Se questa è la prima volta che vi accostate a vim + e preferite iniziare dal capitolo introduttivo, gentilmente immettete + :q e poi iniziate da quello. + + Il tempo necessario per completare questo capitolo è di circa 8-10 + minuti, a seconda del tempo utilizzato per fare delle prove. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lezione 2.1.1: I REGISTRI CON NOME + + + ** Copiare due parole in registri diversi e poi incollarle ** + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Andate su una lettera qualsiasi di 'Edward' e battete "ayiw + +MNEMONICO: nel registro(") di nome (a) (y)copia (i)interna (w)parola + + 3. Spostatevi alla parola 'biscotti' (fc o 2fb o $b o /bis) + e battete "byiw + + 4. Andate su una lettera qualsiasi di 'Vince' e battete ciwa + +MNEMONICO: (c)cambia (i)interna (w)parola con di nome (a) + + 5. Andate su una lettera qualsiasi di 'dolci' e battete ciwb + +---> a) Edward sarà d'ora in poi responsabile della razione di biscotti + b) Come compito, Vince sarà il solo a decidere riguardo ai dolci + +NOTA: Anche una parola cancellata può essere inviata ad un registro, p.es., + "sdiw cancellerà (d) la parola sotto il cursore (iw) e la metterà + nel registro (s) +RIFERIMENTI: Registri :h registers + Registri con nome :h quotea + Movimento :h motion.txt /inner + CTRL-R :h insert /CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1.2: IL REGISTRO DELLE ESPRESSIONI + + + ** Inserire al volo risultati di un calcolo ** + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Andate su un punto qualsiasi del numero fornito + + 3. Battete ciw=60*60*24 + + 4. Sulla riga seguente, entrate in modo Insert e aggiungete + la data di oggi con =system('date') + +NOTA: Tutte le chiamate a sistema dipendono dal S.O., p.es., in ambiente + Windows si usa system('date /t') o :r!date /t + +---> Non ricordo il numero esatto di secondi in un giorno, è 84600? + La data di oggi è: + +NOTA: Lo stesso risultato si può ottenere con :pu=system('date') + o, ancora più brevemente, con :r!date + +RIFERIMENTI: Registro espressioni :h quote= + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1.3: I REGISTRI NUMERATI + + + ** Battere yy e dd per vedere l'effetto sui registri ** + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Copiate (yy) la riga stessa e controllate i registri con :reg + + 3. Cancellate la riga che inizia con "0." con "cdd, poi controllate i + registri (Dove vi aspettate sia finita la riga cancellata?) + + 4. Continuate a cancellare ogni riga seguente, controllando ogni volta + con :reg il risultato +NOTA: Dovreste notare che le righe cancellate per prime scendono nella + lista, man mano che vengono aggiunte nuove righe cancellate + 5. Poi incollate (p) i seguenti registri nell'ordine; c, 7, 4, 8, 2.+ + ossia "cp "7p ... + +---> 0. Questo + 9. dondolante + 8. messaggio + 7. è + 6. in + 5. asse + 4. un + 3. guerresco + 2. segreto + 1. tributo + +NOTA: Le cancellazioni di righe intere (dd) sopravvivono nei registri numerati + molto più a lungo delle copie di righe intere (yy), o delle + cancellazioni che implicano movimenti minori + +RIFERIMENTI: Registri numerati :h quote0 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1.4: IL FASCINO DELLE MARCATURE + + + ** Evitare di contare le righe di codice ** + +NOTA: Un problema frequente quando si scrivono programmi è spostare numerose + righe di codice. Il metodo seguente evita di dover calcolare numeri di + riga con operazioni tipo "a147d o :945,1091d a o, ancor peggio, + usando prima i=1091-945 + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Andate alla prima riga della funzione e marcatela con ma + +NOTA: La posizione sulla riga NON è importante! + + 3. Spostatevi a fine riga e da qui alla fine del blocco di codice + con $% + + 4. Cancellate il blocco salvandolo nel registro a con "ad'a + +MNEMONICO: nel registro(") di nome (a) mettere la cancellazione (d) dal + cursore fino alla RIGA che contiene il marcatore (') (a) + + 5. Incollare il blocco the le righe BBB e CCC "ap + +NOTA: Provare più volte quest'operazione, per impratichirsi ma$%"ad'a + +---> AAA + function cresciutaTroppoinFretta() { + if ( condizioneVera ) { + faiQualcosa() + } + // La classificazione della nostra funzione è cambiata + // non ha senso mantenerla nella posizione attuale + + // ...immaginate centinaia di righe di codice + + // Ingenuamente si potrebbe andare dall'inizio alla fine + // e annotare da qualche parte il numero di righe + } + BBB + CCC + +NOTA: marcature e registri non hanno niente in comune, quindi il registro + a è completamente indipendente dalla marcatura a. Questo non vale + per i nomi dei registri e quelli delle macro di Vim. + +RIFERIMENTI: Marcature :h marks + Movimenti marcature :h mark-motions (differenza fra ' e `) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1 SOMMARIO + + + 1. Per inserire (copiando, cancellando) testo, e per incollarlo (incolla)) + sono disponibili 26 registri (a-z) + 2. Copiare una parola da una posizione qualsiasi al suo interno: yiw + 3. Cambiare una parola da una posizione qualsiasi al suo interno: ciw + 4. Inserire testo direttamente da registri in modo Insert: (C-r)a + + 5. Inserire il risultato di semplici operazioni aritmetiche in modo + Insert: (C-r)=60*60 + 6. Inserire il risultato di chiamate a sistema in modo Insert: + (C-r)=system('ls -1') + + 7. Controllare contenuto registri con :reg + 8. Vedere dove vanno a finire le cancellazioni di intere righe: dd + nei registri numerati, ossia discendendo dal registro 1 al 9. + Osservare che le righe intere cancellate sono disponibili nei registri + numerati più a lungo di qualsiasi altra modifica + 9. Vedere la destinazione finale delle operazioni di copia nei registri + numerati e controllare quanto si può aspettare che durino + + 10. Inserire marcature in modo Normale m[a-zA-Z0-9] + 11. Spostarsi a una riga marcata con il comando ' + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Qui finisce il capitolo due della guida Vim. Ci sono lavori in corso. + + Questo capitolo è stato scritto da Paul D. Parker + e tradotto da Antonio Colombo +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/runtime/tutor/tutor2.it.utf-8 b/runtime/tutor/tutor2.it.utf-8 new file mode 100644 index 0000000000..a337acd1c7 --- /dev/null +++ b/runtime/tutor/tutor2.it.utf-8 @@ -0,0 +1,197 @@ +=============================================================================== += Benvenuto alla G u i d a all'Editor V I M - Versione 1.7 = +=============================================================================== += C A P I T O L O DUE = +=============================================================================== + + Hic Sunt Dracones: Se questa è la prima volta che vi accostate a vim + e preferite iniziare dal capitolo introduttivo, gentilmente immettete + :q e poi iniziate da quello. + + Il tempo necessario per completare questo capitolo è di circa 8-10 + minuti, a seconda del tempo utilizzato per fare delle prove. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lezione 2.1.1: I REGISTRI CON NOME + + + ** Copiare due parole in registri diversi e poi incollarle ** + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Andate su una lettera qualsiasi di 'Edward' e battete "ayiw + +MNEMONICO: nel registro(") di nome (a) (y)copia (i)interna (w)parola + + 3. Spostatevi alla parola 'biscotti' (fc o 2fb o $b o /bis) + e battete "byiw + + 4. Andate su una lettera qualsiasi di 'Vince' e battete ciwa + +MNEMONICO: (c)cambia (i)interna (w)parola con di nome (a) + + 5. Andate su una lettera qualsiasi di 'dolci' e battete ciwb + +---> a) Edward sarà d'ora in poi responsabile della razione di biscotti + b) Come compito, Vince sarà il solo a decidere riguardo ai dolci + +NOTA: Anche una parola cancellata può essere inviata ad un registro, p.es., + "sdiw cancellerà (d) la parola sotto il cursore (iw) e la metterà + nel registro (s) +RIFERIMENTI: Registri :h registers + Registri con nome :h quotea + Movimento :h motion.txt /inner + CTRL-R :h insert /CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1.2: IL REGISTRO DELLE ESPRESSIONI + + + ** Inserire al volo risultati di un calcolo ** + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Andate su un punto qualsiasi del numero fornito + + 3. Battete ciw=60*60*24 + + 4. Sulla riga seguente, entrate in modo Insert e aggiungete + la data di oggi con =system('date') + +NOTA: Tutte le chiamate a sistema dipendono dal S.O., p.es., in ambiente + Windows si usa system('date /t') o :r!date /t + +---> Non ricordo il numero esatto di secondi in un giorno, è 84600? + La data di oggi è: + +NOTA: Lo stesso risultato si può ottenere con :pu=system('date') + o, ancora più brevemente, con :r!date + +RIFERIMENTI: Registro espressioni :h quote= + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1.3: I REGISTRI NUMERATI + + + ** Battere yy e dd per vedere l'effetto sui registri ** + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Copiate (yy) la riga stessa e controllate i registri con :reg + + 3. Cancellate la riga che inizia con "0." con "cdd, poi controllate i + registri (Dove vi aspettate sia finita la riga cancellata?) + + 4. Continuate a cancellare ogni riga seguente, controllando ogni volta + con :reg il risultato +NOTA: Dovreste notare che le righe cancellate per prime scendono nella + lista, man mano che vengono aggiunte nuove righe cancellate + 5. Poi incollate (p) i seguenti registri nell'ordine; c, 7, 4, 8, 2.+ + ossia "cp "7p ... + +---> 0. Questo + 9. dondolante + 8. messaggio + 7. è + 6. in + 5. asse + 4. un + 3. guerresco + 2. segreto + 1. tributo + +NOTA: Le cancellazioni di righe intere (dd) sopravvivono nei registri numerati + molto più a lungo delle copie di righe intere (yy), o delle + cancellazioni che implicano movimenti minori + +RIFERIMENTI: Registri numerati :h quote0 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1.4: IL FASCINO DELLE MARCATURE + + + ** Evitare di contare le righe di codice ** + +NOTA: Un problema frequente quando si scrivono programmi è spostare numerose + righe di codice. Il metodo seguente evita di dover calcolare numeri di + riga con operazioni tipo "a147d o :945,1091d a o, ancor peggio, + usando prima i=1091-945 + + 1. Spostate il cursore alla riga qui sotto marcata con ---> + + 2. Andate alla prima riga della funzione e marcatela con ma + +NOTA: La posizione sulla riga NON è importante! + + 3. Spostatevi a fine riga e da qui alla fine del blocco di codice + con $% + + 4. Cancellate il blocco salvandolo nel registro a con "ad'a + +MNEMONICO: nel registro(") di nome (a) mettere la cancellazione (d) dal + cursore fino alla RIGA che contiene il marcatore (') (a) + + 5. Incollare il blocco the le righe BBB e CCC "ap + +NOTA: Provare più volte quest'operazione, per impratichirsi ma$%"ad'a + +---> AAA + function cresciutaTroppoinFretta() { + if ( condizioneVera ) { + faiQualcosa() + } + // La classificazione della nostra funzione è cambiata + // non ha senso mantenerla nella posizione attuale + + // ...immaginate centinaia di righe di codice + + // Ingenuamente si potrebbe andare dall'inizio alla fine + // e annotare da qualche parte il numero di righe + } + BBB + CCC + +NOTA: marcature e registri non hanno niente in comune, quindi il registro + a è completamente indipendente dalla marcatura a. Questo non vale + per i nomi dei registri e quelli delle macro di Vim. + +RIFERIMENTI: Marcature :h marks + Movimenti marcature :h mark-motions (differenza fra ' e `) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lezione 2.1 SOMMARIO + + + 1. Per inserire (copiando, cancellando) testo, e per incollarlo (incolla)) + sono disponibili 26 registri (a-z) + 2. Copiare una parola da una posizione qualsiasi al suo interno: yiw + 3. Cambiare una parola da una posizione qualsiasi al suo interno: ciw + 4. Inserire testo direttamente da registri in modo Insert: (C-r)a + + 5. Inserire il risultato di semplici operazioni aritmetiche in modo + Insert: (C-r)=60*60 + 6. Inserire il risultato di chiamate a sistema in modo Insert: + (C-r)=system('ls -1') + + 7. Controllare contenuto registri con :reg + 8. Vedere dove vanno a finire le cancellazioni di intere righe: dd + nei registri numerati, ossia discendendo dal registro 1 al 9. + Osservare che le righe intere cancellate sono disponibili nei registri + numerati più a lungo di qualsiasi altra modifica + 9. Vedere la destinazione finale delle operazioni di copia nei registri + numerati e controllare quanto si può aspettare che durino + + 10. Inserire marcature in modo Normale m[a-zA-Z0-9] + 11. Spostarsi a una riga marcata con il comando ' + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Qui finisce il capitolo due della guida Vim. Ci sono lavori in corso. + + Questo capitolo è stato scritto da Paul D. Parker + e tradotto da Antonio Colombo +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 1d20ad0bbd37ed58a715fb35609006022cc6ac73 Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Tue, 3 Dec 2024 21:21:09 +0100 Subject: [PATCH 061/244] translation(it): update Italian manpage for vimtutor Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/doc/vimtutor-it.1 | 4 ++-- runtime/doc/vimtutor-it.UTF-8.1 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/doc/vimtutor-it.1 b/runtime/doc/vimtutor-it.1 index 47952c7ecc..fa30677c91 100644 --- a/runtime/doc/vimtutor-it.1 +++ b/runtime/doc/vimtutor-it.1 @@ -18,8 +18,8 @@ Il comando .B Vimtutor è utile a chi voglia imparare i primi comandi di .B Vim. -L'argomento opzionale [language] specifica l'abbreviazione di due lettere del nome -di una lingua, per esempio "it" oppure "es". +L'argomento opzionale [ISO639] specifica l'abbreviazione di due o tre lettere +del nome di una lingua, per esempio "it" oppure "es". .PP .B Vimtutor utilizza delle copie dei file originali, non c'è pericolo di danneggiare diff --git a/runtime/doc/vimtutor-it.UTF-8.1 b/runtime/doc/vimtutor-it.UTF-8.1 index 3eccff7e32..0b15a2cd8d 100644 --- a/runtime/doc/vimtutor-it.UTF-8.1 +++ b/runtime/doc/vimtutor-it.UTF-8.1 @@ -18,8 +18,8 @@ Il comando .B Vimtutor è utile a chi voglia imparare i primi comandi di .B Vim. -L'argomento opzionale [language] specifica l'abbreviazione di due lettere del nome -di una lingua, per esempio "it" oppure "es". +L'argomento opzionale [ISO639] specifica l'abbreviazione di due o tre lettere +del nome di una lingua, per esempio "it" oppure "es". .PP .B Vimtutor utilizza delle copie dei file originali, non c'è pericolo di danneggiare From 23eea9b98490d27065d4158741bbad5c0fcd0555 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 3 Dec 2024 21:23:43 +0100 Subject: [PATCH 062/244] runtime(doc): fix typo in vimtutor manpage Signed-off-by: Christian Brabandt --- runtime/doc/vimtutor.1 | 6 +++--- runtime/doc/vimtutor.man | 14 +++++--------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/runtime/doc/vimtutor.1 b/runtime/doc/vimtutor.1 index 7f3200454f..0320b24537 100644 --- a/runtime/doc/vimtutor.1 +++ b/runtime/doc/vimtutor.1 @@ -1,4 +1,4 @@ -.TH VIMTUTOR 1 "2024 November 04" +.TH VIMTUTOR 1 "2024 December 03" .SH NAME vimtutor \- the Vim tutor .SH SYNOPSIS @@ -32,11 +32,11 @@ is always started in compatible mode. .SH OPTIONS .TP -.BR \-l ", " \-\-language =\fIISO639\fR +.BR \-l ", " \-\-language\ \fIISO639\fR Set the two or three letter language code. E.g. 'it', 'es', 'bar'. Defaults to language of locale if available, else to English. .TP -.BR \-c ", " \-\-chapter =\fINUMBER\fR +.BR \-c ", " \-\-chapter\ \fINUMBER\fR Set the chapter number. Defaults to chapter one. .TP .BR \-g ", " \-\-gui diff --git a/runtime/doc/vimtutor.man b/runtime/doc/vimtutor.man index 44cb9daccf..c4cbeaa885 100644 --- a/runtime/doc/vimtutor.man +++ b/runtime/doc/vimtutor.man @@ -1,7 +1,5 @@ VIMTUTOR(1) General Commands Manual VIMTUTOR(1) - - NAME vimtutor - the Vim tutor @@ -24,12 +22,12 @@ DESCRIPTION Vim is always started in Vi compatible mode. OPTIONS - -l, --language=ISO639 - Set the two or three letter language code. E.g. 'it', 'es', - 'bar'. Defaults to language of locale if available, else to + -l, --language ISO639 + Set the two or three letter language code. E.g. 'it', 'es', + 'bar'. Defaults to language of locale if available, else to English. - -c, --chapter=NUMBER + -c, --chapter NUMBER Set the chapter number. Defaults to chapter one. -g, --gui @@ -77,6 +75,4 @@ AUTHOR SEE ALSO vim(1) - - - 2024 November 04 VIMTUTOR(1) + 2024 December 03 VIMTUTOR(1) From cdbbdb9eced3792278803b60a2528f366dc647c4 Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Tue, 3 Dec 2024 21:27:30 +0100 Subject: [PATCH 063/244] runtime(tutor): fix another typo in tutor2 Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/tutor/tutor2 | 2 +- runtime/tutor/tutor2.utf-8 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/tutor/tutor2 b/runtime/tutor/tutor2 index a3a499eb6d..f41b7018cd 100644 --- a/runtime/tutor/tutor2 +++ b/runtime/tutor/tutor2 @@ -144,7 +144,7 @@ NOTE: practice this operation multiple times to become fluent ma$%"ad'a doIt() } // the taxonomy of our function has changed and it - // no longer makes alphabetical sense in it's current position + // no longer makes alphabetical sense in its current position // imagine hundreds of lines of code diff --git a/runtime/tutor/tutor2.utf-8 b/runtime/tutor/tutor2.utf-8 index a3a499eb6d..f41b7018cd 100644 --- a/runtime/tutor/tutor2.utf-8 +++ b/runtime/tutor/tutor2.utf-8 @@ -144,7 +144,7 @@ NOTE: practice this operation multiple times to become fluent ma$%"ad'a doIt() } // the taxonomy of our function has changed and it - // no longer makes alphabetical sense in it's current position + // no longer makes alphabetical sense in its current position // imagine hundreds of lines of code From 189e24bb1441abe87387a4e21c4387bbf2eac718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=E1=BA=A1m=20B=C3=ACnh=20An?= <111893501+brianhuster@users.noreply.github.com> Date: Tue, 3 Dec 2024 21:59:52 +0100 Subject: [PATCH 064/244] runtime(doc): include vietnamese.txt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since Vietnamese keymaps in Vim is quite differences from the corresponding input methods, let's document the Vietnamese specifics in vietnames.txt related: #16144 Signed-off-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com> Signed-off-by: Christian Brabandt --- runtime/doc/Make_all.mak | 2 + runtime/doc/Makefile | 3 ++ runtime/doc/tags | 10 +++++ runtime/doc/vietnamese.txt | 86 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 runtime/doc/vietnamese.txt diff --git a/runtime/doc/Make_all.mak b/runtime/doc/Make_all.mak index ccc429b0c7..1715382b38 100644 --- a/runtime/doc/Make_all.mak +++ b/runtime/doc/Make_all.mak @@ -152,6 +152,7 @@ DOCS = \ vim9.txt \ vim9class.txt \ visual.txt \ + vietnamese.txt \ windows.txt \ workshop.txt @@ -303,6 +304,7 @@ HTMLS = \ version8.html \ version9.html \ vi_diff.html \ + vietnamese.html \ vimindex.html \ vim9.html \ vim9class.html \ diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile index 707b24b48f..00ea5411d9 100644 --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -151,6 +151,9 @@ os_risc.txt: os_win32.txt: touch $@ +vietnamese.txt: + touch $@ + # In *BSD, the variable '$<' is used in suffix-transformation rules (in GNU this # is called "implicit rules", and in MS Windows it is called "inference rules"). # For code portability, it is better to use the '$?' variable for explicit rules. diff --git a/runtime/doc/tags b/runtime/doc/tags index d44dd81a84..5e57f25395 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -5786,6 +5786,7 @@ V visual.txt /*V* VIMINIT starting.txt /*VIMINIT* VMS os_vms.txt /*VMS* Vi intro.txt /*Vi* +Vietnamese vietnamese.txt /*Vietnamese* View starting.txt /*View* Vim9 vim9.txt /*Vim9* Vim9-abstract-class vim9class.txt /*Vim9-abstract-class* @@ -11241,6 +11242,15 @@ vi-features vi_diff.txt /*vi-features* vi: options.txt /*vi:* vi_diff.txt vi_diff.txt /*vi_diff.txt* vib motion.txt /*vib* +vietnamese vietnamese.txt /*vietnamese* +vietnamese-ime_diff vietnamese.txt /*vietnamese-ime_diff* +vietnamese-intro vietnamese.txt /*vietnamese-intro* +vietnamese-keymap vietnamese.txt /*vietnamese-keymap* +vietnamese-l18n vietnamese.txt /*vietnamese-l18n* +vietnamese-telex_utf-8 vietnamese.txt /*vietnamese-telex_utf-8* +vietnamese-viqr_utf-8 vietnamese.txt /*vietnamese-viqr_utf-8* +vietnamese-vni_utf-8 vietnamese.txt /*vietnamese-vni_utf-8* +vietnamese.txt vietnamese.txt /*vietnamese.txt* view starting.txt /*view* view-diffs diff.txt /*view-diffs* view-file starting.txt /*view-file* diff --git a/runtime/doc/vietnamese.txt b/runtime/doc/vietnamese.txt new file mode 100644 index 0000000000..0ed8e2eda6 --- /dev/null +++ b/runtime/doc/vietnamese.txt @@ -0,0 +1,86 @@ +*vietnamese.txt* For Vim version 9.1. Last change: 2024 Dec 02 + + + VIM REFERENCE MANUAL by Phạm Bình An + + +Vietnamese language support in Vim *vietnamese* *Vietnamese* + +1. Introduction |vietnamese-intro| +2. Vietnamese keymaps |vietnamese-keymap| +3. Localization |vietnamese-l18n| + +=============================================================================== +1. Introduction + *vietnamese-intro* + +Vim supports Vietnamese language in the following ways: + +- Built-in |vietnamese-keymap|, which allows you to type Vietnamese characters + in |Insert-mode| and |search-commands| using US keyboard layout. +- Localization in Vietnamese. See |vietnamese-l18n| + +=============================================================================== +2. Vietnamese keymaps + *vietnamese-keymap* + +To switch between languages you can use your system native keyboard switcher, +or use one of the Vietnamese keymaps included in the Vim distribution, like +below > + :set keymap=vietnamese-telex_utf-8 +< +See |'keymap'| for more information. + +In the latter case, you can type Vietnamese even if you do not have a +Vietnamese input method engine (IME) or you want Vim to be independent from a +system-wide keyboard settings (when |'imdisable'| is set). You can also |:map| +a key to switch between keyboards. + +Vim comes with the following Vietnamese keymaps: +- *vietnamese-telex_utf-8* Telex input method, |UTF-8| encoding. +- *vietnamese-viqr_utf-8* VIQR input method, |UTF-8| encoding. +- *vietnamese-vni_utf-8* VNI input method, |UTF-8| encoding. + + *vietnamese-ime_diff* + +Since these keymaps were designed to be minimalistic, they do not support all +features of the corresponding input methods. The differences are described +below: + +- You can only type each character individually, entering the base letter first + and then the diacritics later. For example, to type the word `nến` using + |vietnamese-vni_utf-8|, you must type `ne61n`, not `nen61` or `ne6n1` +- For characters with more than 1 diacritic, you need to type vowel mark before + tone mark. For example, to type `ồ` using |vietnamese-telex_utf-8|, you need + to type `oof`, not `ofo`. +- With |vietnamese-telex_utf-8|, you need to type all uppercase letters to + produce uppercase characters with diacritics. For example, `Ừ` must be typed + as `UWF`. +- With |vietnamese-telex_utf-8|, the escape character `\` from VNI is added, + hence the confusing `ooo` input to type `oo` is removed, which could lead to + ambiguities. For example, to type the word `Äoòng`, you would type + `DDo\ofng`. +- Simple Telex (both v1 and v2), including the `w[]{}` style, is not + supported. +- Removing diacritics using `z` in Telex or `0` in VNI and VIQR is not supported. + +=============================================================================== +3. Localization + *vietnamese-l18n* + +Vim |messages| are also available in Vietnamese. If you wish to see messages in +Vietnamese, you can run the command |:language| with an argument being the name +of the Vietnamese locale. For example, > + :language vi_VN +< or > + :language vi_VN.utf-8 +< +Note that the name of the Vietnamese locale may vary depending on your system. +See |mbyte-first| for details. + +|vimtutor| is also available in Vietnamese. To start Vimtutor in Vietnamese, +run the following command in terminal: >sh + vimtutor vi +< +=============================================================================== +vim:tw=78:ts=8:noet:ft=help:norl: From 336fb22eaef7977741712d0c4735fc6d65428a4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=E1=BA=A1m=20B=C3=ACnh=20An?= <111893501+brianhuster@users.noreply.github.com> Date: Tue, 3 Dec 2024 22:11:43 +0100 Subject: [PATCH 065/244] translation(vi): Update Vietnamese translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes: #16144 Signed-off-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com> Signed-off-by: Christian Brabandt --- src/po/vi.po | 124 +++++---------------------------------------------- 1 file changed, 11 insertions(+), 113 deletions(-) diff --git a/src/po/vi.po b/src/po/vi.po index 4e7c1ecf58..bcc1e0af8e 100644 --- a/src/po/vi.po +++ b/src/po/vi.po @@ -4,11 +4,11 @@ # msgid "" msgstr "" -"Project-Id-Version: Vim 6.3 \n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-25 22:51+0300\n" -"PO-Revision-Date: 2005-02-30 21:37+0400\n" -"Last-Translator: Phan Vinh Thinh \n" +"POT-Creation-Date: 2024-12-03 22:06+0100\n" +"PO-Revision-Date: 2024-12-03 22:07+0100\n" +"Last-Translator: Phạm Bình An <111893501+brianhuster@users.noreply.github.com>\n" "Language-Team: Phan Vinh Thinh \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -53,7 +53,6 @@ msgstr "%d bá»™ đệm được làm sạch" msgid "E84: No modified buffer found" msgstr "E84: Không tìm thấy bá»™ đệm có thay đổi" -#. back where we started, didn't find anything. msgid "E85: There is no listed buffer" msgstr "E85: Không có bá»™ đệm được liệt kê" @@ -128,7 +127,6 @@ msgstr "dòng %ld của %ld --%d%%-- cá»™t " msgid "[No file]" msgstr "[Không có tập tin]" -#. must be a help buffer msgid "help" msgstr "trợ giúp" @@ -195,8 +193,7 @@ msgid "E100: No other buffer in diff mode" msgstr "E100: Không còn bá»™ đệm trong chế Ä‘á»™ khác biệt (diff) nào nữa" msgid "E101: More than two buffers in diff mode, don't know which one to use" -msgstr "" -"E101: Có nhiá»u hÆ¡n hai bá»™ đệm trong chế Ä‘á»™ khác biệt (diff), không biết chá»n" +msgstr "E101: Có nhiá»u hÆ¡n hai bá»™ đệm trong chế Ä‘á»™ khác biệt (diff), không biết nên chá»n cái nào" #, c-format msgid "E102: Can't find buffer \"%s\"" @@ -218,12 +215,9 @@ msgstr "E105: Câu lệnh :loadkeymap được sá»­ dụng ngoài tập tin scri msgid " Keyword completion (^N^P)" msgstr " Tá»± Ä‘á»™ng kết thúc cho từ khóa (^N^P)" -#. ctrl_x_mode == 0, ^P/^N compl. msgid " ^X mode (^E^Y^L^]^F^I^K^D^V^N^P)" msgstr " Chế Ä‘á»™ ^X (^E^Y^L^]^F^I^K^D^V^N^P)" -#. Scroll has its own msgs, in its place there is the msg for local -#. * ctrl_x_mode = 0 (eg continue_status & CONT_LOCAL) -- Acevedo msgid " Keyword Local completion (^N^P)" msgstr " Tá»± Ä‘á»™ng kết thúc ná»™i bá»™ cho từ khóa (^N^P)" @@ -280,10 +274,6 @@ msgstr "Tìm kiếm trong số thẻ đánh dấu." msgid " Adding" msgstr " Thêm" -#. showmode might reset the internal line pointers, so it must -#. * be called before line = ml_get(), or when this address is no -#. * longer needed. -- Acevedo. -#. msgid "-- Searching..." msgstr "-- Tìm kiếm..." @@ -304,8 +294,6 @@ msgstr "TÆ°Æ¡ng ứng %d của %d" msgid "match %d" msgstr "TÆ°Æ¡ng ứng %d" -#. Skip further arguments but do continue to -#. * search for a trailing command. #, c-format msgid "E106: Unknown variable: \"%s\"" msgstr "E106: Biến không biết: \"%s\"" @@ -363,11 +351,6 @@ msgstr "E119: Không đủ tham số cho hàm: %s" msgid "E120: Using not in a script context: %s" msgstr "E120: Sá»­ dụng ngoài script: %s" -#. -#. * Yes this is ugly, I don't particularly like it either. But doing it -#. * this way has the compelling advantage that translations need not to -#. * be touched at all. See below what 'ok' and 'ync' are used for. -#. msgid "&Ok" msgstr "&Ok" @@ -453,7 +436,6 @@ msgstr "E131: Không thể xóa hàm số %s: Hàm Ä‘ang được sá»­ dụng" msgid "E132: Function call depth is higher than 'maxfuncdepth'" msgstr "E132: Äá»™ sâu của lá»i gá»i hàm số lá»›n hÆ¡n giá trị 'maxfuncdepth'" -#. always scroll up, don't overwrite #, c-format msgid "calling %s" msgstr "lá»i gá»i %s" @@ -470,7 +452,6 @@ msgstr "%s trả lại #%ld" msgid "%s returning \"%s\"" msgstr "%s trả lại \"%s\"" -#. always scroll up, don't overwrite #, c-format msgid "continuing in %s" msgstr "tiếp tục trong %s" @@ -539,7 +520,6 @@ msgstr "E164: Äây là tập tin đầu tiên" msgid "E165: Cannot go beyond last file" msgstr "E165: Äây là tập tin cuối cùng" -#, c-format # TODO: Capitalise first word of message? msgid "E666: Compiler not supported: %s" msgstr "E666: trình biên dịch không được há»— trợ: %s" @@ -625,12 +605,10 @@ msgstr "E624: Không thể mở tập tin \"%s\"" msgid "E457: Can't read PostScript resource file \"%s\"" msgstr "E457: Không thể Ä‘á»c tập tin tài nguyên PostScript \"%s\"" -#, c-format # TODO: Capitalise first word of message? msgid "E618: File \"%s\" is not a PostScript resource file" msgstr "E618: \"%s\" không phải là tập tin tài nguyên PostScript" -#, c-format # TODO: Capitalise first word of message? msgid "E619: File \"%s\" is not a supported PostScript resource file" msgstr "E619: \"%s\" không phải là tập tin tài nguyên PostScript được há»— trợ" @@ -738,7 +716,6 @@ msgstr "E138: Không thể ghi tập tin viminfo %s!" msgid "Writing viminfo file \"%s\"" msgstr "Ghi tập tin viminfo \"%s\"" -#. Write the info: #, c-format msgid "# This viminfo file was generated by Vim %s.\n" msgstr "# Tập tin viminfo này được tá»± Ä‘á»™ng tạo bởi Vim %s.\n" @@ -756,8 +733,6 @@ msgstr "# Giá trị của tùy chá»n 'encoding' vào thá»i Ä‘iểm ghi tập msgid "Illegal starting char" msgstr "Ký tá»± đầu tiên không cho phép" -#. Overwriting a file that is loaded in another buffer is not a -#. * good idea. msgid "E139: File is loaded in another buffer" msgstr "E139: Tập tin được nạp trong bá»™ đệm khác" @@ -921,7 +896,6 @@ msgid "Entering Ex mode. Type \"visual\" to go to Normal mode." msgstr "" "Chuyển vào chế Ä‘á»™ Ex. Äể chuyển vá» chế Ä‘á»™ Thông thÆ°á»ng hãy gõ \"visual\"" -#. must be at EOF msgid "E501: At end-of-file" msgstr "E501: Ở cuối tập tin" @@ -1082,7 +1056,6 @@ msgstr "E189: \"%s\" đã có (thêm !, để ghi đè)" msgid "E190: Cannot open \"%s\" for writing" msgstr "E190: Không mở được \"%s\" để ghi nhá»›" -#. set mark msgid "E191: Argument must be a letter or forward/backward quote" msgstr "E191: Tham số phải là má»™t chữ cái hoặc dấu ngoặc thẳng/ngược" @@ -1126,7 +1099,6 @@ msgid "E608: Cannot :throw exceptions with 'Vim' prefix" msgstr "" "E608: Không thể thá»±c hiện lệnh :throw cho những ngoại lệ vá»›i tiá»n tố 'Vim'" -#. always scroll up, don't overwrite #, c-format msgid "Exception thrown: %s" msgstr "TrÆ°á»ng hợp ngoại lệ: %s" @@ -1143,7 +1115,6 @@ msgstr "TrÆ°á»ng hợp ngoại lệ bị bá» qua: %s" msgid "%s, line %ld" msgstr "%s, dòng %ld" -#. always scroll up, don't overwrite #, c-format msgid "Exception caught: %s" msgstr "Xá»­ lý trÆ°á»ng hợp ngoại lệ: %s" @@ -1169,7 +1140,6 @@ msgstr "Lá»—i và sá»± gián Ä‘oạn" msgid "Error" msgstr "Lá»—i" -#. if (pending & CSTP_INTERRUPT) msgid "Interrupt" msgstr "Sá»± gián Ä‘oạn" @@ -1208,15 +1178,12 @@ msgstr "E601: :try xếp lồng vào nhau quá sâu" msgid "E603: :catch without :try" msgstr "E603: :catch không có :try" -#. Give up for a ":catch" after ":finally" and ignore it. -#. * Just parse. msgid "E604: :catch after :finally" msgstr "E604: :catch đứng sau :finally" msgid "E606: :finally without :try" msgstr "E606: :finally không có :try" -#. Give up for a multiple ":finally" and ignore it. # TODO: Capitalise first word of message? msgid "E607: Multiple :finally" msgstr "E607: phát hiện vài :finally" @@ -1290,7 +1257,6 @@ msgstr "Vim: Äá»c từ đầu vào tiêu chuẩn stdin...\n" msgid "Reading from stdin..." msgstr "Äá»c từ đầu vào tiêu chuẩn stdin..." -#. Re-opening the original file failed! msgid "E202: Conversion made file unreadable!" msgstr "E202: Sá»± biến đổi làm cho tập tin trở thành không thể Ä‘á»c!" @@ -1489,9 +1455,6 @@ msgstr "[noeol]" msgid "[Incomplete last line]" msgstr "[Dòng cuối cùng không đầy đủ]" -#. don't overwrite messages here -#. must give this prompt -#. don't use emsg() here, don't want to flush the buffers msgid "WARNING: The file has been changed since reading it!!!" msgstr "CẢNH BÃO: Tập tin đã thay đổi so vá»›i thá»i Ä‘iểm Ä‘á»c!!!" @@ -1565,7 +1528,6 @@ msgstr "E321: Không thể nạp lại \"%s\"" msgid "--Deleted--" msgstr "--Bị xóa--" -#. the group doesn't exist #, c-format msgid "E367: No such group: \"%s\"" msgstr "E367: Nhóm \"%s\" không tồn tại" @@ -1582,7 +1544,6 @@ msgstr "E216: Sá»± kiện không có thật: %s" msgid "E216: No such group or event: %s" msgstr "E216: Nhóm hoặc sá»± kiện không có thật: %s" -#. Highlight title msgid "" "\n" "--- Autocommands ---" @@ -1608,7 +1569,6 @@ msgstr "%s câu lệnh tá»± Ä‘á»™ng cho \"%s\"" msgid "Executing %s" msgstr "Thá»±c hiện %s" -#. always scroll up, don't overwrite #, c-format msgid "autocommand %s" msgstr "câu lệnh tá»± Ä‘á»™ng %s" @@ -1637,22 +1597,18 @@ msgstr "E222: Thêm vào bá»™ đệm Ä‘ang Ä‘á»c" msgid "E223: Recursive mapping" msgstr "E223: ánh xạ đệ quy" -#, c-format # TODO: Capitalise first word of message? msgid "E224: Global abbreviation already exists for %s" msgstr "E224: đã có sá»± viết tắt toàn cầu cho %s" -#, c-format # TODO: Capitalise first word of message? msgid "E225: Global mapping already exists for %s" msgstr "E225: đã có ánh xạ toàn cầu cho %s" -#, c-format # TODO: Capitalise first word of message? msgid "E226: Abbreviation already exists for %s" msgstr "E226: đã có sá»± viết tắt cho %s" -#, c-format # TODO: Capitalise first word of message? msgid "E227: Mapping already exists for %s" msgstr "E227: đã có ánh xạ cho %s" @@ -1745,18 +1701,15 @@ msgstr "Tìm kiếm gì:" msgid "Replace with:" msgstr "Thay thế bởi:" -#. whole word only button msgid "Match whole word only" msgstr "Chỉ tìm tÆ°Æ¡ng ứng hoàn toàn vá»›i từ" -#. match case button msgid "Match case" msgstr "Có tính kiểu chữ" msgid "Direction" msgstr "HÆ°á»›ng" -#. 'Up' and 'Down' buttons msgid "Up" msgstr "Lên" @@ -1916,7 +1869,6 @@ msgstr "" msgid "Added cscope database %s" msgstr "Äã thêm cÆ¡ sở dữ liệu cscope %s" -#, c-format # TODO: Capitalise first word of message? msgid "E262: Error reading cscope connection %ld" msgstr "E262: lá»—i lấy thông tin từ kết nối cscope %ld" @@ -1947,12 +1899,10 @@ msgstr "cs_create_connection: thá»±c hiện fdopen cho fr_fp không thành công msgid "E567: No cscope connections" msgstr "E567: không có kết nối vá»›i cscope" -#, c-format # TODO: Capitalise first word of message? msgid "E259: No matches found for cscope query %s of %s" msgstr "E259: không tìm thấy tÆ°Æ¡ng ứng vá»›i yêu cầu cscope %s cho %s" -#, c-format # TODO: Capitalise first word of message? msgid "E469: Invalid cscopequickfix flag %c for %c" msgstr "E469: cá» cscopequickfix %c cho %c không chính xác" @@ -1964,7 +1914,6 @@ msgstr "các lệnh cscope:\n" msgid "%-5s: %-30s (Usage: %s)" msgstr "%-5s: %-30s (Sá»­ dụng: %s)" -#, c-format # TODO: Capitalise first word of message? msgid "E625: Cannot open cscope database: %s" msgstr "E625: không mở được cÆ¡ sở dữ liệu cscope: %s" @@ -1980,7 +1929,6 @@ msgstr "E568: cÆ¡ sở dữ liệu này của cscope đã được gắn vào t msgid "E569: maximum number of cscope connections reached" msgstr "E569: đã đạt tá»›i số kết nối lá»›n nhất cho phép vá»›i cscope" -#, c-format # TODO: Capitalise first word of message? msgid "E261: Cscope connection %s not found" msgstr "E261: kết nối vá»›i cscope %s không được tìm thấy" @@ -1989,7 +1937,6 @@ msgstr "E261: kết nối vá»›i cscope %s không được tìm thấy" msgid "cscope connection %s closed" msgstr "kết nối %s vá»›i cscope đã bị đóng" -#. should not reach here # TODO: Capitalise first word of message? msgid "E570: Fatal error in cs_manage_matches" msgstr "E570: lá»—i nặng trong cs_manage_matches" @@ -2111,7 +2058,6 @@ msgid "" msgstr "" "E266: Rất tiếc câu lệnh này không làm việc, vì thÆ° viện Ruby chÆ°a đượcnạp." -#, c-format # TODO: Capitalise first word of message? msgid "E273: Unknown longjmp status %d" msgstr "E273: không rõ trạng thái của longjmp %d" @@ -2186,7 +2132,6 @@ msgstr "tạm thá»i chÆ°a được thá»±c thi" msgid "unknown option" msgstr "tùy chá»n không rõ" -#. ??? msgid "cannot set line(s)" msgstr "không thể đặt (các) dòng" @@ -2219,7 +2164,6 @@ msgid "" "cannot register callback command: buffer/window is already being deleted" msgstr "không đăng ký được câu lệnh gá»i ngược: bá»™ đệm hoặc cá»­a sổ Ä‘ang bị xóa" -#. This should never happen. Famous last word? msgid "" "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim." "org" @@ -2300,7 +2244,6 @@ msgstr "Vim: Cảnh báo: Äầu ra không hÆ°á»›ng tá»›i má»™t terminal\n" msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: Cảnh báo: Äầu vào không phải đến từ má»™t terminal\n" -#. just in case.. msgid "pre-vimrc command line" msgstr "dòng lệnh chạy trÆ°á»›c khi thá»±c hiện vimrc" @@ -2648,11 +2591,9 @@ msgstr "-P \tMở Vim bên trong ứng dụng mẹ" msgid "No display" msgstr "Không có màn hình" -#. Failed to send, abort. msgid ": Send failed.\n" msgstr ": Gá»­i không thành công.\n" -#. Let vim start normally. msgid ": Send failed. Trying to execute locally\n" msgstr ": Gá»­i không thành công. Thá»­ thá»±c hiện ná»™i bá»™\n" @@ -2673,7 +2614,6 @@ msgstr "Không có dấu hiệu nào được đặt." msgid "E283: No marks matching \"%s\"" msgstr "E283: Không có dấu hiệu tÆ°Æ¡ng ứng vá»›i \"%s\"" -#. Highlight title msgid "" "\n" "mark line col file/text" @@ -2681,7 +2621,6 @@ msgstr "" "\n" "nhãn dòng cá»™t tập tin/văn bản" -#. Highlight title msgid "" "\n" " jump line col file/text" @@ -2689,7 +2628,6 @@ msgstr "" "\n" " bÆ°á»›c_nhảy dòng cá»™t tập tin/văn bản" -#. Highlight title msgid "" "\n" "change line col text" @@ -2704,7 +2642,6 @@ msgstr "" "\n" "# Nhãn của tập tin:\n" -#. Write the jumplist with -' msgid "" "\n" "# Jumplist (newest first):\n" @@ -2778,7 +2715,6 @@ msgstr "E298: ChÆ°a lấy khối số 12?" msgid "E298: Didn't get block nr 2?" msgstr "E298: ChÆ°a lấy khối số 2?" -#. could not (re)open the swap file, what can we do???? msgid "E301: Oops, lost the swap file!!!" msgstr "E301: á»i, mất tập tin trao đổi (swap)!!!" @@ -2912,7 +2848,6 @@ msgstr "" "Sau đó hãy xóa tập tin .swp.\n" "\n" -#. use msg() to start the scrolling properly msgid "Swap files found:" msgstr "Tìm thấy tập tin trao đổi (swap):" @@ -3015,12 +2950,10 @@ msgstr "Äã cập nhật tập tin trao đổi (swap)" msgid "E314: Preserve failed" msgstr "E314: Cập nhật không thành công" -#, c-format # TODO: Capitalise first word of message? msgid "E315: ml_get: Invalid lnum: %ld" msgstr "E315: ml_get: giá trị lnum không đúng: %ld" -#, c-format # TODO: Capitalise first word of message? msgid "E316: ml_get: Cannot find line %ld" msgstr "E316: ml_get: không tìm được dòng %ld" @@ -3053,12 +2986,10 @@ msgstr "E317: giá trị của pointer khối không đúng" msgid "pe_line_count is zero" msgstr "giá trị pe_line_count bằng không" -#, c-format # TODO: Capitalise first word of message? msgid "E322: Line number out of range: %ld past the end" msgstr "E322: số thứ tá»± dòng vượt quá giá»›i hạn : %ld" -#, c-format # TODO: Capitalise first word of message? msgid "E323: Line count wrong in block %ld" msgstr "E323: giá trị đếm dòng không đúng trong khối %ld" @@ -3086,8 +3017,6 @@ msgstr "Khi mở tập tin: \"" msgid " NEWER than swap file!\n" msgstr " MỚI hÆ¡n so vá»›i tập tin trao đổi (swap)\n" -#. Some of these messages are long to allow translation to -#. * other languages. msgid "" "\n" "(1) Another program may be editing the same file.\n" @@ -3194,8 +3123,6 @@ msgstr "" msgid "E332: Separator cannot be part of a menu path" msgstr "E332: Cái phân chia không thể là má»™t phần của Ä‘Æ°á»ng dẫn tá»›i trình Ä‘Æ¡n" -#. Now we have found the matching menu, and we list the mappings -#. Highlight title msgid "" "\n" "--- Menus ---" @@ -3284,7 +3211,6 @@ msgstr "Ghi nhá»› tập tin" msgid "Open File dialog" msgstr "Mở tập tin" -#. TODO: non-GUI file selector here msgid "E338: Sorry, no file browser in console mode" msgstr "" "E338: Xin lá»—i nhÆ°ng không có trình duyệt tập tin trong chế Ä‘á»™ kênh giao tác " @@ -3313,7 +3239,6 @@ msgstr " (Bị gián Ä‘oạn)" msgid "Vim: preserving files...\n" msgstr "Vim: ghi nhá»› các tập tin...\n" -#. close all memfiles, without deleting msgid "Vim: Finished.\n" msgstr "Vim: Äã xong.\n" @@ -3410,7 +3335,6 @@ msgstr "E551: Thành phần không cho phép" msgid "E552: Digit expected" msgstr "E552: Cần chỉ ra má»™t số" -#. Get here when the server can't be found. msgid "Cannot connect to Netbeans #2" msgstr "Không kết nối được vá»›i Netbeans #2" @@ -3483,7 +3407,6 @@ msgstr "Äã thụt đầu 1 dòng" msgid "%ld lines indented " msgstr "%ld dòng đã thụt đầu" -#. must display the prompt msgid "cannot yank; delete anyway" msgstr "sao chép không thành công; đã xóa" @@ -3509,7 +3432,6 @@ msgstr "đã sao chép %ld dòng" msgid "E353: Nothing in register %s" msgstr "E353: Trong sổ đăng ký %s không có gì hết" -#. Highlight title msgid "" "\n" "--- Registers ---" @@ -3743,7 +3665,6 @@ msgstr "không thay đổi được chế Ä‘á»™ kênh giao tác (console)?!\n" msgid "mch_get_shellsize: not a console??\n" msgstr "mch_get_shellsize: không phải là kênh giao tác (console)??\n" -#. if Vim opened a window: Executing a shell may cause crashes msgid "E360: Cannot execute shell with -f option" msgstr "E360: Không chạy được shell vá»›i tùy chá»n -f" @@ -3985,7 +3906,6 @@ msgstr "danh sách lá»—i %d của %d; %d lá»—i" msgid "E382: Cannot write, 'buftype' option is set" msgstr "E382: Không ghi nhá»› được, giá trị 'buftype' không phải là chuá»—i rá»—ng" -#, c-format # TODO: Capitalise first word of message? msgid "E369: Invalid item in %s%%[]" msgstr "E369: phần tá»­ không cho phép trong %s%%[]" @@ -4023,7 +3943,6 @@ msgstr "E56: operand %s* không thể rá»—ng" msgid "E57: %s+ operand could be empty" msgstr "E57: operand %s+ không thể rá»—ng" -#, c-format # TODO: Capitalise first word of message? msgid "E59: Invalid character after %s@" msgstr "E59: ký tá»± không cho phép sau %s@" @@ -4158,12 +4077,10 @@ msgstr "tìm kiếm sẽ được tiếp tục từ ÄẦU tài liệu" msgid "E383: Invalid search string: %s" msgstr "E383: Chuá»—i tìm kiếm không đúng: %s" -#, c-format # TODO: Capitalise first word of message? msgid "E384: Search hit TOP without match for: %s" msgstr "E384: tìm kiếm kết thúc ở ÄẦU tập tin; không tìm thấy %s" -#, c-format # TODO: Capitalise first word of message? msgid "E385: Search hit BOTTOM without match for: %s" msgstr "E385: tìm kiếm kết thúc ở CUá»I tập tin; không tìm thấy %s" @@ -4174,7 +4091,6 @@ msgstr "E386: Mong đợi nhập '?' hoặc '/' sau ';'" msgid " (includes previously listed match)" msgstr " (gồm cả những tÆ°Æ¡ng ứng đã liệt kê trÆ°á»›c đây)" -#. cursor at status line msgid "--- Included files " msgstr "--- Tập tin tính đến " @@ -4337,7 +4253,6 @@ msgstr "E409: Tên nhóm không biết: %s" msgid "E410: Invalid :syntax subcommand: %s" msgstr "E410: Câu lệnh con :syntax không đúng: %s" -#, c-format # TODO: Capitalise first word of message? msgid "E411: Highlight group not found: %s" msgstr "E411: không tìm thấy nhóm chiếu sáng cú pháp: %s" @@ -4354,17 +4269,14 @@ msgstr "E413: Quá nhiá»u tham số: \":highlight link %s\"" msgid "E414: Group has settings, highlight link ignored" msgstr "E414: nhóm có thiết lập riêng, chiếu sáng liên kết bị bá» qua" -#, c-format # TODO: Capitalise first word of message? msgid "E415: Unexpected equal sign: %s" msgstr "E415: dấu bằng không được mong đợi: %s" -#, c-format # TODO: Capitalise first word of message? msgid "E416: Missing equal sign: %s" msgstr "E416: thiếu dấu bằng: %s" -#, c-format # TODO: Capitalise first word of message? msgid "E417: Missing argument: %s" msgstr "E417: thiếu tham số: %s" @@ -4383,7 +4295,6 @@ msgstr "E420: Không rõ màu ná»n sau (BG)" msgid "E421: Color name or number not recognized: %s" msgstr "E421: Tên hoặc số của màu không được nhận ra: %s" -#, c-format # TODO: Capitalise first word of message? msgid "E422: Terminal code too long: %s" msgstr "E422: mã terminal quá dài: %s" @@ -4398,8 +4309,6 @@ msgstr "E424: Sá»­ dụng quá nhiá»u thuá»™c tính chiếu sáng cú pháp" msgid "E669: Unprintable character in group name" msgstr "E669: Ký tá»± không thể tin ra trong tên nhóm" -#. This is an error, but since there previously was no check only -#. * give a warning. msgid "W18: Invalid character in group name" msgstr "W18: Ký tá»± không cho phép trong tên nhóm" @@ -4414,7 +4323,6 @@ msgstr "E556: ở đầu đống thẻ ghi" msgid "E425: Cannot go before first matching tag" msgstr "E425: Không chuyển được tá»›i vị trí ở trÆ°á»›c thẻ ghi tÆ°Æ¡ng ứng đầu tiên" -#, c-format # TODO: Capitalise first word of message? msgid "E426: Tag not found: %s" msgstr "E426: không tìm thấy thẻ ghi: %s" @@ -4425,10 +4333,6 @@ msgstr " # pri loại thẻ ghi" msgid "file\n" msgstr "tập tin\n" -#. -#. * Ask to select a tag from the list. -#. * When using ":silent" assume that was entered. -#. msgid "Enter nr of choice ( to abort): " msgstr "Hãy chá»n số cần thiết ( để dừng):" @@ -4442,7 +4346,6 @@ msgstr "E428: Không chuyển được tá»›i vị trí ở sau thẻ ghi tÆ°Æ¡ng msgid "File \"%s\" does not exist" msgstr "Tập tin \"%s\" không tồn tại" -#. Give an indication of the number of matching tags #, c-format msgid "tag %d of %d%s" msgstr "thẻ ghi %d của %d%s" @@ -4457,7 +4360,6 @@ msgstr " Äang sá»­ dụng thẻ ghi vá»›i kiểu chữ khác!" msgid "E429: File \"%s\" does not exist" msgstr "E429: Tập tin \"%s\" không tồn tại" -#. Highlight title msgid "" "\n" " # TO tag FROM line in file/text" @@ -4485,7 +4387,6 @@ msgstr "TrÆ°á»›c byte %ld" msgid "E432: Tags file not sorted: %s" msgstr "E432: Tập tin thẻ ghi chÆ°a được sắp xếp: %s" -#. never opened any tags file msgid "E433: No tags file" msgstr "E433: Không có tập tin thẻ ghi" @@ -4518,7 +4419,6 @@ msgstr "E436: Trong termcap không có bản ghi \"%s\"" msgid "E437: Terminal capability \"cm\" required" msgstr "E437: cần khả năng của terminal \"cm\"" -#. Highlight title msgid "" "\n" "--- Terminal keys ---" @@ -4532,7 +4432,6 @@ msgstr "đã chạy shell má»›i\n" msgid "Vim: Error reading input, exiting...\n" msgstr "Vim: Lá»—i Ä‘á»c dữ liệu nhập, thoát...\n" -#. must display the prompt msgid "No undo possible; continue anyway" msgstr "Không thể hủy thao tác; tiếp tục thá»±c hiện" @@ -4555,7 +4454,6 @@ msgstr "E439: danh sách hủy thao tác (undo) bị há»ng" msgid "E440: Undo line missing" msgstr "E440: bị mất dòng hủy thao tác" -#. Only MS VC 4.1 and earlier can do Win32s msgid "" "\n" "MS-Windows 16/32-bit GUI version" @@ -4910,7 +4808,6 @@ msgstr "&So sánh (diff) qua Vim" msgid "Edit with &Vim" msgstr "Soạn thảo trong &Vim" -#. Now concatenate msgid "Edit with existing Vim - &" msgstr "Soạn thảo trong Vim đã chạy - &" @@ -4929,10 +4826,6 @@ msgstr "ÄÆ°á»ng dẫn quá dài!" msgid "--No lines in buffer--" msgstr "-- Không có dòng nào trong bá»™ đệm --" -#. -#. * The error messages that can be shared are included here. -#. * Excluded are errors that are only used once and debugging messages. -#. msgid "E470: Command aborted" msgstr "E470: Câu lệnh bị dừng" @@ -5092,7 +4985,6 @@ msgstr "E481: Không cho phép sá»­ dụng phạm vi" msgid "E36: Not enough room" msgstr "E36: Không đủ chá»— trống" -#, c-format # TODO: Capitalise first word of message? msgid "E247: No registered server named \"%s\"" msgstr "E247: máy chủ \"%s\" chÆ°a đăng ký" @@ -5230,3 +5122,9 @@ msgstr "E449: Nhận được má»™t biểu thức không cho phép" msgid "E463: Region is guarded, cannot modify" msgstr "E463: Không thể thay đổi vùng đã được bảo vệ" + +msgid "No tutorial with that name found" +msgstr "Không tìm thấy hÆ°á»›ng dẫn (tutorial) có tên đó" + +msgid "Only one argument accepted (check spaces)" +msgstr "Chỉ chấp nhận má»™t tham số (vui lòng kiểm tra dấu cách)" From c6db53ce5fc509c6d1f8142d2dc8d40bbe0420e3 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 3 Dec 2024 22:16:41 +0100 Subject: [PATCH 066/244] Filelist: include translations for Chapter 2 tutor Signed-off-by: Christian Brabandt --- Filelist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Filelist b/Filelist index 4e02b22809..221ad79f44 100644 --- a/Filelist +++ b/Filelist @@ -1071,6 +1071,8 @@ LANG_GEN = \ runtime/tutor/tutor1.bar \ runtime/tutor/tutor1.bar.utf-8 \ runtime/tutor/tutor2.utf-8 \ + runtime/tutor/tutor2.?? \ + runtime/tutor/tutor2.??.utf-8 \ runtime/spell/README.txt \ runtime/spell/??/*.diff \ runtime/spell/??/main.aap \ From fdfcce56a6b8fe64ae155c822e3b920db97cde0d Mon Sep 17 00:00:00 2001 From: Enno Date: Tue, 3 Dec 2024 22:23:48 +0100 Subject: [PATCH 067/244] runtime(lua): add optional lua function folding closes: #16151 Signed-off-by: Konfekt Signed-off-by: Christian Brabandt --- runtime/doc/filetype.txt | 8 ++++-- runtime/doc/tags | 1 + runtime/ftplugin/lua.vim | 60 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 66 insertions(+), 3 deletions(-) diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 06fc829235..8d8502a73d 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 9.1. Last change: 2024 Nov 14 +*filetype.txt* For Vim version 9.1. Last change: 2024 Dec 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -733,7 +733,6 @@ To enable the recognition of Markdown comments each time after removing re-source "javaformat.vim" for Vim versions greater than `8.2.1397`: > runtime autoload/javaformat.vim < - JSON-FORMAT *ft-json-plugin* JSON filetype can be extended to use 'formatexpr' and "json.FormatExpr()" @@ -745,6 +744,11 @@ Add following lines to $HOME/.vim/ftplugin/json.vim: > import autoload 'dist/json.vim' setl formatexpr=json.FormatExpr() +LUA *ft-lua-plugin* + +You can enable folding of lua functions using |fold-expr| by: > + + let g:lua_folding = 1 MAIL *ft-mail-plugin* diff --git a/runtime/doc/tags b/runtime/doc/tags index 5e57f25395..ad870060df 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -7358,6 +7358,7 @@ ft-lifelines-syntax syntax.txt /*ft-lifelines-syntax* ft-lisp-syntax syntax.txt /*ft-lisp-syntax* ft-lite-syntax syntax.txt /*ft-lite-syntax* ft-lpc-syntax syntax.txt /*ft-lpc-syntax* +ft-lua-plugin filetype.txt /*ft-lua-plugin* ft-lua-syntax syntax.txt /*ft-lua-syntax* ft-mail-plugin filetype.txt /*ft-mail-plugin* ft-mail.vim syntax.txt /*ft-mail.vim* diff --git a/runtime/ftplugin/lua.vim b/runtime/ftplugin/lua.vim index 80cbba78a2..22b9986274 100644 --- a/runtime/ftplugin/lua.vim +++ b/runtime/ftplugin/lua.vim @@ -5,7 +5,7 @@ " Contributor: Dorai Sitaram " C.D. MacEachern " Tyler Miller -" Last Change: 2024 Jan 14 +" Last Change: 2024 Dec 03 if exists("b:did_ftplugin") finish @@ -48,6 +48,64 @@ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:undo_ftplugin ..= " | unlet! b:browsefilter" endif +if has("folding") && get(g:, "lua_folding", 0) + setlocal foldmethod=expr + setlocal foldexpr=LuaFold(v:lnum) + let b:lua_lasttick = -1 + let b:undo_ftplugin ..= "|setl foldexpr< foldmethod< | unlet! b:lua_lasttick b:lua_foldlists" +endif + + +" The rest of the file needs to be :sourced only once per Vim session +if exists('s:loaded_lua') || &cp + let &cpo = s:cpo_save + unlet s:cpo_save + finish +endif +let s:loaded_lua = 1 + +let s:patterns = [ + \ ['do', 'end'], + \ ['if\s+.+\s+then', 'end'], + \ ['repeat', 'until\s+.+'], + \ ['for\s+.+\s+do', 'end'], + \ ['while\s+.+\s+do', 'end'], + \ ['function.+', 'end'], + \ ['return\s+function.+', 'end'], + \ ['local\s+function\s+.+', 'end'], + \ ] + +function! LuaFold(lnum) abort + if b:lua_lasttick == b:changedtick + return b:lua_foldlists[a:lnum-1] + endif + let b:lua_lasttick = b:changedtick + + let b:lua_foldlists = [] + let foldlist = [] + let buf = getline(1, '$') + for line in buf + for t in s:patterns + let tagopen = '\v^\s*'..t[0]..'\s*$' + let tagclose = '\v^\s*'..t[1]..'\s*$' + if line =~# tagopen + call add(foldlist, t) + break + elseif line =~# tagclose + if len(foldlist) > 0 && line =~# foldlist[-1][1] + call remove(foldlist, -1) + else + let foldlist = [] + endif + break + endif + endfor + call add(b:lua_foldlists, len(foldlist)) + endfor + + return lua_foldlists[a:lnum-1] +endfunction + let &cpo = s:cpo_save unlet s:cpo_save From 4854647abe4b50e261a4a5a5333d4a2f2b011508 Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Wed, 4 Dec 2024 20:01:01 +0100 Subject: [PATCH 068/244] translation(it): update Italian manpage for vimtutor Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/doc/vimtutor-it.1 | 6 +++--- runtime/doc/vimtutor-it.UTF-8.1 | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/runtime/doc/vimtutor-it.1 b/runtime/doc/vimtutor-it.1 index fa30677c91..1acb7dd12d 100644 --- a/runtime/doc/vimtutor-it.1 +++ b/runtime/doc/vimtutor-it.1 @@ -1,4 +1,4 @@ -.TH VIMTUTOR 1 "04 novembre 2024" +.TH VIMTUTOR 1 "03 dicembre 2024" .SH NOME vimtutor \- Un breve corso introduttivo a Vim .SH SINTASSI @@ -29,13 +29,13 @@ i file stessi. è sempre iniziato in Modo compatibile con Vi. .SH OPZIONI .TP -.BR \-l ", " \-\-language =\fIISO639\fR +.BR \-l ", " \-\-language\ \fIISO639\fR Imposta il codice di due o tre lettere che designa la lingua. P.es., 'it', 'es', 'bar'. Il default è il linguaggio locale, se una traduzione è disponibile, altrimenti viene utilizzato il testo originale in inglese. .TP -.BR \-c ", " \-\-chapter =\fINUMBER\fR +.BR \-c ", " \-\-chapter\ \fINUMERO\fR Imposta il numero del capitolo. Il default è il capitolo uno. .TP .BR \-g ", " \-\-gui diff --git a/runtime/doc/vimtutor-it.UTF-8.1 b/runtime/doc/vimtutor-it.UTF-8.1 index 0b15a2cd8d..4f7e2df667 100644 --- a/runtime/doc/vimtutor-it.UTF-8.1 +++ b/runtime/doc/vimtutor-it.UTF-8.1 @@ -1,4 +1,4 @@ -.TH VIMTUTOR 1 "04 novembre 2024" +.TH VIMTUTOR 1 "03 dicembre 2024" .SH NOME vimtutor \- Un breve corso introduttivo a Vim .SH SINTASSI @@ -29,13 +29,13 @@ i file stessi. è sempre iniziato in Modo compatibile con Vi. .SH OPZIONI .TP -.BR \-l ", " \-\-language =\fIISO639\fR +.BR \-l ", " \-\-language\ \fIISO639\fR Imposta il codice di due o tre lettere che designa la lingua. P.es., 'it', 'es', 'bar'. Il default è il linguaggio locale, se una traduzione è disponibile, altrimenti viene utilizzato il testo originale in inglese. .TP -.BR \-c ", " \-\-chapter =\fINUMBER\fR +.BR \-c ", " \-\-chapter\ \fINUMERO\fR Imposta il numero del capitolo. Il default è il capitolo uno. .TP .BR \-g ", " \-\-gui From 8a52587ee05a360cad4d42322200775fc74a4430 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Wed, 4 Dec 2024 20:06:45 +0100 Subject: [PATCH 069/244] runtime(doc): fix wrong syntax and style of vietnamese.txt Signed-off-by: Christian Brabandt --- runtime/doc/vietnamese.txt | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/runtime/doc/vietnamese.txt b/runtime/doc/vietnamese.txt index 0ed8e2eda6..ef0dce2798 100644 --- a/runtime/doc/vietnamese.txt +++ b/runtime/doc/vietnamese.txt @@ -1,4 +1,4 @@ -*vietnamese.txt* For Vim version 9.1. Last change: 2024 Dec 02 +*vietnamese.txt* For Vim version 9.1. Last change: 2024 Dec 04 VIM REFERENCE MANUAL by Phạm Bình An @@ -13,7 +13,6 @@ Vietnamese language support in Vim *vietnamese* *Vietnamese* =============================================================================== 1. Introduction *vietnamese-intro* - Vim supports Vietnamese language in the following ways: - Built-in |vietnamese-keymap|, which allows you to type Vietnamese characters @@ -23,7 +22,6 @@ Vim supports Vietnamese language in the following ways: =============================================================================== 2. Vietnamese keymaps *vietnamese-keymap* - To switch between languages you can use your system native keyboard switcher, or use one of the Vietnamese keymaps included in the Vim distribution, like below > @@ -42,7 +40,6 @@ Vim comes with the following Vietnamese keymaps: - *vietnamese-vni_utf-8* VNI input method, |UTF-8| encoding. *vietnamese-ime_diff* - Since these keymaps were designed to be minimalistic, they do not support all features of the corresponding input methods. The differences are described below: @@ -67,10 +64,9 @@ below: =============================================================================== 3. Localization *vietnamese-l18n* - -Vim |messages| are also available in Vietnamese. If you wish to see messages in -Vietnamese, you can run the command |:language| with an argument being the name -of the Vietnamese locale. For example, > +Vim |messages| are also available in Vietnamese. If you wish to see messages +in Vietnamese, you can run the command |:language| with an argument being the +name of the Vietnamese locale. For example, > :language vi_VN < or > :language vi_VN.utf-8 @@ -79,7 +75,7 @@ Note that the name of the Vietnamese locale may vary depending on your system. See |mbyte-first| for details. |vimtutor| is also available in Vietnamese. To start Vimtutor in Vietnamese, -run the following command in terminal: >sh +run the following command in terminal: > vimtutor vi < =============================================================================== From ea0e41a1152378358975e5021ea9f5540dabf542 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 4 Dec 2024 20:08:25 +0100 Subject: [PATCH 070/244] runtime(doc): make tag alignment more consistent in filetype.txt closes: #16169 Signed-off-by: Christian Brabandt Signed-off-by: zeertzjq --- runtime/doc/filetype.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 8d8502a73d..cbf038afd3 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 9.1. Last change: 2024 Dec 03 +*filetype.txt* For Vim version 9.1. Last change: 2024 Dec 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -634,7 +634,7 @@ To disable this behavior, set the following variable in your vimrc: > let g:gdscript_recommended_style = 0 -GIT COMMIT *ft-gitcommit-plugin* +GIT COMMIT *ft-gitcommit-plugin* One command, :DiffGitCached, is provided to show a diff of the current commit in the preview window. It is equivalent to calling "git diff --cached" plus @@ -744,9 +744,9 @@ Add following lines to $HOME/.vim/ftplugin/json.vim: > import autoload 'dist/json.vim' setl formatexpr=json.FormatExpr() -LUA *ft-lua-plugin* +LUA *ft-lua-plugin* -You can enable folding of lua functions using |fold-expr| by: > +You can enable folding of Lua functions using |fold-expr| by: > let g:lua_folding = 1 @@ -820,7 +820,7 @@ page in a Vim window: > set keywordprg=:Man -MANPAGER *manpager.vim* +MANPAGER *manpager.vim* The |:Man| command allows you to turn Vim into a manpager (that syntax highlights manpages and follows linked manpages on hitting CTRL-]). @@ -838,7 +838,7 @@ For fish, add to the config file set -x MANPAGER "vim +MANPAGER --not-a-term -" -MARKDOWN *ft-markdown-plugin* +MARKDOWN *ft-markdown-plugin* To enable folding use this: > let g:markdown_folding = 1 @@ -917,7 +917,7 @@ To enable this behavior, set the following variable in your vimrc: > let g:rst_style = 1 -RNOWEB *ft-rnoweb-plugin* +RNOWEB *ft-rnoweb-plugin* The 'formatexpr' option is set dynamically with different values for R code and for LaTeX code. If you prefer that 'formatexpr' is not set, add to your From eda923e9c9e639bc4f02b8b3ead1e7d27981e552 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Wed, 4 Dec 2024 20:12:44 +0100 Subject: [PATCH 071/244] runtime(netrw): do not detach when launching external programs in gvim On Debian 12 when detaching the program wouldn't launch at all closes: #16168 Signed-off-by: Konfekt Signed-off-by: Christian Brabandt --- runtime/autoload/netrw.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index f920c64f8d..9650f6dffb 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -38,6 +38,7 @@ " 2024 Nov 14 by Vim Project: small fixes to netrw#BrowseX (#16056) " 2024 Nov 23 by Vim Project: update decompress defaults (#16104) " 2024 Nov 23 by Vim Project: fix powershell escaping issues (#16094) +" 2024 Dec 04 by Vim Project: do not detach for gvim (#16168) " }}} " Former Maintainer: Charles E Campbell " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim @@ -5045,7 +5046,7 @@ if has('unix') endfun else fun! netrw#Launch(args) - exe ':silent ! nohup' a:args s:redir() '&' | redraw! + exe ':silent ! nohup' a:args s:redir() (has('gui_running') ? '' : '&') | redraw! endfun endif elseif has('win32') From 39a94d20487794aeb722c21e84f8816e217f0cfe Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 4 Dec 2024 20:16:17 +0100 Subject: [PATCH 072/244] patch 9.1.0903: potential overflow in spell_soundfold_wsal() Problem: potential overflow in spell_soundfold_wsal() Solution: Protect wres from buffer overflow, by checking the length (Zdenek Dohnal) Error: OVERRUN (CWE-119): vim91/src/spell.c:3819: cond_const: Checking "reslen < 254" implies that "reslen" is 254 on the false branch. vim91/src/spell.c:3833: incr: Incrementing "reslen". The value of "reslen" is now 255. vim91/src/spell.c:3792: overrun-local: Overrunning array "wres" of 254 4-byte elements at element index 254 (byte offset 1019) using index "reslen - 1" (which evaluates to 254). 3789| { 3790| // rule with '<' is used 3791|-> if (reslen > 0 && ws != NULL && *ws != NUL 3792| && (wres[reslen - 1] == c 3793| || wres[reslen - 1] == *ws)) Error: OVERRUN (CWE-119): vim91/src/spell.c:3819: cond_const: Checking "reslen < 254" implies that "reslen" is 254 on the false branch. vim91/src/spell.c:3833: overrun-local: Overrunning array "wres" of 254 4-byte elements at element index 254 (byte offset 1019) using index "reslen++" (which evaluates to 254). 3831| { 3832| if (c != NUL) 3833|-> wres[reslen++] = c; 3834| mch_memmove(word, word + i + 1, 3835| sizeof(int) * (wordlen - (i + 1) + 1)); related: #16163 Signed-off-by: Zdenek Dohnal Signed-off-by: Christian Brabandt --- src/spell.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/spell.c b/src/spell.c index 5a7720f7f3..2581a5ede9 100644 --- a/src/spell.c +++ b/src/spell.c @@ -3829,7 +3829,7 @@ spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res) c = *ws; if (strstr((char *)s, "^^") != NULL) { - if (c != NUL) + if (c != NUL && reslen < MAXWLEN) wres[reslen++] = c; mch_memmove(word, word + i + 1, sizeof(int) * (wordlen - (i + 1) + 1)); diff --git a/src/version.c b/src/version.c index 5a9f50f6ee..95d4cc1a10 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 903, /**/ 902, /**/ From 215c82d061d750d8a26ef52f529a9e3ca4e0f82a Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 4 Dec 2024 20:19:40 +0100 Subject: [PATCH 073/244] patch 9.1.0904: Vim9: copy-paste error in class_defining_member() Problem: Vim9: copy-paste error in class_defining_member() Solution: use variable type VAR_CLASS instead (Zdenek Dohnal) Found issue by OpenScanHub: Error: COPY_PASTE_ERROR (CWE-398): vim91/src/vim9class.c:3308: original: "VAR_OBJECT" looks like the original copy. vim91/src/vim9class.c:3316: copy_paste_error: "VAR_OBJECT" looks like a copy-paste error. vim91/src/vim9class.c:3316: remediation: Should it say "VAR_CLASS" instead? 3314| { 3315| cl_tmp = super; 3316|-> vartype = VAR_OBJECT; 3317| } 3318| } closes: #16163 Signed-off-by: Zdenek Dohnal Signed-off-by: Christian Brabandt --- src/version.c | 2 ++ src/vim9class.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/version.c b/src/version.c index 95d4cc1a10..42d8e1182b 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 904, /**/ 903, /**/ diff --git a/src/vim9class.c b/src/vim9class.c index d0ddcb8209..e85cf827f3 100644 --- a/src/vim9class.c +++ b/src/vim9class.c @@ -3313,7 +3313,7 @@ class_defining_member(class_T *cl, char_u *name, size_t len, ocmember_T **p_m) if (( m = class_member_lookup(super, name, len, NULL)) != NULL) { cl_tmp = super; - vartype = VAR_OBJECT; + vartype = VAR_CLASS; } } if (cl_tmp == NULL) From 1c5a120a701fcf558617c4e70b5a447778f0e51d Mon Sep 17 00:00:00 2001 From: glepnir Date: Wed, 4 Dec 2024 20:27:34 +0100 Subject: [PATCH 074/244] patch 9.1.0905: Missing information in CompleteDone event Problem: Missing information in CompleteDone event Solution: add complete_word and complete_type to v:event dict (glepnir) closes: #16153 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- runtime/doc/autocmd.txt | 8 ++- runtime/doc/todo.txt | 5 +- src/insexpand.c | 38 +++++++++++++- src/testdir/test_ins_complete.vim | 85 +++++++++++++++++++++++++++++++ src/version.c | 2 + 5 files changed, 131 insertions(+), 7 deletions(-) diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 6ca00a6e1e..8a653f2be7 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 9.1. Last change: 2024 Oct 27 +*autocmd.txt* For Vim version 9.1. Last change: 2024 Dec 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -702,6 +702,12 @@ CompleteDone After Insert mode completion is done. Either The |v:completed_item| variable contains information about the completed item. + Sets these |v:event| keys: + complete_word The word that was + selected, empty if + abandoned complete. + complete_type |complete_info_mode| + *CursorHold* CursorHold When the user doesn't press a key for the time specified with 'updatetime'. Not triggered diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index e73d2f1fe2..b1318cf9e1 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.1. Last change: 2024 Dec 02 +*todo.txt* For Vim version 9.1. Last change: 2024 Dec 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4752,9 +4752,6 @@ Insert mode completion/expansion: - When complete() first argument is before where insert started and 'backspace' is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19) -- The CompleteDone autocommand needs some info passed to it: - - The word that was selected (empty if abandoned complete) - - Type of completion: tag, omnifunc, user func. - When a:base in 'completefunc' starts with a number it's passed as a number, not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a string value. diff --git a/src/insexpand.c b/src/insexpand.c index 75403f1b3b..305511cd8c 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -2296,6 +2296,35 @@ set_ctrl_x_mode(int c) return retval; } +/* + * Trigger CompleteDone event and adds relevant information to v:event + */ + static void +trigger_complete_done_event(int mode UNUSED, char_u *word UNUSED) +{ +#if defined(FEAT_EVAL) + save_v_event_T save_v_event; + dict_T *v_event = get_v_event(&save_v_event); + char_u *mode_str = NULL; + + mode = mode & ~CTRL_X_WANT_IDENT; + if (ctrl_x_mode_names[mode]) + mode_str = (char_u *)ctrl_x_mode_names[mode]; + + (void)dict_add_string(v_event, "complete_word", + word == NULL ? (char_u *)"" : word); + (void)dict_add_string(v_event, "complete_type", + mode_str != NULL ? mode_str : (char_u *)""); + + dict_set_items_ro(v_event); +#endif + ins_apply_autocmds(EVENT_COMPLETEDONE); + +#if defined(FEAT_EVAL) + restore_v_event(v_event, &save_v_event); +#endif +} + /* * Stop insert completion mode */ @@ -2303,6 +2332,7 @@ set_ctrl_x_mode(int c) ins_compl_stop(int c, int prev_mode, int retval) { int want_cindent; + char_u *word = NULL; // Get here when we have finished typing a sequence of ^N and // ^P or other completion characters in CTRL-X mode. Free up @@ -2358,7 +2388,10 @@ ins_compl_stop(int c, int prev_mode, int retval) if ((c == Ctrl_Y || (compl_enter_selects && (c == CAR || c == K_KENTER || c == NL))) && pum_visible()) + { + word = vim_strsave(compl_shown_match->cp_str.string); retval = TRUE; + } // CTRL-E means completion is Ended, go back to the typed text. // but only do this, if the Popup is still visible @@ -2418,7 +2451,8 @@ ins_compl_stop(int c, int prev_mode, int retval) do_c_expr_indent(); // Trigger the CompleteDone event to give scripts a chance to act // upon the end of completion. - ins_apply_autocmds(EVENT_COMPLETEDONE); + trigger_complete_done_event(prev_mode, word); + vim_free(word); return retval; } @@ -2538,7 +2572,7 @@ ins_compl_prep(int c) else if (ctrl_x_mode == CTRL_X_LOCAL_MSG) // Trigger the CompleteDone event to give scripts a chance to act // upon the (possibly failed) completion. - ins_apply_autocmds(EVENT_COMPLETEDONE); + trigger_complete_done_event(ctrl_x_mode, NULL); may_trigger_modechanged(); diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 7829f79fbb..ad2d421676 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -277,6 +277,91 @@ func Test_CompleteDoneNone() au! CompleteDone endfunc +func Test_CompleteDone_vevent_keys() + func OnDone() + let g:complete_word = get(v:event, 'complete_word', v:null) + let g:complete_type = get(v:event, 'complete_type', v:null) + endfunction + + autocmd CompleteDone * :call OnDone() + + func CompleteFunc(findstart, base) + if a:findstart + return col(".") + endif + return [#{word: "foo"}, #{word: "bar"}] + endfunc + set omnifunc=CompleteFunc + set completefunc=CompleteFunc + set completeopt+=menuone + + new + call feedkeys("A\\\", 'tx') + call assert_equal('', g:complete_word) + call assert_equal('omni', g:complete_type) + + call feedkeys("S\\\\", 'tx') + call assert_equal('foo', g:complete_word) + call assert_equal('omni', g:complete_type) + + call feedkeys("S\\\\\0", 'tx') + call assert_equal('bar', g:complete_word) + call assert_equal('omni', g:complete_type) + + call feedkeys("Shello vim visual v\\\", 'tx') + call assert_equal('', g:complete_word) + call assert_equal('keyword', g:complete_type) + + call feedkeys("Shello vim visual v\\\", 'tx') + call assert_equal('vim', g:complete_word) + call assert_equal('keyword', g:complete_type) + + call feedkeys("Shello vim visual v\\\", 'tx') + call assert_equal('vim', g:complete_word) + call assert_equal('keyword', g:complete_type) + + call feedkeys("Shello vim\completion test\\\\", 'tx') + call assert_equal('completion test', g:complete_word) + call assert_equal('whole_line', g:complete_type) + + call feedkeys("S\\\", 'tx') + call assert_equal('foo', g:complete_word) + call assert_equal('function', g:complete_type) + + inoremap call complete(1, ["red", "blue"]) + call feedkeys("S\\", 'tx') + call assert_equal('red', g:complete_word) + call assert_equal('eval', g:complete_type) + + call feedkeys("S\\\", 'tx') + call assert_equal('!', g:complete_word) + call assert_equal('cmdline', g:complete_type) + + call writefile([''], 'foo_test', 'D') + call feedkeys("Sfoo\\\\", 'tx') + call assert_equal('foo_test', g:complete_word) + call assert_equal('files', g:complete_type) + + call writefile(['hello help'], 'test_case.txt', 'D') + set dictionary=test_case.txt + call feedkeys("ggdGSh\\\\", 'tx') + call assert_equal('hello', g:complete_word) + call assert_equal('dictionary', g:complete_type) + + set spell spelllang=en_us + call feedkeys("STheatre\s\\", 'tx') + call assert_equal('Theater', g:complete_word) + call assert_equal('spell', g:complete_type) + + bwipe! + set completeopt& omnifunc& completefunc& spell& spelllang& dictionary& + autocmd! CompleteDone + delfunc OnDone + delfunc CompleteFunc + unlet g:complete_word + unlet g:complete_type +endfunc + func Test_CompleteDoneDict() au CompleteDonePre * :call CompleteDone_CheckCompletedItemDict(1) au CompleteDone * :call CompleteDone_CheckCompletedItemDict(0) diff --git a/src/version.c b/src/version.c index 42d8e1182b..4cf68620cb 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 905, /**/ 904, /**/ From 73785accfd2784ec6c89fe4b21d86d7bf9c30864 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 5 Dec 2024 21:06:12 +0100 Subject: [PATCH 075/244] runtime(doc): updated version9.txt with changes from v9.1.0905 Signed-off-by: Christian Brabandt --- runtime/doc/version9.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 2aadcd3f4f..f5f77b3e99 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Nov 28 +*version9.txt* For Vim version 9.1. Last change: 2024 Dec 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41613,6 +41613,8 @@ Changed~ from |defaults.vim| - the default 'backspace' option for Vim has been set to "indent,eol,start" and removed from |defaults.vim| +- the completed word and completion type are provided when handling the + |CompleteDone| autocommand in the |v:event| dictionary *added-9.2* Added ~ From bdb5f85a5189534653f36e92b1bc780ca8d25218 Mon Sep 17 00:00:00 2001 From: Yinzuo Jiang Date: Thu, 5 Dec 2024 21:31:09 +0100 Subject: [PATCH 076/244] patch 9.1.0906: filetype: Nvidia PTX files are not recognized Problem: filetype: Nvidia PTX files are not recognized Solution: detect '*.ptx' files as ptx filetype (Yinzuo Jiang) Reference: https://docs.nvidia.com/cuda/parallel-thread-execution/ closes: #16171 Signed-off-by: Yinzuo Jiang Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 2 ++ runtime/filetype.vim | 4 +++ runtime/ftplugin/ptx.vim | 16 +++++++++++ runtime/syntax/ptx.vim | 52 +++++++++++++++++++++++++++++++++++ src/testdir/test_filetype.vim | 1 + src/version.c | 2 ++ 6 files changed, 77 insertions(+) create mode 100644 runtime/ftplugin/ptx.vim create mode 100644 runtime/syntax/ptx.vim diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 4c5ee6d2b2..50755e1a69 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -249,6 +249,7 @@ runtime/ftplugin/postscr.vim @mrdubya runtime/ftplugin/prisma.vim @ribru17 runtime/ftplugin/ps1.vim @heaths runtime/ftplugin/ps1xml.vim @heaths +runtime/ftplugin/ptx.vim @jiangyinzuo runtime/ftplugin/purescript.vim @ribru17 runtime/ftplugin/pymanifest.vim @ObserverOfTime runtime/ftplugin/python.vim @tpict @@ -556,6 +557,7 @@ runtime/syntax/prolog.vim @XVilka runtime/syntax/ps1.vim @heaths runtime/syntax/ps1xml.vim @heaths runtime/syntax/psl.vim @danielkho +runtime/syntax/ptx.vim @jiangyinzuo runtime/syntax/pymanifest.vim @ObserverOfTime runtime/syntax/qb64.vim @dkearns runtime/syntax/qml.vim @ChaseKnowlden diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 2c46c57b1e..fe12047783 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1976,6 +1976,10 @@ au BufNewFile,BufRead *.pk setf poke " Protocols au BufNewFile,BufRead */etc/protocols setf protocols +" Nvidia PTX (Parallel Thread Execution) +" See https://docs.nvidia.com/cuda/parallel-thread-execution/ +au BufNewFile,BufRead *.ptx setf ptx + " Purescript au BufNewFile,BufRead *.purs setf purescript diff --git a/runtime/ftplugin/ptx.vim b/runtime/ftplugin/ptx.vim new file mode 100644 index 0000000000..12b127c8fc --- /dev/null +++ b/runtime/ftplugin/ptx.vim @@ -0,0 +1,16 @@ +" Vim filetype plugin file +" Language: Nvidia PTX (Parellel Thread Execution) +" Maintainer: Yinzuo Jiang +" Last Change: 2024-12-05 + +if exists("b:did_ftplugin") + finish +endif + +let b:did_ftplugin = 1 + +" Comments in PTX follow C/C++ syntax +" See: https://docs.nvidia.com/cuda/parallel-thread-execution/#syntax +setlocal commentstring=//\ %s + +let b:undo_ftplugin = 'setl commentstring<' diff --git a/runtime/syntax/ptx.vim b/runtime/syntax/ptx.vim new file mode 100644 index 0000000000..98de4ff6d3 --- /dev/null +++ b/runtime/syntax/ptx.vim @@ -0,0 +1,52 @@ +" Vim syntax file +" Language: Nvidia PTX (Parallel Thread Execution) +" Maintainer: Yinzuo Jiang +" Latest Revision: 2024-12-05 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syntax iskeyword .,_,a-z,48-57 + +" https://docs.nvidia.com/cuda/parallel-thread-execution/#directives +syntax keyword ptxFunction .entry .func +syntax keyword ptxDirective .branchtargets .file .loc .secion .maxnctapersm .maxnreg .minnctapersm .noreturn .pragma .reqntid .target .version .weak +syntax keyword ptxOperator .address_size .alias .align .callprototype .calltargets +syntax keyword ptxStorageClass .common .const .extern .global .local .param .reg .sreg .shared .tex .visible +syntax keyword ptxType .explicitcluster .maxclusterrank .reqnctapercluster + +" https://docs.nvidia.com/cuda/parallel-thread-execution/#fundamental-types +" signed integer +syntax keyword ptxType .s8 .s16 .s32 .s64 +" unsigned integer +syntax keyword ptxType .u8 .u16 .u32 .u64 +" floating-point +syntax keyword ptxType .f16 .f16x2 .f32 .f64 +" bits (untyped) +syntax keyword ptxType .b8 .b16 .b32 .b64 .b128 +" predicate +syntax keyword ptxType .pred + +" https://docs.nvidia.com/cuda/parallel-thread-execution/#instruction-statements +syntax keyword ptxStatement ret + +syntax region ptxCommentL start="//" skip="\\$" end="$" keepend +syntax region ptxComment matchgroup=ptxCommentStart start="/\*" end="\*/" extend + +hi def link ptxFunction Function +hi def link ptxDirective Keyword +hi def link ptxOperator Operator +hi def link ptxStorageClass StorageClass +hi def link ptxType Type +hi def link ptxStatement Statement + +hi def link ptxCommentL ptxComment +hi def link ptxCommentStart ptxComment +hi def link ptxComment Comment + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index ef1d8b57e7..2dc0f4961b 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -608,6 +608,7 @@ def s:GetFilenameChecks(): dict> ps1xml: ['file.ps1xml'], psf: ['file.psf'], psl: ['file.psl'], + ptx: ['file.ptx'], pug: ['file.pug'], puppet: ['file.pp'], purescript: ['file.purs'], diff --git a/src/version.c b/src/version.c index 4cf68620cb..c230d4f9d0 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 906, /**/ 905, /**/ From 41afa308d6f420504c47567b494e97a6721afe71 Mon Sep 17 00:00:00 2001 From: h-east Date: Fri, 6 Dec 2024 16:03:37 +0100 Subject: [PATCH 077/244] runtime(doc): Add vietnamese.txt to helps main TOC closes: #16177 Signed-off-by: h-east Signed-off-by: Christian Brabandt --- runtime/doc/help.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index 77ea273ec6..a7986851e3 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 9.1. Last change: 2024 Nov 07 +*help.txt* For Vim version 9.1. Last change: 2024 Dec 06 VIM - main help file k @@ -180,6 +180,7 @@ Language support ~ |hebrew.txt| Hebrew language support and editing |russian.txt| Russian language support and editing |hangulin.txt| Hangul (Korean) input mode +|vietnamese.txt| Vietnamese language support and editing GUI ~ |gui.txt| Graphical User Interface (GUI) From ee9bc68f03877b2ebffed53b89222b2e4d74a723 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Fri, 6 Dec 2024 17:19:25 +0100 Subject: [PATCH 078/244] patch 9.1.0907: printoptions:portrait does not change postscript Orientation Problem: printoptions:portrait does not change postscript Orientation Solution: Set Orientation depending on portrait suboption. fixes: #16156 closes: #16174 Signed-off-by: Christian Brabandt --- src/hardcopy.c | 2 +- src/testdir/test_hardcopy.vim | 27 +++++++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/hardcopy.c b/src/hardcopy.c index 8abfff2107..785a3f5543 100644 --- a/src/hardcopy.c +++ b/src/hardcopy.c @@ -2742,7 +2742,7 @@ mch_print_begin(prt_settings_T *psettings) prt_dsc_textline("CreationDate", get_ctime(time(NULL), FALSE)); prt_dsc_textline("DocumentData", "Clean8Bit"); - prt_dsc_textline("Orientation", "Portrait"); + prt_dsc_textline("Orientation", prt_portrait ? "Portrait" : "Landscape"); prt_dsc_atend("Pages"); prt_dsc_textline("PageOrder", "Ascend"); // The bbox does not change with orientation - it is always in the default diff --git a/src/testdir/test_hardcopy.vim b/src/testdir/test_hardcopy.vim index be83728b4f..926ff8f97d 100644 --- a/src/testdir/test_hardcopy.vim +++ b/src/testdir/test_hardcopy.vim @@ -209,4 +209,31 @@ func Test_illegal_byte() call delete('Xpstest') endfunc +func Test_printoptions_portrait() + CheckFeature postscript + edit test_hardcopy.vim + syn on + + set printoptions=portrait:y + 1,50hardcopy > Xhardcopy_printoptions_portrait + let lines = readfile('Xhardcopy_printoptions_portrait') + call assert_match('Orientation: Portrait', lines[6]) + call assert_match('BoundingBox: 59 49 564 800', lines[9]) + call assert_match('DocumentMedia: A4', lines[10]) + call assert_match('PageMedia: A4', lines[24]) + call delete('Xhardcopy_printoptions') + + set printoptions=portrait:n + 1,50hardcopy > Xhardcopy_printoptions_portrait + let lines = readfile('Xhardcopy_printoptions_portrait') + call assert_match('Orientation: Landscape', lines[6]) + call assert_match('BoundingBox: 59 42 590 756', lines[9]) + call assert_match('DocumentMedia: A4', lines[10]) + call assert_match('PageMedia: A4', lines[24]) + call delete('Xhardcopy_printoptions') + + set printoptions& + bwipe +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index c230d4f9d0..bdd605317f 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 907, /**/ 906, /**/ From 51d4d84d6a7159c6ce9e04b36f8edc105ca3794b Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Fri, 6 Dec 2024 17:26:25 +0100 Subject: [PATCH 079/244] patch 9.1.0908: not possible to configure :messages Problem: not possible to configure :messages Solution: add the 'messagesopt' option (Shougo Matsushita) closes: #16068 Co-authored-by: h_east Signed-off-by: Shougo Matsushita Signed-off-by: Christian Brabandt --- runtime/doc/message.txt | 5 +- runtime/doc/options.txt | 31 ++-- runtime/doc/tags | 4 +- runtime/doc/version9.txt | 4 +- runtime/optwin.vim | 4 +- src/message.c | 285 ++++++++++++++++++++++------------ src/option.c | 25 --- src/option.h | 2 +- src/optiondefs.h | 6 +- src/optionstr.c | 24 +++ src/proto/message.pro | 2 +- src/proto/option.pro | 1 - src/proto/optionstr.pro | 2 + src/testdir/gen_opt_test.vim | 6 +- src/testdir/test_cmdline.vim | 26 ---- src/testdir/test_messages.vim | 46 ++++++ src/testdir/test_options.vim | 7 +- src/version.c | 2 + 18 files changed, 306 insertions(+), 176 deletions(-) diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt index 69d8bc7c6f..3fcbd95706 100644 --- a/runtime/doc/message.txt +++ b/runtime/doc/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 9.1. Last change: 2024 Nov 14 +*message.txt* For Vim version 9.1. Last change: 2024 Dec 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -29,7 +29,7 @@ depends on the 'shortmess' option. Clear messages, keeping only the {count} most recent ones. -The number of remembered messages is determined by the 'msghistory' option. +The number of remembered messages is determined by the 'messagesopt' option. *g<* The "g<" command can be used to see the last page of previous command output. @@ -837,6 +837,7 @@ If you accidentally hit or and you want to see the displayed text then use |g<|. This only works when 'more' is set. To reduce the number of hit-enter prompts: +- Set 'messagesopt'. - Set 'cmdheight' to 2 or higher. - Add flags to 'shortmess'. - Reset 'showcmd' and/or 'ruler'. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 273ea64dec..a31d041544 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Dec 03 +*options.txt* For Vim version 9.1. Last change: 2024 Dec 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4439,7 +4439,7 @@ A jump table for the options with a short description can be found at |Q_op|. global A history of ":" commands, and a history of previous search patterns is remembered. This option decides how many entries may be stored in - each of these histories (see |cmdline-editing| and 'msghistory' for + each of these histories (see |cmdline-editing| and 'messagesopt' for the number of messages to remember). The maximum value is 10000. NOTE: This option is set to the Vi default value when 'compatible' is @@ -5634,6 +5634,26 @@ A jump table for the options with a short description can be found at |Q_op|. generated from a list of items, e.g., the Buffers menu. Changing this option has no direct effect, the menu must be refreshed first. + *'messagesopt'* *'mopt'* +'messagesopt' 'mopt' string (default "hit-enter,history:500") + global + + Option settings when outputting messages. It can consist of the + following items. Items must be separated by a comma. + + hit-enter Use |hit-enter| prompt when the message is longer than + 'cmdheight' size. + + wait:{n} Ignored when "hit-enter" is present. Instead of using + |hit-enter| prompt, will simply wait for {n} + milliseconds so the user has a chance to read the + message, use 0 to disable sleep (but then the user may + miss an important message). + + history:{n} Determines how many entries are remembered in the + |:messages| history. The maximum value is 10000. + Setting it to zero clears the message history. + *'mkspellmem'* *'msm'* 'mkspellmem' 'msm' string (default "460000,2000,500") global @@ -5917,13 +5937,6 @@ A jump table for the options with a short description can be found at |Q_op|. time in msec between two mouse clicks for the second click to be recognized as a multi click. - *'msghistory'* *'mhi'* -'msghistory' 'mhi' number (default 500) - global - Determines how many entries are remembered in the |:messages| history. - The maximum value is 10000. - Setting it to zero clears the message history. - *'mzquantum'* *'mzq'* 'mzquantum' 'mzq' number (default 100) diff --git a/runtime/doc/tags b/runtime/doc/tags index ad870060df..f0ca51b5dc 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -499,9 +499,9 @@ $quote eval.txt /*$quote* 'menc' options.txt /*'menc'* 'menuitems' options.txt /*'menuitems'* 'mesg' vi_diff.txt /*'mesg'* +'messagesopt' options.txt /*'messagesopt'* 'mfd' options.txt /*'mfd'* 'mh' options.txt /*'mh'* -'mhi' options.txt /*'mhi'* 'mis' options.txt /*'mis'* 'mkspellmem' options.txt /*'mkspellmem'* 'ml' options.txt /*'ml'* @@ -517,6 +517,7 @@ $quote eval.txt /*$quote* 'modelines' options.txt /*'modelines'* 'modifiable' options.txt /*'modifiable'* 'modified' options.txt /*'modified'* +'mopt' options.txt /*'mopt'* 'more' options.txt /*'more'* 'mouse' options.txt /*'mouse'* 'mousef' options.txt /*'mousef'* @@ -532,7 +533,6 @@ $quote eval.txt /*$quote* 'mousetime' options.txt /*'mousetime'* 'mp' options.txt /*'mp'* 'mps' options.txt /*'mps'* -'msghistory' options.txt /*'msghistory'* 'msm' options.txt /*'msm'* 'mzq' options.txt /*'mzq'* 'mzquantum' options.txt /*'mzquantum'* diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index f5f77b3e99..312a1c23e7 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Dec 05 +*version9.txt* For Vim version 9.1. Last change: 2024 Dec 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41667,7 +41667,7 @@ Options: ~ popup 'findfunc' Vim function to obtain the results for a |:find| command -'msghistory' Max number of messages to remember +'messagesopt' configure |:messages| and |hit-enter| prompt 'winfixbuf' Keep buffer focused in a window 'tabclose' Which tab page to focus after closing a tab page 't_xo' Terminal uses XON/XOFF handshaking (e.g. vt420) diff --git a/runtime/optwin.vim b/runtime/optwin.vim index c8170da71d..c3f917cc35 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -749,8 +749,8 @@ call AddOption("terse", gettext("add 's' flag in 'shortmess' (don't show se call BinOptionG("terse", &terse) call AddOption("shortmess", gettext("list of flags to make messages shorter")) call OptionG("shm", &shm) -call AddOption("msghistory", gettext("how many messages are remembered")) -call append("$", " \tset mhi=" . &mhi) +call AddOption("messagesopt", gettext("Option settings when outputting messages")) +call OptionG("mopt", &mopt) call AddOption("showcmd", gettext("show (partial) command keys in location given by 'showcmdloc'")) let &sc = s:old_sc call BinOptionG("sc", &sc) diff --git a/src/message.c b/src/message.c index 15eaaaeab7..34a2692184 100644 --- a/src/message.c +++ b/src/message.c @@ -16,6 +16,7 @@ #include "vim.h" static void add_msg_hist(char_u *s, int len, int attr); +static void check_msg_hist(void); static void hit_return_msg(void); static void msg_home_replace_attr(char_u *fname, int attr); static void msg_puts_attr_len(char *str, int maxlen, int attr); @@ -51,6 +52,21 @@ struct msg_hist static struct msg_hist *first_msg_hist = NULL; static struct msg_hist *last_msg_hist = NULL; static int msg_hist_len = 0; +static int msg_hist_max = 500; // The default max value is 500 + +// flags obtained from the 'messagesopt' option +#define MESSAGES_HIT_ENTER 0x001 +#define MESSAGES_WAIT 0x002 +#define MESSAGES_HISTORY 0x004 + +// args in 'messagesopt' option +#define MESSAGES_OPT_HIT_ENTER "hit-enter" +#define MESSAGES_OPT_WAIT "wait:" +#define MESSAGES_OPT_HISTORY "history:" + +// The default is "hit-enter,history:500" +static int msg_flags = MESSAGES_HIT_ENTER | MESSAGES_HISTORY; +static int msg_wait = 0; static FILE *verbose_fd = NULL; static int verbose_did_open = FALSE; @@ -1060,14 +1076,76 @@ delete_first_msg(void) return OK; } - void + static void check_msg_hist(void) { // Don't let the message history get too big - while (msg_hist_len > 0 && msg_hist_len > p_mhi) + while (msg_hist_len > 0 && msg_hist_len > msg_hist_max) (void)delete_first_msg(); } + + int +messagesopt_changed(void) +{ + char_u *p; + int messages_flags_new = 0; + int messages_wait_new = 0; + int messages_history_new = 0; + + p = p_meo; + while (*p != NUL) + { + if (STRNCMP(p, MESSAGES_OPT_HIT_ENTER, + STRLEN_LITERAL(MESSAGES_OPT_HIT_ENTER)) == 0) + { + p += STRLEN_LITERAL(MESSAGES_OPT_HIT_ENTER); + messages_flags_new |= MESSAGES_HIT_ENTER; + } + else if (STRNCMP(p, MESSAGES_OPT_WAIT, + STRLEN_LITERAL(MESSAGES_OPT_WAIT)) == 0 + && VIM_ISDIGIT(p[STRLEN_LITERAL(MESSAGES_OPT_WAIT)])) + { + p += STRLEN_LITERAL(MESSAGES_OPT_WAIT); + messages_wait_new = getdigits(&p); + messages_flags_new |= MESSAGES_WAIT; + } + else if (STRNCMP(p, MESSAGES_OPT_HISTORY, + STRLEN_LITERAL(MESSAGES_OPT_HISTORY)) == 0 + && VIM_ISDIGIT(p[STRLEN_LITERAL(MESSAGES_OPT_HISTORY)])) + { + p += STRLEN_LITERAL(MESSAGES_OPT_HISTORY); + messages_history_new = getdigits(&p); + messages_flags_new |= MESSAGES_HISTORY; + } + + if (*p != ',' && *p != NUL) + return FAIL; + if (*p == ',') + ++p; + } + + // Either "wait" or "hit-enter" is required + if (!(messages_flags_new & (MESSAGES_HIT_ENTER | MESSAGES_WAIT))) + return FAIL; + + // "history" must be set + if (!(messages_flags_new & MESSAGES_HISTORY)) + return FAIL; + + // "history" must be <= 10000 + if (messages_history_new > 10000) + return FAIL; + + msg_flags = messages_flags_new; + msg_wait = messages_wait_new; + + msg_hist_max = messages_history_new; + check_msg_hist(); + + return OK; +} + /* * ":messages" command. */ @@ -1228,118 +1306,127 @@ wait_return(int redraw) if (need_check_timestamps) check_timestamps(FALSE); - hit_return_msg(); - - do + if (msg_flags & MESSAGES_HIT_ENTER) { - // Remember "got_int", if it is set vgetc() probably returns a - // CTRL-C, but we need to loop then. - had_got_int = got_int; - - // Don't do mappings here, we put the character back in the - // typeahead buffer. - ++no_mapping; - ++allow_keys; - - // Temporarily disable Recording. If Recording is active, the - // character will be recorded later, since it will be added to the - // typebuf after the loop - save_reg_recording = reg_recording; - save_scriptout = scriptout; - reg_recording = 0; - scriptout = NULL; - c = safe_vgetc(); - if (had_got_int && !global_busy) - got_int = FALSE; - --no_mapping; - --allow_keys; - reg_recording = save_reg_recording; - scriptout = save_scriptout; + hit_return_msg(); -#ifdef FEAT_CLIPBOARD - // Strange way to allow copying (yanking) a modeless selection at - // the hit-enter prompt. Use CTRL-Y, because the same is used in - // Cmdline-mode and it's harmless when there is no selection. - if (c == Ctrl_Y && clip_star.state == SELECT_DONE) + do { - clip_copy_modeless_selection(TRUE); - c = K_IGNORE; - } + // Remember "got_int", if it is set vgetc() probably returns a + // CTRL-C, but we need to loop then. + had_got_int = got_int; + + // Don't do mappings here, we put the character back in the + // typeahead buffer. + ++no_mapping; + ++allow_keys; + + // Temporarily disable Recording. If Recording is active, the + // character will be recorded later, since it will be added to the + // typebuf after the loop + save_reg_recording = reg_recording; + save_scriptout = scriptout; + reg_recording = 0; + scriptout = NULL; + c = safe_vgetc(); + if (had_got_int && !global_busy) + got_int = FALSE; + --no_mapping; + --allow_keys; + reg_recording = save_reg_recording; + scriptout = save_scriptout; + +#ifdef FEAT_CLIPBOARD + // Strange way to allow copying (yanking) a modeless selection at + // the hit-enter prompt. Use CTRL-Y, because the same is used in + // Cmdline-mode and it's harmless when there is no selection. + if (c == Ctrl_Y && clip_star.state == SELECT_DONE) + { + clip_copy_modeless_selection(TRUE); + c = K_IGNORE; + } #endif - /* - * Allow scrolling back in the messages. - * Also accept scroll-down commands when messages fill the screen, - * to avoid that typing one 'j' too many makes the messages - * disappear. - */ - if (p_more && !p_cp) - { - if (c == 'b' || c == 'k' || c == 'u' || c == 'g' - || c == K_UP || c == K_PAGEUP) + /* + * Allow scrolling back in the messages. + * Also accept scroll-down commands when messages fill the screen, + * to avoid that typing one 'j' too many makes the messages + * disappear. + */ + if (p_more && !p_cp) { - if (msg_scrolled > Rows) - // scroll back to show older messages - do_more_prompt(c); - else + if (c == 'b' || c == 'k' || c == 'u' || c == 'g' + || c == K_UP || c == K_PAGEUP) { - msg_didout = FALSE; - c = K_IGNORE; - msg_col = + if (msg_scrolled > Rows) + // scroll back to show older messages + do_more_prompt(c); + else + { + msg_didout = FALSE; + c = K_IGNORE; + msg_col = #ifdef FEAT_RIGHTLEFT - cmdmsg_rl ? Columns - 1 : + cmdmsg_rl ? Columns - 1 : #endif - 0; - } - if (quit_more) - { - c = CAR; // just pretend CR was hit - quit_more = FALSE; - got_int = FALSE; + 0; + } + if (quit_more) + { + c = CAR; // just pretend CR was hit + quit_more = FALSE; + got_int = FALSE; + } + else if (c != K_IGNORE) + { + c = K_IGNORE; + hit_return_msg(); + } } - else if (c != K_IGNORE) - { + else if (msg_scrolled > Rows - 2 + && (c == 'j' || c == 'd' || c == 'f' + || c == K_DOWN || c == K_PAGEDOWN)) c = K_IGNORE; - hit_return_msg(); - } } - else if (msg_scrolled > Rows - 2 - && (c == 'j' || c == 'd' || c == 'f' - || c == K_DOWN || c == K_PAGEDOWN)) - c = K_IGNORE; - } - } while ((had_got_int && c == Ctrl_C) - || c == K_IGNORE + } while ((had_got_int && c == Ctrl_C) + || c == K_IGNORE #ifdef FEAT_GUI - || c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR + || c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR #endif - || c == K_LEFTDRAG || c == K_LEFTRELEASE - || c == K_MIDDLEDRAG || c == K_MIDDLERELEASE - || c == K_RIGHTDRAG || c == K_RIGHTRELEASE - || c == K_MOUSELEFT || c == K_MOUSERIGHT - || c == K_MOUSEDOWN || c == K_MOUSEUP - || c == K_MOUSEMOVE - || (!mouse_has(MOUSE_RETURN) - && mouse_row < msg_row - && (c == K_LEFTMOUSE - || c == K_MIDDLEMOUSE - || c == K_RIGHTMOUSE - || c == K_X1MOUSE - || c == K_X2MOUSE)) - ); - ui_breakcheck(); - - // Avoid that the mouse-up event causes Visual mode to start. - if (c == K_LEFTMOUSE || c == K_MIDDLEMOUSE || c == K_RIGHTMOUSE - || c == K_X1MOUSE || c == K_X2MOUSE) - (void)jump_to_mouse(MOUSE_SETPOS, NULL, 0); - else if (vim_strchr((char_u *)"\r\n ", c) == NULL && c != Ctrl_C) + || c == K_LEFTDRAG || c == K_LEFTRELEASE + || c == K_MIDDLEDRAG || c == K_MIDDLERELEASE + || c == K_RIGHTDRAG || c == K_RIGHTRELEASE + || c == K_MOUSELEFT || c == K_MOUSERIGHT + || c == K_MOUSEDOWN || c == K_MOUSEUP + || c == K_MOUSEMOVE + || (!mouse_has(MOUSE_RETURN) + && mouse_row < msg_row + && (c == K_LEFTMOUSE + || c == K_MIDDLEMOUSE + || c == K_RIGHTMOUSE + || c == K_X1MOUSE + || c == K_X2MOUSE)) + ); + ui_breakcheck(); + + // Avoid that the mouse-up event causes Visual mode to start. + if (c == K_LEFTMOUSE || c == K_MIDDLEMOUSE || c == K_RIGHTMOUSE + || c == K_X1MOUSE || c == K_X2MOUSE) + (void)jump_to_mouse(MOUSE_SETPOS, NULL, 0); + else if (vim_strchr((char_u *)"\r\n ", c) == NULL && c != Ctrl_C) + { + // Put the character back in the typeahead buffer. Don't use the + // stuff buffer, because lmaps wouldn't work. + ins_char_typebuf(vgetc_char, vgetc_mod_mask); + do_redraw = TRUE; // need a redraw even though there is + // typeahead + } + } + else { - // Put the character back in the typeahead buffer. Don't use the - // stuff buffer, because lmaps wouldn't work. - ins_char_typebuf(vgetc_char, vgetc_mod_mask); - do_redraw = TRUE; // need a redraw even though there is - // typeahead + c = CAR; + // Wait to allow the user to verify the output. + do_sleep(msg_wait, TRUE); } } redir_off = FALSE; diff --git a/src/option.c b/src/option.c index 31b00be7b0..f069d0f4bc 100644 --- a/src/option.c +++ b/src/option.c @@ -3864,31 +3864,6 @@ did_set_number_relativenumber(optset_T *args UNUSED) return NULL; } -/* - * Process the updated 'msghistory' option value. - */ - char * -did_set_msghistory(optset_T *args UNUSED) -{ - char *errmsg = NULL; - - // 'msghistory' must be positive - if (p_mhi < 0) - { - errmsg = e_argument_must_be_positive; - p_mhi = 0; - } - else if (p_mhi > 10000) - { - errmsg = e_invalid_argument; - p_mhi = 10000; - } - - check_msg_hist(); - - return errmsg; -} - #if defined(FEAT_LINEBREAK) || defined(PROTO) /* * Process the new 'numberwidth' option value. diff --git a/src/option.h b/src/option.h index 18a7c2ad56..e747addf0b 100644 --- a/src/option.h +++ b/src/option.h @@ -775,6 +775,7 @@ EXTERN long p_mmt; // 'maxmemtot' #ifdef FEAT_MENU EXTERN long p_mis; // 'menuitems' #endif +EXTERN char_u *p_meo; // 'messagesopt' #ifdef FEAT_SPELL EXTERN char_u *p_msm; // 'mkspellmem' #endif @@ -794,7 +795,6 @@ EXTERN int p_mousemev; // 'mousemoveevent' #endif EXTERN long p_mouset; // 'mousetime' EXTERN int p_more; // 'more' -EXTERN long p_mhi; // 'msghistory' #ifdef FEAT_MZSCHEME EXTERN long p_mzq; // 'mzquantum # if defined(DYNAMIC_MZSCHEME) diff --git a/src/optiondefs.h b/src/optiondefs.h index 2959232d06..f42178b135 100644 --- a/src/optiondefs.h +++ b/src/optiondefs.h @@ -1695,6 +1695,9 @@ static struct vimoption options[] = {"mesg", NULL, P_BOOL|P_VI_DEF, (char_u *)NULL, PV_NONE, NULL, NULL, {(char_u *)FALSE, (char_u *)0L} SCTX_INIT}, + {"messagesopt","mopt", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_COLON|P_NODUP, + (char_u *)&p_meo, PV_NONE, did_set_messagesopt, expand_set_messagesopt, + {(char_u *)"hit-enter,history:500", (char_u *)NULL} SCTX_INIT}, {"mkspellmem", "msm", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE, #ifdef FEAT_SPELL (char_u *)&p_msm, PV_NONE, did_set_mkspellmem, NULL, @@ -1778,9 +1781,6 @@ static struct vimoption options[] = {"mousetime", "mouset", P_NUM|P_VI_DEF, (char_u *)&p_mouset, PV_NONE, NULL, NULL, {(char_u *)500L, (char_u *)0L} SCTX_INIT}, - {"msghistory","mhi", P_NUM|P_VI_DEF, - (char_u *)&p_mhi, PV_NONE, did_set_msghistory, NULL, - {(char_u *)500L, (char_u *)0L} SCTX_INIT}, {"mzquantum", "mzq", P_NUM, #ifdef FEAT_MZSCHEME (char_u *)&p_mzq, PV_NONE, did_set_mzquantum, NULL, diff --git a/src/optionstr.c b/src/optionstr.c index d7cb38a3aa..08b235056c 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -3040,6 +3040,30 @@ did_set_matchpairs(optset_T *args) return NULL; } +/* + * Process the updated 'messagesopt' option value. + */ + char * +did_set_messagesopt(optset_T *args UNUSED) +{ + if (messagesopt_changed() == FAIL) + return e_invalid_argument; + + return NULL; +} + + int +expand_set_messagesopt(optexpand_T *args, int *numMatches, char_u ***matches) +{ + static char *(p_meo_values[]) = {"hit-enter", "wait:", "history:", NULL}; + return expand_set_opt_string( + args, + p_meo_values, + ARRAY_LENGTH(p_meo_values) - 1, + numMatches, + matches); +} + #if defined(FEAT_SPELL) || defined(PROTO) /* * The 'mkspellmem' option is changed. diff --git a/src/proto/message.pro b/src/proto/message.pro index 1c11444fcb..34b381866f 100644 --- a/src/proto/message.pro +++ b/src/proto/message.pro @@ -18,7 +18,7 @@ void emsg_namelen(char *msg, char_u *name, int len); char *msg_trunc_attr(char *s, int force, int attr); char_u *msg_may_trunc(int force, char_u *s); int delete_first_msg(void); -void check_msg_hist(void); +int messagesopt_changed(void); void ex_messages(exarg_T *eap); void msg_end_prompt(void); void wait_return(int redraw); diff --git a/src/proto/option.pro b/src/proto/option.pro index 8aa49c0186..83f32aad61 100644 --- a/src/proto/option.pro +++ b/src/proto/option.pro @@ -56,7 +56,6 @@ char *did_set_maxcombine(optset_T *args); char *did_set_modifiable(optset_T *args); char *did_set_modified(optset_T *args); char *did_set_mousehide(optset_T *args); -char *did_set_msghistory(optset_T *args); char *did_set_number_relativenumber(optset_T *args); char *did_set_numberwidth(optset_T *args); char *did_set_paste(optset_T *args); diff --git a/src/proto/optionstr.pro b/src/proto/optionstr.pro index 561faa86c1..75a8d73b63 100644 --- a/src/proto/optionstr.pro +++ b/src/proto/optionstr.pro @@ -111,6 +111,8 @@ int expand_set_keyprotocol(optexpand_T *args, int *numMatches, char_u ***matches char *did_set_lispoptions(optset_T *args); int expand_set_lispoptions(optexpand_T *args, int *numMatches, char_u ***matches); char *did_set_matchpairs(optset_T *args); +char *did_set_messagesopt(optset_T *args); +int expand_set_messagesopt(optexpand_T *args, int *numMatches, char_u ***matches); char *did_set_mkspellmem(optset_T *args); char *did_set_mouse(optset_T *args); int expand_set_mouse(optexpand_T *args, int *numMatches, char_u ***matches); diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim index ac9401ecad..8bfa57d646 100644 --- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -85,7 +85,6 @@ let test_values = { \ 'imstyle': [[0, 1], [-1, 2, 999]], \ 'lines': [[2, 24, 1000], [-1, 0, 1]], \ 'linespace': [[-1, 0, 2, 4, 999], ['']], - \ 'msghistory': [[0, 1, 100, 10000], [-1, 10001]], \ 'numberwidth': [[1, 4, 8, 10, 11, 20], [-1, 0, 21]], \ 'regexpengine': [[0, 1, 2], [-1, 3, 999]], \ 'report': [[0, 1, 2, 9999], [-1]], @@ -233,6 +232,11 @@ let test_values = { \ 'eol:\\u21b5', 'eol:\\U000021b5', 'eol:x,space:y'], \ ['xxx', 'eol:']], \ 'matchpairs': [['', '(:)', '(:),<:>'], ['xxx']], + \ 'messagesopt': [['hit-enter,history:1', 'hit-enter,history:10000', + \ 'history:100,wait:100', 'history:0,wait:0', + \ 'hit-enter,history:1,wait:1'], + \ ['xxx', 'history:500', 'hit-enter,history:-1', + \ 'hit-enter,history:10001', 'hit-enter']], \ 'mkspellmem': [['10000,100,12'], ['', 'xxx', '10000,100']], \ 'mouse': [['', 'n', 'v', 'i', 'c', 'h', 'a', 'r', 'nvi'], \ ['xxx', 'n,v,i']], diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 2fbce74ce0..6d4fdd7811 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -4032,30 +4032,4 @@ func Test_cd_bslash_completion_windows() let &shellslash = save_shellslash endfunc -func Test_msghistory() - " After setting 'msghistory' to 2 and outputting a message 4 times with - " :echomsg, is the number of output lines of :messages 2? - set msghistory=2 - echomsg 'foo' - echomsg 'bar' - echomsg 'baz' - echomsg 'foobar' - call assert_equal(['baz', 'foobar'], GetMessages()) - - " When the number of messages is 10 and 'msghistory' is changed to 5, is the - " number of output lines of :messages 5? - set msghistory=10 - for num in range(1, 10) - echomsg num - endfor - set msghistory=5 - call assert_equal(5, len(GetMessages())) - - " Check empty list - set msghistory=0 - call assert_true(empty(GetMessages())) - - set msghistory& -endfunc - " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim index 46f3368346..1b5f809c78 100644 --- a/src/testdir/test_messages.vim +++ b/src/testdir/test_messages.vim @@ -211,6 +211,7 @@ endfunc " Test more-prompt (see :help more-prompt). func Test_message_more() CheckRunVimInTerminal + let buf = RunVimInTerminal('', {'rows': 6}) call term_sendkeys(buf, ":call setline(1, range(1, 100))\n") @@ -657,5 +658,50 @@ func Test_echowin_showmode() call StopVimInTerminal(buf) endfunc +func Test_messagesopt_history() + " After setting 'messagesopt' "history" to 2 and outputting a message 4 times + " with :echomsg, is the number of output lines of :messages 2? + set messagesopt=hit-enter,history:2 + echomsg 'foo' + echomsg 'bar' + echomsg 'baz' + echomsg 'foobar' + call assert_equal(['baz', 'foobar'], GetMessages()) + + " When the number of messages is 10 and 'messagesopt' "history" is changed to + " 5, is the number of output lines of :messages 5? + set messagesopt=hit-enter,history:10 + for num in range(1, 10) + echomsg num + endfor + set messagesopt=hit-enter,history:5 + call assert_equal(5, len(GetMessages())) + + " Check empty list + set messagesopt=hit-enter,history:0 + call assert_true(empty(GetMessages())) + + set messagesopt& +endfunc + +func Test_messagesopt_wait() + CheckRunVimInTerminal + + let buf = RunVimInTerminal('', {'rows': 6, 'cols': 45}) + call term_sendkeys(buf, ":set cmdheight=1\n") + + " Check hit-enter prompt + call term_sendkeys(buf, ":set messagesopt=hit-enter,history:500\n") + call term_sendkeys(buf, ":echo 'foo' | echo 'bar' echo 'baz'\n") + call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))}) + + " Check no hit-enter prompt when "wait:" is set + call term_sendkeys(buf, ":set messagesopt=wait:100,history:500\n") + call term_sendkeys(buf, ":echo 'foo' | echo 'bar' echo 'baz'\n") + call WaitForAssert({-> assert_equal(' 0,0-1 All', term_getline(buf, 6))}) + + " clean up + call StopVimInTerminal(buf) +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index cd66cdfaeb..34efbb527a 100644 --- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -633,6 +633,10 @@ func Test_set_completion_string_values() call feedkeys(":set hl=8b i\\\\\"\", 'xt') call assert_equal("\"set hl=8bi i", @:) + " messagesopt + call assert_equal(['history:', 'hit-enter', 'wait:'], + \ getcompletion('set messagesopt+=', 'cmdline')->sort()) + " " Test flag lists " @@ -732,7 +736,6 @@ func Test_set_option_errors() call assert_fails('set backupcopy=', 'E474:') call assert_fails('set regexpengine=3', 'E474:') call assert_fails('set history=10001', 'E474:') - call assert_fails('set msghistory=10001', 'E474:') call assert_fails('set numberwidth=21', 'E474:') call assert_fails('set colorcolumn=-a', 'E474:') call assert_fails('set colorcolumn=a', 'E474:') @@ -746,7 +749,6 @@ func Test_set_option_errors() endif call assert_fails('set helpheight=-1', 'E487:') call assert_fails('set history=-1', 'E487:') - call assert_fails('set msghistory=-1', 'E487:') call assert_fails('set report=-1', 'E487:') call assert_fails('set shiftwidth=-1', 'E487:') call assert_fails('set sidescroll=-1', 'E487:') @@ -2509,6 +2511,7 @@ func Test_string_option_revert_on_failure() \ ['lispoptions', 'expr:1', 'a123'], \ ['listchars', 'tab:->', 'tab:'], \ ['matchpairs', '<:>', '<:'], + \ ['messagesopt', 'hit-enter,history:100', 'a123'], \ ['mkspellmem', '100000,1000,100', '100000'], \ ['mouse', 'nvi', 'z'], \ ['mousemodel', 'extend', 'a123'], diff --git a/src/version.c b/src/version.c index bdd605317f..4cb67efba9 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 908, /**/ 907, /**/ From 481992cea9cdb4855db7807e710a5306a124290b Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Fri, 6 Dec 2024 18:35:12 +0100 Subject: [PATCH 080/244] patch 9.1.0909: Vim9: crash when calling instance method Problem: Vim9: crash when calling instance method (Igbanam Ogbuluijah) Solution: Pass the object when calling a partial function (Yegappan Lakshmanan) fixes: #16166 closes: #16180 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/eval.c | 4 ++- src/testdir/test_vim9_class.vim | 61 +++++++++++++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/eval.c b/src/eval.c index fabe9643c3..6ce5918851 100644 --- a/src/eval.c +++ b/src/eval.c @@ -271,8 +271,10 @@ eval_expr_partial( return FAIL; // Shortcut to call a compiled function with minimal overhead. + if (partial->pt_obj != NULL) + partial->pt_obj->obj_refcount++; r = call_def_function(partial->pt_func, argc, argv, DEF_USE_PT_ARGV, - partial, NULL, fc, rettv); + partial, partial->pt_obj, fc, rettv); if (fc_arg == NULL) remove_funccal(); if (r == FAIL) diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index d8a3fa383f..bea0ec91f6 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -11596,4 +11596,65 @@ def Test_any_obj_var_type() v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected list but got string', 1) enddef +" Test for using an object method with mapnew() +def Test_mapnew_with_instance_method() + var lines =<< trim END + vim9script + + class Foo + var str: string + var nums: list = [1, 2, 3] + + def InstanceMethod(n: number): string + return this.str .. n + enddef + + def MapperMethod(idx: number, elem: number): string + return elem->this.InstanceMethod() + enddef + + def MapTest() + this.str = "foo" + var l = ['foo1', 'foo2', 'foo3'] + assert_equal(l, this.nums->mapnew(this.MapperMethod)) + enddef + endclass + + Foo.new().MapTest() + END + v9.CheckSourceSuccess(lines) + + # Error in the mapnew() function + lines =<< trim END + vim9script + + class Foo + var str: string + var nums: list = [1, 2, 3] + + def InstanceMethod(n: number): string + throw "InstanceMethod failed" + enddef + + def MapperMethod(idx: number, elem: number): string + return elem->this.InstanceMethod() + enddef + + def MapTest() + this.str = "foo" + var caught_exception: bool = false + try + this.nums->mapnew(this.MapperMethod) + catch /InstanceMethod failed/ + caught_exception = true + endtry + assert_true(caught_exception) + enddef + endclass + + Foo.new().MapTest() + END + v9.CheckSourceSuccess(lines) +enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker diff --git a/src/version.c b/src/version.c index 4cb67efba9..e5d1eb1301 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 909, /**/ 908, /**/ From 72212c9bea77f14f1e6be703de3c10d70eb2984c Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Sat, 7 Dec 2024 15:57:34 +0100 Subject: [PATCH 081/244] runtime(doc): update wrong Vietnamese localization tag Signed-off-by: Christian Brabandt --- runtime/doc/tags | 2 +- runtime/doc/vietnamese.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/doc/tags b/runtime/doc/tags index f0ca51b5dc..6b4cd63e48 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -11247,7 +11247,7 @@ vietnamese vietnamese.txt /*vietnamese* vietnamese-ime_diff vietnamese.txt /*vietnamese-ime_diff* vietnamese-intro vietnamese.txt /*vietnamese-intro* vietnamese-keymap vietnamese.txt /*vietnamese-keymap* -vietnamese-l18n vietnamese.txt /*vietnamese-l18n* +vietnamese-l10n vietnamese.txt /*vietnamese-l10n* vietnamese-telex_utf-8 vietnamese.txt /*vietnamese-telex_utf-8* vietnamese-viqr_utf-8 vietnamese.txt /*vietnamese-viqr_utf-8* vietnamese-vni_utf-8 vietnamese.txt /*vietnamese-vni_utf-8* diff --git a/runtime/doc/vietnamese.txt b/runtime/doc/vietnamese.txt index ef0dce2798..ff4f4641cf 100644 --- a/runtime/doc/vietnamese.txt +++ b/runtime/doc/vietnamese.txt @@ -8,7 +8,7 @@ Vietnamese language support in Vim *vietnamese* *Vietnamese* 1. Introduction |vietnamese-intro| 2. Vietnamese keymaps |vietnamese-keymap| -3. Localization |vietnamese-l18n| +3. Localization |vietnamese-l10n| =============================================================================== 1. Introduction @@ -17,7 +17,7 @@ Vim supports Vietnamese language in the following ways: - Built-in |vietnamese-keymap|, which allows you to type Vietnamese characters in |Insert-mode| and |search-commands| using US keyboard layout. -- Localization in Vietnamese. See |vietnamese-l18n| +- Localization in Vietnamese. See |vietnamese-l10n| =============================================================================== 2. Vietnamese keymaps @@ -63,7 +63,7 @@ below: =============================================================================== 3. Localization - *vietnamese-l18n* + *vietnamese-l10n* Vim |messages| are also available in Vietnamese. If you wish to see messages in Vietnamese, you can run the command |:language| with an argument being the name of the Vietnamese locale. For example, > From d9e9f89e0ffd6e7ce5e2a7f8f1ace5471e37c210 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Sat, 7 Dec 2024 16:00:25 +0100 Subject: [PATCH 082/244] patch 9.1.0910: 'messagesopt' does not check max wait time Problem: 'messagesopt' does not check max wait time (after v9.1.0908) Solution: Check for max wait value (Shougo Matsushita) closes: #16183 Signed-off-by: Shougo Matsushita Signed-off-by: Christian Brabandt --- runtime/doc/options.txt | 3 ++- src/message.c | 4 ++++ src/testdir/gen_opt_test.vim | 3 ++- src/version.c | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index a31d041544..e2ce17612b 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Dec 06 +*options.txt* For Vim version 9.1. Last change: 2024 Dec 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5649,6 +5649,7 @@ A jump table for the options with a short description can be found at |Q_op|. milliseconds so the user has a chance to read the message, use 0 to disable sleep (but then the user may miss an important message). + The maximum value is 10000. history:{n} Determines how many entries are remembered in the |:messages| history. The maximum value is 10000. diff --git a/src/message.c b/src/message.c index 34a2692184..6b994e5e40 100644 --- a/src/message.c +++ b/src/message.c @@ -1137,6 +1137,10 @@ messagesopt_changed(void) if (messages_history_new > 10000) return FAIL; + // "wait" must be <= 10000 + if (messages_wait_new > 10000) + return FAIL; + msg_flags = messages_flags_new; msg_wait = messages_wait_new; diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim index 8bfa57d646..74f5ae52c9 100644 --- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -236,7 +236,8 @@ let test_values = { \ 'history:100,wait:100', 'history:0,wait:0', \ 'hit-enter,history:1,wait:1'], \ ['xxx', 'history:500', 'hit-enter,history:-1', - \ 'hit-enter,history:10001', 'hit-enter']], + \ 'hit-enter,history:10001', 'history:0,wait:10001', + \ 'hit-enter']], \ 'mkspellmem': [['10000,100,12'], ['', 'xxx', '10000,100']], \ 'mouse': [['', 'n', 'v', 'i', 'c', 'h', 'a', 'r', 'nvi'], \ ['xxx', 'n,v,i']], diff --git a/src/version.c b/src/version.c index e5d1eb1301..9c29c4e97b 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 910, /**/ 909, /**/ From 8cc43daee1f485c9abf1de3c638cce7835b9f861 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 7 Dec 2024 16:09:08 +0100 Subject: [PATCH 083/244] patch 9.1.0911: Variable name for 'messagesopt' doesn't match short name Problem: Variable name for 'messagesopt' doesn't match short name (after v9.1.0908) Solution: Change p_meo to p_mopt. Add more details to docs. (zeertzjq) closes: #16182 Signed-off-by: zeertzjq Signed-off-by: Christian Brabandt --- runtime/doc/options.txt | 18 ++++++++++-------- runtime/optwin.vim | 4 ++-- src/message.c | 2 +- src/option.h | 2 +- src/optiondefs.h | 2 +- src/optionstr.c | 6 +++--- src/testdir/test_messages.vim | 4 ++-- src/version.c | 2 ++ 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index e2ce17612b..4024d20c50 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5638,22 +5638,24 @@ A jump table for the options with a short description can be found at |Q_op|. 'messagesopt' 'mopt' string (default "hit-enter,history:500") global - Option settings when outputting messages. It can consist of the + Option settings for outputting messages. It can consist of the following items. Items must be separated by a comma. - hit-enter Use |hit-enter| prompt when the message is longer than + hit-enter Use a |hit-enter| prompt when the message is longer than 'cmdheight' size. - wait:{n} Ignored when "hit-enter" is present. Instead of using - |hit-enter| prompt, will simply wait for {n} - milliseconds so the user has a chance to read the - message, use 0 to disable sleep (but then the user may - miss an important message). - The maximum value is 10000. + wait:{n} Instead of using a |hit-enter| prompt, simply wait for + {n} milliseconds so that the user has a chance to read + the message. The maximum value of {n} is 10000. Use + 0 to disable the wait (but then the user may miss an + important message). + This item is ignored when "hit-enter" is present, but + required when "hit-enter" is not present. history:{n} Determines how many entries are remembered in the |:messages| history. The maximum value is 10000. Setting it to zero clears the message history. + This item must always be present. *'mkspellmem'* *'msm'* 'mkspellmem' 'msm' string (default "460000,2000,500") diff --git a/runtime/optwin.vim b/runtime/optwin.vim index c3f917cc35..2b12f55901 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: The Vim Project -" Last Change: 2024 Jul 12 +" Last Change: 2024 Dec 07 " Former Maintainer: Bram Moolenaar " If there already is an option window, jump to that one. @@ -749,7 +749,7 @@ call AddOption("terse", gettext("add 's' flag in 'shortmess' (don't show se call BinOptionG("terse", &terse) call AddOption("shortmess", gettext("list of flags to make messages shorter")) call OptionG("shm", &shm) -call AddOption("messagesopt", gettext("Option settings when outputting messages")) +call AddOption("messagesopt", gettext("options for outputting messages")) call OptionG("mopt", &mopt) call AddOption("showcmd", gettext("show (partial) command keys in location given by 'showcmdloc'")) let &sc = s:old_sc diff --git a/src/message.c b/src/message.c index 6b994e5e40..f0d1806c60 100644 --- a/src/message.c +++ b/src/message.c @@ -1093,7 +1093,7 @@ messagesopt_changed(void) int messages_wait_new = 0; int messages_history_new = 0; - p = p_meo; + p = p_mopt; while (*p != NUL) { if (STRNCMP(p, MESSAGES_OPT_HIT_ENTER, diff --git a/src/option.h b/src/option.h index e747addf0b..a3634a6023 100644 --- a/src/option.h +++ b/src/option.h @@ -775,7 +775,7 @@ EXTERN long p_mmt; // 'maxmemtot' #ifdef FEAT_MENU EXTERN long p_mis; // 'menuitems' #endif -EXTERN char_u *p_meo; // 'messagesopt' +EXTERN char_u *p_mopt; // 'messagesopt' #ifdef FEAT_SPELL EXTERN char_u *p_msm; // 'mkspellmem' #endif diff --git a/src/optiondefs.h b/src/optiondefs.h index f42178b135..2d01897659 100644 --- a/src/optiondefs.h +++ b/src/optiondefs.h @@ -1696,7 +1696,7 @@ static struct vimoption options[] = (char_u *)NULL, PV_NONE, NULL, NULL, {(char_u *)FALSE, (char_u *)0L} SCTX_INIT}, {"messagesopt","mopt", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_COLON|P_NODUP, - (char_u *)&p_meo, PV_NONE, did_set_messagesopt, expand_set_messagesopt, + (char_u *)&p_mopt, PV_NONE, did_set_messagesopt, expand_set_messagesopt, {(char_u *)"hit-enter,history:500", (char_u *)NULL} SCTX_INIT}, {"mkspellmem", "msm", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE, #ifdef FEAT_SPELL diff --git a/src/optionstr.c b/src/optionstr.c index 08b235056c..92474336a3 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -3055,11 +3055,11 @@ did_set_messagesopt(optset_T *args UNUSED) int expand_set_messagesopt(optexpand_T *args, int *numMatches, char_u ***matches) { - static char *(p_meo_values[]) = {"hit-enter", "wait:", "history:", NULL}; + static char *(p_mopt_values[]) = {"hit-enter", "wait:", "history:", NULL}; return expand_set_opt_string( args, - p_meo_values, - ARRAY_LENGTH(p_meo_values) - 1, + p_mopt_values, + ARRAY_LENGTH(p_mopt_values) - 1, numMatches, matches); } diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim index 1b5f809c78..2dce6c64d9 100644 --- a/src/testdir/test_messages.vim +++ b/src/testdir/test_messages.vim @@ -692,12 +692,12 @@ func Test_messagesopt_wait() " Check hit-enter prompt call term_sendkeys(buf, ":set messagesopt=hit-enter,history:500\n") - call term_sendkeys(buf, ":echo 'foo' | echo 'bar' echo 'baz'\n") + call term_sendkeys(buf, ":echo 'foo' | echo 'bar' | echo 'baz'\n") call WaitForAssert({-> assert_equal('Press ENTER or type command to continue', term_getline(buf, 6))}) " Check no hit-enter prompt when "wait:" is set call term_sendkeys(buf, ":set messagesopt=wait:100,history:500\n") - call term_sendkeys(buf, ":echo 'foo' | echo 'bar' echo 'baz'\n") + call term_sendkeys(buf, ":echo 'foo' | echo 'bar' | echo 'baz'\n") call WaitForAssert({-> assert_equal(' 0,0-1 All', term_getline(buf, 6))}) " clean up diff --git a/src/version.c b/src/version.c index 9c29c4e97b..81ebbae3e5 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 911, /**/ 910, /**/ From 6e6aff0f7ad2a2c9033724738e66dfdbb9e4c2ec Mon Sep 17 00:00:00 2001 From: sendittothenewts Date: Sat, 7 Dec 2024 16:27:22 +0100 Subject: [PATCH 084/244] patch 9.1.0912: xxd: integer overflow with sparse files and -autoskip Problem: xxd: integer overflow with sparse files and -autoskip Solution: reset zero_seen when at the limit, change the type to char (sendittothenewts) When encountering INT_MAX lines of zeros in the input, xxd overflows an `int` counter, resulting in undefined behaviour. Usually, this results in a spurious line of zeros being output every 2**32 lines, while the "*" line is lost, as is the final line of zeros that delineate the file size if at end of file. Since xxd doesn't need to know exactly how many lines are being skipped when it's > 3, the exact value of the line counter `zero_seen` doesn't matter and it can simply be reduced in value before the overflow occurs. Changing the type of `zero_seen` to `signed char` is not important, and done only to make the bug triggerable with more modest file sizes, and therefore more convenient to test the fix. fixes: #16170 closes: #16175 Signed-off-by: sendittothenewts Signed-off-by: Christian Brabandt --- src/version.c | 2 ++ src/xxd/xxd.c | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/version.c b/src/version.c index 81ebbae3e5..6dc9a47ec8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 912, /**/ 911, /**/ diff --git a/src/xxd/xxd.c b/src/xxd/xxd.c index c222885455..9031d713de 100644 --- a/src/xxd/xxd.c +++ b/src/xxd/xxd.c @@ -66,6 +66,7 @@ * 10.09.2024 Support -b and -i together, #15661 * 19.10.2024 -e did add an extra space #15899 * 11.11.2024 improve end-of-options argument parser #9285 + * 07.12.2024 fix overflow with xxd --autoskip and large sparse files #16175 * * (c) 1990-1998 by Juergen Weigert (jnweiger@gmail.com) * @@ -146,7 +147,7 @@ extern void perror __P((char *)); # endif #endif -char version[] = "xxd 2024-11-11 by Juergen Weigert et al."; +char version[] = "xxd 2024-12-07 by Juergen Weigert et al."; #ifdef WIN32 char osver[] = " (Win32)"; #else @@ -515,7 +516,7 @@ huntype( } /* - * Print line l. If nz is false, xxdline regards the line a line of + * Print line l. If nz is false, xxdline regards the line as a line of * zeroes. If there are three or more consecutive lines of zeroes, * they are replaced by a single '*' character. * @@ -530,7 +531,7 @@ huntype( xxdline(FILE *fp, char *l, int nz) { static char z[LLEN+1]; - static int zero_seen = 0; + static signed char zero_seen = 0; if (!nz && zero_seen == 1) strcpy(z, l); @@ -551,6 +552,11 @@ xxdline(FILE *fp, char *l, int nz) if (nz) zero_seen = 0; } + + /* If zero_seen > 3, then its exact value doesn't matter, so long as it + * remains >3 and incrementing it will not cause overflow. */ + if (zero_seen >= 0x7F) + zero_seen = 4; } /* This is an EBCDIC to ASCII conversion table */ From 92b36663f8d0e507f60f357c6add6f6c9148a951 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Sun, 8 Dec 2024 09:52:37 +0100 Subject: [PATCH 085/244] runtime(netrw): only check first arg of netrw_browsex_viewer for being executable fixes: #16185 Signed-off-by: Christian Brabandt --- runtime/autoload/netrw.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 9650f6dffb..b90a8d672f 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -39,6 +39,7 @@ " 2024 Nov 23 by Vim Project: update decompress defaults (#16104) " 2024 Nov 23 by Vim Project: fix powershell escaping issues (#16094) " 2024 Dec 04 by Vim Project: do not detach for gvim (#16168) +" 2024 Dec 08 by Vim Project: check the first arg of netrw_browsex_viewer for being executable (#16185) " }}} " Former Maintainer: Charles E Campbell " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim @@ -5076,7 +5077,9 @@ elseif executable('open') endif fun! s:viewer() - if exists('g:netrw_browsex_viewer') && executable(g:netrw_browsex_viewer) + " g:netrw_browsex_viewer could be a string of program + its arguments, + " test if first argument is executable + if exists('g:netrw_browsex_viewer') && executable(split(g:netrw_browsex_viewer)[0]) " extract any viewing options. Assumes that they're set apart by spaces. " call Decho("extract any viewing options from g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) if g:netrw_browsex_viewer =~ '\s' From 65be834c30fb43abb2e41585b41eefcd2ae06c01 Mon Sep 17 00:00:00 2001 From: h-east Date: Sun, 8 Dec 2024 10:05:26 +0100 Subject: [PATCH 086/244] patch 9.1.0913: no error check for neg values for 'messagesopt' Problem: no error check for neg values for 'messagesopt' (after v9.1.0908) Solution: add additional error checks and tests (h-east) closes: #16187 Signed-off-by: Shougo Matsushita Signed-off-by: Christian Brabandt --- src/message.c | 6 ++---- src/testdir/gen_opt_test.vim | 4 +++- src/version.c | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/message.c b/src/message.c index f0d1806c60..0fb0013d5a 100644 --- a/src/message.c +++ b/src/message.c @@ -1133,12 +1133,10 @@ messagesopt_changed(void) if (!(messages_flags_new & MESSAGES_HISTORY)) return FAIL; - // "history" must be <= 10000 - if (messages_history_new > 10000) + if (messages_history_new < 0 || messages_history_new > 10000) return FAIL; - // "wait" must be <= 10000 - if (messages_wait_new > 10000) + if (messages_wait_new < 0 || messages_wait_new > 10000) return FAIL; msg_flags = messages_flags_new; diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim index 74f5ae52c9..d1c721ef1b 100644 --- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -237,7 +237,9 @@ let test_values = { \ 'hit-enter,history:1,wait:1'], \ ['xxx', 'history:500', 'hit-enter,history:-1', \ 'hit-enter,history:10001', 'history:0,wait:10001', - \ 'hit-enter']], + \ 'hit-enter', 'history:10,wait:99999999999999999999', + \ 'history:99999999999999999999,wait:10', 'wait:10', + \ 'history:-10', 'history:10,wait:-10']], \ 'mkspellmem': [['10000,100,12'], ['', 'xxx', '10000,100']], \ 'mouse': [['', 'n', 'v', 'i', 'c', 'h', 'a', 'r', 'nvi'], \ ['xxx', 'n,v,i']], diff --git a/src/version.c b/src/version.c index 6dc9a47ec8..1333d9dea0 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 913, /**/ 912, /**/ From 85ee742f1e961ea79597dd38d04b56ac35f45a1e Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Sun, 8 Dec 2024 10:15:35 +0100 Subject: [PATCH 087/244] patch 9.1.0914: Vim9: compile_assignment() is too long Problem: Vim9: compile_assignment() is too long Solution: refactor compile_assignment() into smaller functions (Yegappan Lakshmanan) closes: #16186 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/version.c | 2 + src/vim9compile.c | 246 ++++++++++++++++++++++++++++++---------------- 2 files changed, 164 insertions(+), 84 deletions(-) diff --git a/src/version.c b/src/version.c index 1333d9dea0..1ae3f53369 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 914, /**/ 913, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index ea305b7b34..e75462f0b4 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -2583,6 +2583,156 @@ push_default_value( return r; } +/* + * Compile an object member variable assignment in the argument passed to a + * class new() method. + * + * Instruction format: + * + * ifargisset this. = + * + * where is the object member variable index. + * + * Generates the ISN_JUMP_IF_ARG_NOT_SET instruction to skip the assignment if + * the value is passed as an argument to the new() method call. + * + * Returns OK on success. + */ + static int +compile_assignment_obj_new_arg(char_u **argp, cctx_T *cctx) +{ + char_u *arg = *argp; + + arg += 11; // skip "ifargisset" + int def_idx = getdigits(&arg); + arg = skipwhite(arg); + + // Use a JUMP_IF_ARG_NOT_SET instruction to skip if the value was not + // given and the default value is "v:none". + int off = STACK_FRAME_SIZE + (cctx->ctx_ufunc->uf_va_name != NULL + ? 1 : 0); + int count = cctx->ctx_ufunc->uf_def_args.ga_len; + if (generate_JUMP_IF_ARG(cctx, ISN_JUMP_IF_ARG_NOT_SET, + def_idx - count - off) == FAIL) + return FAIL; + + *argp = arg; + return OK; +} + +/* + * Convert the increment (++) or decrement (--) operator to the corresponding + * compound operator. + * + * Returns OK on success and FAIL on syntax error. + */ + static int +incdec_op_translate( + exarg_T *eap, + char_u **op, + int *oplen, + int *incdec) +{ + if (VIM_ISWHITE(eap->cmd[2])) + { + semsg(_(e_no_white_space_allowed_after_str_str), + eap->cmdidx == CMD_increment ? "++" : "--", eap->cmd); + return FAIL; + } + *op = (char_u *)(eap->cmdidx == CMD_increment ? "+=" : "-="); + *oplen = 2; + *incdec = TRUE; + + return OK; +} + +/* + * Parse a heredoc assignment starting at "p". Returns a pointer to the + * beginning of the heredoc content. + */ + static char_u * +heredoc_assign_stmt_end_get(char_u *p, exarg_T *eap, cctx_T *cctx) +{ + // [let] varname =<< [trim] {end} + eap->ea_getline = exarg_getline; + eap->cookie = cctx; + + list_T *l = heredoc_get(eap, p + 3, FALSE, TRUE); + if (l == NULL) + return NULL; + + list_free(l); + p += STRLEN(p); + + return p; +} + + static char_u * +compile_list_assignment( + char_u *p, + char_u *op, + int oplen, + int var_count, + int semicolon, + garray_T *instr, + type_T **rhs_type, + cctx_T *cctx) +{ + char_u *wp; + + // for "[var, var] = expr" evaluate the expression here, loop over the + // list of variables below. + // A line break may follow the "=". + + wp = op + oplen; + if (may_get_next_line_error(wp, &p, cctx) == FAIL) + return NULL; + if (compile_expr0(&p, cctx) == FAIL) + return NULL; + + if (cctx->ctx_skip != SKIP_YES) + { + type_T *stacktype; + int needed_list_len; + int did_check = FALSE; + + stacktype = cctx->ctx_type_stack.ga_len == 0 ? &t_void + : get_type_on_stack(cctx, 0); + if (stacktype->tt_type == VAR_VOID) + { + emsg(_(e_cannot_use_void_value)); + return NULL; + } + if (need_type(stacktype, &t_list_any, FALSE, -1, 0, cctx, FALSE, + FALSE) == FAIL) + return NULL; + // If a constant list was used we can check the length right here. + needed_list_len = semicolon ? var_count - 1 : var_count; + if (instr->ga_len > 0) + { + isn_T *isn = ((isn_T *)instr->ga_data) + instr->ga_len - 1; + + if (isn->isn_type == ISN_NEWLIST) + { + did_check = TRUE; + if (semicolon ? isn->isn_arg.number < needed_list_len + : isn->isn_arg.number != needed_list_len) + { + semsg(_(e_expected_nr_items_but_got_nr), + needed_list_len, (int)isn->isn_arg.number); + return NULL; + } + } + } + if (!did_check) + generate_CHECKLEN(cctx, needed_list_len, semicolon); + if (stacktype->tt_member != NULL) + *rhs_type = stacktype->tt_member; + } + + return p; +} + /* * Compile declaration and assignment: * "let name" @@ -2625,38 +2775,20 @@ compile_assignment( long start_lnum = SOURCING_LNUM; int has_arg_is_set_prefix = STRNCMP(arg, "ifargisset ", 11) == 0; - if (has_arg_is_set_prefix) - { - arg += 11; - int def_idx = getdigits(&arg); - arg = skipwhite(arg); - - // Use a JUMP_IF_ARG_NOT_SET instruction to skip if the value was not - // given and the default value is "v:none". - int off = STACK_FRAME_SIZE + (cctx->ctx_ufunc->uf_va_name != NULL - ? 1 : 0); - int count = cctx->ctx_ufunc->uf_def_args.ga_len; - if (generate_JUMP_IF_ARG(cctx, ISN_JUMP_IF_ARG_NOT_SET, - def_idx - count - off) == FAIL) - goto theend; - } + if (has_arg_is_set_prefix && + compile_assignment_obj_new_arg(&arg, cctx) == FAIL) + goto theend; // Skip over the "varname" or "[varname, varname]" to get to any "=". p = skip_var_list(arg, TRUE, &var_count, &semicolon, TRUE); if (p == NULL) return *arg == '[' ? arg : NULL; + if (eap->cmdidx == CMD_increment || eap->cmdidx == CMD_decrement) { - if (VIM_ISWHITE(eap->cmd[2])) - { - semsg(_(e_no_white_space_allowed_after_str_str), - eap->cmdidx == CMD_increment ? "++" : "--", eap->cmd); + if (incdec_op_translate(eap, &op, &oplen, &incdec) == FAIL) return NULL; - } - op = (char_u *)(eap->cmdidx == CMD_increment ? "+=" : "-="); - oplen = 2; - incdec = TRUE; } else { @@ -2678,73 +2810,19 @@ compile_assignment( if (heredoc) { - list_T *l; - - // [let] varname =<< [trim] {end} - eap->ea_getline = exarg_getline; - eap->cookie = cctx; - l = heredoc_get(eap, op + 3, FALSE, TRUE); - if (l == NULL) + p = heredoc_assign_stmt_end_get(p, eap, cctx); + if (p == NULL) return NULL; - - list_free(l); - p += STRLEN(p); end = p; } else if (var_count > 0) { - char_u *wp; - - // for "[var, var] = expr" evaluate the expression here, loop over the - // list of variables below. - // A line break may follow the "=". - - wp = op + oplen; - if (may_get_next_line_error(wp, &p, cctx) == FAIL) - return FAIL; - if (compile_expr0(&p, cctx) == FAIL) - return NULL; + // "[var, var] = expr" + p = compile_list_assignment(p, op, oplen, var_count, semicolon, + instr, &rhs_type, cctx); + if (p == NULL) + goto theend; end = p; - - if (cctx->ctx_skip != SKIP_YES) - { - type_T *stacktype; - int needed_list_len; - int did_check = FALSE; - - stacktype = cctx->ctx_type_stack.ga_len == 0 ? &t_void - : get_type_on_stack(cctx, 0); - if (stacktype->tt_type == VAR_VOID) - { - emsg(_(e_cannot_use_void_value)); - goto theend; - } - if (need_type(stacktype, &t_list_any, FALSE, -1, 0, cctx, - FALSE, FALSE) == FAIL) - goto theend; - // If a constant list was used we can check the length right here. - needed_list_len = semicolon ? var_count - 1 : var_count; - if (instr->ga_len > 0) - { - isn_T *isn = ((isn_T *)instr->ga_data) + instr->ga_len - 1; - - if (isn->isn_type == ISN_NEWLIST) - { - did_check = TRUE; - if (semicolon ? isn->isn_arg.number < needed_list_len - : isn->isn_arg.number != needed_list_len) - { - semsg(_(e_expected_nr_items_but_got_nr), - needed_list_len, (int)isn->isn_arg.number); - goto theend; - } - } - } - if (!did_check) - generate_CHECKLEN(cctx, needed_list_len, semicolon); - if (stacktype->tt_member != NULL) - rhs_type = stacktype->tt_member; - } } /* From ad3b6a3340a4ab02c1e5bc4a6d6a5fb858b671d3 Mon Sep 17 00:00:00 2001 From: matveyt Date: Sun, 8 Dec 2024 10:26:51 +0100 Subject: [PATCH 088/244] patch 9.1.0915: GVim: default font size a bit too small Problem: GVim: default font size a bit too small Solution: increase guifont size to 12 pt on GTK builds of gVim (matveyt). fixes: #16172 closes: #16178 Signed-off-by: matveyt Signed-off-by: Christian Brabandt --- runtime/doc/version9.txt | 2 ++ src/gui_gtk_x11.c | 2 +- src/os_mswin.c | 4 ++-- src/testdir/runtest.vim | 4 ++++ src/testdir/test_gui.vim | 8 ++++---- src/testdir/test_highlight.vim | 4 ++-- src/version.c | 2 ++ 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 312a1c23e7..76911425c5 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -41615,6 +41615,8 @@ Changed~ and removed from |defaults.vim| - the completed word and completion type are provided when handling the |CompleteDone| autocommand in the |v:event| dictionary +- the default fontsize for the GTK builds of Vim (Windows and Unix) has been + increased to 12pt to accomodate modern high-dpi monitors *added-9.2* Added ~ diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index 6c97d1a196..c037702ad9 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -160,7 +160,7 @@ static const GtkTargetEntry dnd_targets[] = * "Monospace" is a standard font alias that should be present * on all proper Pango/fontconfig installations. */ -# define DEFAULT_FONT "Monospace 10" +# define DEFAULT_FONT "Monospace 12" #if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION) # define USE_GNOME_SESSION diff --git a/src/os_mswin.c b/src/os_mswin.c index 95e3cbcb91..485ee20afc 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -2729,8 +2729,8 @@ quality_id2name(DWORD id) } // The default font height in 100% scaling (96dpi). -// (-12 in 96dpi equates to roughly 9pt) -#define DEFAULT_FONT_HEIGHT (-12) +// (-16 in 96dpi equates to roughly 12pt) +#define DEFAULT_FONT_HEIGHT (-16) static const LOGFONTW s_lfDefault = { diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim index ded31975b8..6fc0dcc669 100644 --- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -55,6 +55,10 @@ silent! endwhile " In the GUI we can always change the screen size. if has('gui_running') + if has('gui_gtk') + " to keep screendump size unchanged + set guifont=Monospace\ 10 + endif set columns=80 lines=25 endif diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim index ae65310627..29259345c3 100644 --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -105,8 +105,8 @@ func Test_getfontname_without_arg() let pat = '\(7x13\)\|\(\c-Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO8859-1\)' call assert_match(pat, fname) elseif has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3') - " 'expected' is DEFAULT_FONT of gui_gtk_x11.c. - call assert_equal('Monospace 10', fname) + " 'expected' is DEFAULT_FONT of gui_gtk_x11.c (any size) + call assert_match('^Monospace\>', fname) endif endfunc @@ -426,7 +426,7 @@ func Test_set_guifont() " Empty list. Should fallback to the built-in default. set guifont= - call assert_equal('Monospace 10', getfontname()) + call assert_match('^Monospace\>', getfontname()) endif if has('xfontset') @@ -613,7 +613,7 @@ func Test_expand_guifont() " Test recalling default and existing option set guifont= - call assert_equal('Monospace\ 10', getcompletion('set guifont=', 'cmdline')[0]) + call assert_match('^Monospace\>', getcompletion('set guifont=', 'cmdline')[0]) set guifont=Monospace\ 9 call assert_equal('Monospace\ 9', getcompletion('set guifont=', 'cmdline')[0]) diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim index 9bc5f12455..5189b618cf 100644 --- a/src/testdir/test_highlight.vim +++ b/src/testdir/test_highlight.vim @@ -781,8 +781,8 @@ func Test_1_highlight_Normalgroup_exists() if !has('gui_running') call assert_match('hi Normal\s*clear', hlNormal) elseif has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3') - " expect is DEFAULT_FONT of gui_gtk_x11.c - call assert_match('hi Normal\s*font=Monospace 10', hlNormal) + " expect is DEFAULT_FONT of gui_gtk_x11.c (any size) + call assert_match('hi Normal\s*font=Monospace\>', hlNormal) elseif has('gui_motif') " expect is DEFAULT_FONT of gui_x11.c call assert_match('hi Normal\s*font=7x13', hlNormal) diff --git a/src/version.c b/src/version.c index 1ae3f53369..07bb851f1b 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 915, /**/ 914, /**/ From ad4764f65b678938c1b252245e1af1ae150fbce8 Mon Sep 17 00:00:00 2001 From: David Pedersen Date: Mon, 9 Dec 2024 19:56:34 +0100 Subject: [PATCH 089/244] runtime(proto): include filetype plugin for protobuf closes: #16199 Signed-off-by: David Pedersen Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 1 + runtime/ftplugin/proto.vim | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 runtime/ftplugin/proto.vim diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 50755e1a69..cc054c2938 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -247,6 +247,7 @@ runtime/ftplugin/pod.vim @petdance @dkearns runtime/ftplugin/poefilter.vim @ObserverOfTime runtime/ftplugin/postscr.vim @mrdubya runtime/ftplugin/prisma.vim @ribru17 +runtime/ftplugin/proto.vim @Limero runtime/ftplugin/ps1.vim @heaths runtime/ftplugin/ps1xml.vim @heaths runtime/ftplugin/ptx.vim @jiangyinzuo diff --git a/runtime/ftplugin/proto.vim b/runtime/ftplugin/proto.vim new file mode 100644 index 0000000000..585f4461d3 --- /dev/null +++ b/runtime/ftplugin/proto.vim @@ -0,0 +1,18 @@ +" Vim filetype plugin +" Language: Protobuf +" Maintainer: David Pedersen +" Last Change: 2024 Dec 09 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal formatoptions-=t formatoptions+=croql + +setlocal comments=s1:/*,mb:*,ex:*/,:// +setlocal commentstring=//\ %s + +let b:undo_ftplugin = "setlocal formatoptions< comments< commentstring<" + +" vim: sw=2 sts=2 et From 36f36715e6173c2dc61e5c9817a22fb97a6166b2 Mon Sep 17 00:00:00 2001 From: h-east Date: Mon, 9 Dec 2024 20:05:59 +0100 Subject: [PATCH 090/244] patch 9.1.0916: messages.c is exceeding 80 columns Problem: messages.c is exceeding 80 columns Solution: slightly reformat messages.c (h-east) closes: #16196 Signed-off-by: h-east Signed-off-by: Christian Brabandt --- src/message.c | 59 ++++++++++++++++++++++++++------------------------- src/version.c | 2 ++ 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/message.c b/src/message.c index 0fb0013d5a..24984123b4 100644 --- a/src/message.c +++ b/src/message.c @@ -1324,8 +1324,8 @@ wait_return(int redraw) ++allow_keys; // Temporarily disable Recording. If Recording is active, the - // character will be recorded later, since it will be added to the - // typebuf after the loop + // character will be recorded later, since it will be added to + // the typebuf after the loop save_reg_recording = reg_recording; save_scriptout = scriptout; reg_recording = 0; @@ -1339,9 +1339,10 @@ wait_return(int redraw) scriptout = save_scriptout; #ifdef FEAT_CLIPBOARD - // Strange way to allow copying (yanking) a modeless selection at - // the hit-enter prompt. Use CTRL-Y, because the same is used in - // Cmdline-mode and it's harmless when there is no selection. + // Strange way to allow copying (yanking) a modeless selection + // at the hit-enter prompt. Use CTRL-Y, because the same is + // used in Cmdline-mode and it's harmless when there is no + // selection. if (c == Ctrl_Y && clip_star.state == SELECT_DONE) { clip_copy_modeless_selection(TRUE); @@ -1351,14 +1352,14 @@ wait_return(int redraw) /* * Allow scrolling back in the messages. - * Also accept scroll-down commands when messages fill the screen, - * to avoid that typing one 'j' too many makes the messages - * disappear. + * Also accept scroll-down commands when messages fill the + * screen, to avoid that typing one 'j' too many makes the + * messages disappear. */ if (p_more && !p_cp) { if (c == 'b' || c == 'k' || c == 'u' || c == 'g' - || c == K_UP || c == K_PAGEUP) + || c == K_UP || c == K_PAGEUP) { if (msg_scrolled > Rows) // scroll back to show older messages @@ -1391,36 +1392,36 @@ wait_return(int redraw) c = K_IGNORE; } } while ((had_got_int && c == Ctrl_C) - || c == K_IGNORE + || c == K_IGNORE #ifdef FEAT_GUI - || c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR + || c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR #endif - || c == K_LEFTDRAG || c == K_LEFTRELEASE - || c == K_MIDDLEDRAG || c == K_MIDDLERELEASE - || c == K_RIGHTDRAG || c == K_RIGHTRELEASE - || c == K_MOUSELEFT || c == K_MOUSERIGHT - || c == K_MOUSEDOWN || c == K_MOUSEUP - || c == K_MOUSEMOVE - || (!mouse_has(MOUSE_RETURN) - && mouse_row < msg_row - && (c == K_LEFTMOUSE - || c == K_MIDDLEMOUSE - || c == K_RIGHTMOUSE - || c == K_X1MOUSE - || c == K_X2MOUSE)) - ); + || c == K_LEFTDRAG || c == K_LEFTRELEASE + || c == K_MIDDLEDRAG || c == K_MIDDLERELEASE + || c == K_RIGHTDRAG || c == K_RIGHTRELEASE + || c == K_MOUSELEFT || c == K_MOUSERIGHT + || c == K_MOUSEDOWN || c == K_MOUSEUP + || c == K_MOUSEMOVE + || (!mouse_has(MOUSE_RETURN) + && mouse_row < msg_row + && (c == K_LEFTMOUSE + || c == K_MIDDLEMOUSE + || c == K_RIGHTMOUSE + || c == K_X1MOUSE + || c == K_X2MOUSE)) + ); ui_breakcheck(); // Avoid that the mouse-up event causes Visual mode to start. if (c == K_LEFTMOUSE || c == K_MIDDLEMOUSE || c == K_RIGHTMOUSE - || c == K_X1MOUSE || c == K_X2MOUSE) + || c == K_X1MOUSE || c == K_X2MOUSE) (void)jump_to_mouse(MOUSE_SETPOS, NULL, 0); else if (vim_strchr((char_u *)"\r\n ", c) == NULL && c != Ctrl_C) { - // Put the character back in the typeahead buffer. Don't use the - // stuff buffer, because lmaps wouldn't work. + // Put the character back in the typeahead buffer. Don't use + // the stuff buffer, because lmaps wouldn't work. ins_char_typebuf(vgetc_char, vgetc_mod_mask); - do_redraw = TRUE; // need a redraw even though there is + do_redraw = TRUE; // need a redraw even though there is // typeahead } } diff --git a/src/version.c b/src/version.c index 07bb851f1b..5933af3b89 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 916, /**/ 915, /**/ From ff70518f12b2e96946e233278da552ac666f7c21 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Mon, 9 Dec 2024 20:22:44 +0100 Subject: [PATCH 091/244] add saccarosium to maintainers files closes: #16197 Signed-off-by: Christian Brabandt Signed-off-by: Luca Saccarola --- .github/MAINTAINERS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index cc054c2938..9e1ddb4258 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -125,6 +125,7 @@ runtime/ftplugin/abaqus.vim @costerwi runtime/ftplugin/antlr4.vim @jiangyinzuo runtime/ftplugin/apache.vim @dubgeiser runtime/ftplugin/arduino.vim @k-takata +runtime/ftplugin/asciidoc.vim @saccarosium runtime/ftplugin/astro.vim @romainl runtime/ftplugin/asy.vim @avidseeker runtime/ftplugin/autohotkey.vim @telemachus @@ -238,6 +239,7 @@ runtime/ftplugin/octave.vim @dkearns runtime/ftplugin/ondir.vim @jparise runtime/ftplugin/opencl.vim @Freed-Wu runtime/ftplugin/openvpn.vim @ObserverOfTime +runtime/ftplugin/org.vim @saccarosium runtime/ftplugin/pascal.vim @dkearns runtime/ftplugin/pbtxt.vim @lakshayg runtime/ftplugin/pdf.vim @tpope @@ -493,6 +495,7 @@ runtime/syntax/hog.vim @wtfbbqhax runtime/syntax/hollywood.vim @sodero runtime/syntax/html.vim @dkearns runtime/syntax/htmlangular.vim @dlvandenberg +runtime/syntax/hyprlang.vim @saccarosium runtime/syntax/i3config.vim @hiqua runtime/syntax/icon.vim @dkearns runtime/syntax/indent.vim @dkearns @@ -542,6 +545,7 @@ runtime/syntax/nsis.vim @k-takata runtime/syntax/ondir.vim @jparise runtime/syntax/opencl.vim @Freed-Wu runtime/syntax/openvpn.vim @ObserverOfTime +runtime/syntax/org.vim @saccarosium runtime/syntax/pacmanlog.vim @rpigott runtime/syntax/pascal.vim @dkearns runtime/syntax/pbtxt.vim @lakshayg From b66cac1a8ed8636a38e867226f5bb621c96ff322 Mon Sep 17 00:00:00 2001 From: Luca Saccarola Date: Mon, 9 Dec 2024 20:29:14 +0100 Subject: [PATCH 092/244] runtime(typst): add definition lists to formatlistpat, update maintainer closes: #16192 Signed-off-by: Luca Saccarola Signed-off-by: Gregory Anders Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 8 ++++---- runtime/autoload/typst.vim | 5 +++-- runtime/compiler/typst.vim | 5 +++-- runtime/ftplugin/typst.vim | 9 ++++++--- runtime/indent/typst.vim | 5 +++-- runtime/syntax/typst.vim | 5 +++-- 6 files changed, 22 insertions(+), 15 deletions(-) diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 9e1ddb4258..28b754bbc9 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -19,7 +19,7 @@ runtime/autoload/modula2.vim @dkearns runtime/autoload/php.vim @david-szabo97 runtime/autoload/rubycomplete.vim @segfault @dkearns runtime/autoload/rust.vim @lilyball -runtime/autoload/typst.vim @gpanders +runtime/autoload/typst.vim @saccarosium runtime/autoload/xmlformat.vim @chrisbra runtime/autoload/dist/json.vim @habamax runtime/colors/blue.vim @habamax @romainl @neutaaaaan @@ -104,7 +104,7 @@ runtime/compiler/tidy.vim @dkearns runtime/compiler/ts-node.vim @dkearns runtime/compiler/tsc.vim @dkearns runtime/compiler/typedoc.vim @dkearns -runtime/compiler/typst.vim @gpanders +runtime/compiler/typst.vim @saccarosium runtime/compiler/xmllint.vim @dkearns runtime/compiler/xo.vim @dkearns runtime/compiler/yamllint.vim @romainl @@ -297,7 +297,7 @@ runtime/ftplugin/toml.vim @averms runtime/ftplugin/tt2html.vim @petdance runtime/ftplugin/typescript.vim @dkearns runtime/ftplugin/typescriptreact.vim @dkearns -runtime/ftplugin/typst.vim @gpanders +runtime/ftplugin/typst.vim @saccarosium runtime/ftplugin/unison.vim @chuwy runtime/ftplugin/v.vim @ribru17 runtime/ftplugin/vdf.vim @ObserverOfTime @@ -390,7 +390,7 @@ runtime/indent/teraterm.vim @k-takata runtime/indent/terraform.vim @gpanders runtime/indent/thrift.vim @jiangyinzuo runtime/indent/typescript.vim @HerringtonDarkholme -runtime/indent/typst.vim @gpanders +runtime/indent/typst.vim @saccarosium runtime/indent/vroom.vim @dbarnett runtime/indent/wast.vim @rhysd runtime/indent/xml.vim @chrisbra diff --git a/runtime/autoload/typst.vim b/runtime/autoload/typst.vim index 6d097dd922..362da3f45e 100644 --- a/runtime/autoload/typst.vim +++ b/runtime/autoload/typst.vim @@ -1,6 +1,7 @@ " Language: Typst -" Maintainer: Gregory Anders -" Last Change: 2024 Nov 02 +" Previous Maintainer: Gregory Anders +" Maintainer: Luca Saccarola +" Last Change: 2024 Dec 09 " Based on: https://github.com/kaarmu/typst.vim function! typst#indentexpr() abort diff --git a/runtime/compiler/typst.vim b/runtime/compiler/typst.vim index 33e55818e9..13699f4675 100644 --- a/runtime/compiler/typst.vim +++ b/runtime/compiler/typst.vim @@ -1,7 +1,8 @@ " Vim compiler file " Language: Typst -" Maintainer: Gregory Anders -" Last Change: 2024-07-14 +" Previous Maintainer: Gregory Anders +" Maintainer: Luca Saccarola +" Last Change: 2024 Dec 09 " Based on: https://github.com/kaarmu/typst.vim if exists('current_compiler') diff --git a/runtime/ftplugin/typst.vim b/runtime/ftplugin/typst.vim index 09b65d0e52..08929bbdbe 100644 --- a/runtime/ftplugin/typst.vim +++ b/runtime/ftplugin/typst.vim @@ -1,7 +1,8 @@ " Vim filetype plugin file " Language: Typst -" Maintainer: Gregory Anders -" Last Change: 2024 Dev 01 +" Previous Maintainer: Gregory Anders +" Maintainer: Luca Saccarola +" Last Change: 2024 Dec 09 " Based on: https://github.com/kaarmu/typst.vim if exists('b:did_ftplugin') @@ -12,8 +13,10 @@ let b:did_ftplugin = 1 setlocal commentstring=//\ %s setlocal comments=s1:/*,mb:*,ex:*/,:// setlocal formatoptions+=croqn +" Numbered Lists setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s* -setlocal formatlistpat+=\\\|^\\s*[-+\]\\s\\+ +" Unordered (-), Ordered (+) and definition (/) Lists +setlocal formatlistpat+=\\\|^\\s*[-+/\]\\s\\+ setlocal suffixesadd=.typ let b:undo_ftplugin = 'setl cms< com< fo< flp< sua<' diff --git a/runtime/indent/typst.vim b/runtime/indent/typst.vim index 6aaa04a53a..c990b968c8 100644 --- a/runtime/indent/typst.vim +++ b/runtime/indent/typst.vim @@ -1,7 +1,8 @@ " Vim indent file " Language: Typst -" Maintainer: Gregory Anders -" Last Change: 2024-07-14 +" Previous Maintainer: Gregory Anders +" Maintainer: Luca Saccarola +" Last Change: 2024 Dec 09 " Based on: https://github.com/kaarmu/typst.vim if exists('b:did_indent') diff --git a/runtime/syntax/typst.vim b/runtime/syntax/typst.vim index dae1424780..b1f05ec853 100644 --- a/runtime/syntax/typst.vim +++ b/runtime/syntax/typst.vim @@ -1,7 +1,8 @@ " Vim syntax file " Language: Typst -" Maintainer: Gregory Anders -" Last Change: 2024 Nov 02 +" Previous Maintainer: Gregory Anders +" Maintainer: Luca Saccarola +" Last Change: 2024 Dec 09 " Based on: https://github.com/kaarmu/typst.vim if exists('b:current_syntax') From eed63f96d26723ff31a9728647eed526d06a553d Mon Sep 17 00:00:00 2001 From: Gary Johnson Date: Mon, 9 Dec 2024 21:03:48 +0100 Subject: [PATCH 093/244] patch 9.1.0917: various vartabstop and shiftround bugs when shifting lines Problem: various vartabstop and shiftround bugs when shifting lines Solution: Fix the bugs, add new tests for shifting lines in various ways (Gary Johnson) fixes: #14891 closes: #16193 Signed-off-by: Gary Johnson Signed-off-by: Christian Brabandt --- src/ops.c | 172 +++++++- src/testdir/test_shift.vim | 801 +++++++++++++++++++++++++++++++++++++ src/version.c | 2 + 3 files changed, 957 insertions(+), 18 deletions(-) diff --git a/src/ops.c b/src/ops.c index eb8f64c1fb..a75efab59e 100644 --- a/src/ops.c +++ b/src/ops.c @@ -218,25 +218,57 @@ op_shift(oparg_T *oap, int curs_top, int amount) } } +#ifdef FEAT_VARTABS /* - * Shift the current line one shiftwidth left (if left != 0) or right - * leaves cursor on first blank in the line. + * Return the tabstop width at the index of the variable tabstop array. If an + * index greater than the length of the array is given, the last tabstop width + * in the array is returned. */ - void -shift_line( - int left, - int round, - int amount, - int call_changed_bytes) // call changed_bytes() + static int +get_vts(int *vts_array, int index) { - vimlong_T count; - int i, j; - int sw_val = trim_to_int(get_sw_value_indent(curbuf, left)); + int ts; + + if (index < 1) + ts = 0; + else if (index <= vts_array[0]) + ts = vts_array[index]; + else + ts = vts_array[vts_array[0]]; + + return ts; +} - if (sw_val == 0) - sw_val = 1; // shouldn't happen, just in case +/* + * Return the sum of all the tabstops through the index-th. + */ + static int +get_vts_sum(int *vts_array, int index) +{ + int sum = 0; + int i; + + // Perform the summation for indeces within the actual array. + for (i = 1; i <= index && i <= vts_array[0]; i++) + sum += vts_array[i]; + + // Add topstops whose indeces exceed the actual array. + if (i <= index) + sum += vts_array[vts_array[0]] * (index - vts_array[0]); + + return sum; +} +#endif - count = get_indent(); // get current indent + static vimlong_T +get_new_sw_indent( + int left, // TRUE if shift is to the left + int round, // TRUE if new indent is to be to a tabstop + vimlong_T amount, // Number of shifts + vimlong_T sw_val) +{ + vimlong_T count = get_indent(); + vimlong_T i, j; if (round) // round off indent { @@ -252,19 +284,123 @@ shift_line( } else i += amount; - count = (vimlong_T)i * (vimlong_T)sw_val; + count = i * sw_val; } - else // original vi indent + else // original vi indent { if (left) { - count -= (vimlong_T)sw_val * (vimlong_T)amount; + count -= sw_val * amount; if (count < 0) count = 0; } else - count += (vimlong_T)sw_val * (vimlong_T)amount; + count += sw_val * amount; + } + + return count; +} + +#ifdef FEAT_VARTABS + static vimlong_T +get_new_vts_indent( + int left, // TRUE if shift is to the left + int round, // TRUE if new indent is to be to a tabstop + int amount, // Number of shifts + int *vts_array) +{ + vimlong_T indent = get_indent(); + int vtsi = 0; + int vts_indent = 0; + int ts = 0; // Silence uninitialized variable warning. + int offset; // Extra indent spaces to the right of the + // tabstop + + // Find the tabstop at or to the left of the current indent. + while (vts_indent <= indent) + { + vtsi++; + ts = get_vts(vts_array, vtsi); + vts_indent += ts; } + vts_indent -= ts; + vtsi--; + + offset = indent - vts_indent; + + if (round) + { + if (left) + { + if (offset == 0) + indent = get_vts_sum(vts_array, vtsi - amount); + else + indent = get_vts_sum(vts_array, vtsi - (amount - 1)); + } + else + indent = get_vts_sum(vts_array, vtsi + amount); + } + else + { + if (left) + { + if (amount > vtsi) + indent = 0; + else + indent = get_vts_sum(vts_array, vtsi - amount) + offset; + } + else + indent = get_vts_sum(vts_array, vtsi + amount) + offset; + } + + return indent; +} +#endif + +/* + * Shift the current line 'amount' shiftwidth(s) left (if 'left' is TRUE) or + * right. + * + * The rules for choosing a shiftwidth are: If 'shiftwidth' is non-zero, use + * 'shiftwidth'; else if 'vartabstop' is not empty, use 'vartabstop'; else use + * 'tabstop'. The Vim documentation says nothing about 'softtabstop' or + * 'varsofttabstop' affecting the shiftwidth, and neither affects the + * shiftwidth in current versions of Vim, so they are not considered here. + */ + void +shift_line( + int left, // TRUE if shift is to the left + int round, // TRUE if new indent is to be to a tabstop + int amount, // Number of shifts + int call_changed_bytes) // call changed_bytes() +{ + vimlong_T count; + long sw_val = curbuf->b_p_sw; + long ts_val = curbuf->b_p_ts; +#ifdef FEAT_VARTABS + int *vts_array = curbuf->b_p_vts_array; +#endif + + if (sw_val != 0) + // 'shiftwidth' is not zero; use it as the shift size. + count = get_new_sw_indent(left, round, amount, sw_val); + else +#ifdef FEAT_VARTABS + if ((vts_array == NULL) || (vts_array[0] == 0)) +#endif + { + // 'shiftwidth is zero and 'vartabstop' is empty; use 'tabstop' as the + // shift size. + count = get_new_sw_indent(left, round, amount, ts_val); + } +#ifdef FEAT_VARTABS + else + { + // 'shiftwidth is zero and 'vartabstop' is defined; use 'vartabstop' + // to determine the new indent. + count = get_new_vts_indent(left, round, amount, vts_array); + } +#endif // Set new indent if (State & VREPLACE_FLAG) diff --git a/src/testdir/test_shift.vim b/src/testdir/test_shift.vim index 370082fa59..f31c5a11e6 100644 --- a/src/testdir/test_shift.vim +++ b/src/testdir/test_shift.vim @@ -112,4 +112,805 @@ func Test_ex_shift_errors() call assert_fails('2,1<', 'E493:') endfunc +" Test inserting a backspace at the start of a line. +" +" This is to verify the proper behavior of tabstop_start() as called from +" ins_bs(). +" +func Test_shift_ins_bs() + set backspace=indent,start + set softtabstop=11 + + call setline(1, repeat(" ", 33) . "word") + exe "norm! I\" + call assert_equal(repeat(" ", 22) . "word", getline(1)) + call setline(1, repeat(" ", 23) . "word") + exe "norm! I\" + call assert_equal(repeat(" ", 22) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 11) . "word", getline(1)) + + set backspace& softtabstop& + bw! +endfunc + +" Test inserting a backspace at the start of a line, with 'varsofttabstop'. +" +func Test_shift_ins_bs_vartabs() + CheckFeature vartabs + set backspace=indent,start + set varsofttabstop=13,11,7 + + call setline(1, repeat(" ", 44) . "word") + exe "norm! I\" + call assert_equal(repeat(" ", 38) . "word", getline(1)) + call setline(1, repeat(" ", 39) . "word") + exe "norm! I\" + call assert_equal(repeat(" ", 38) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 31) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 24) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 13) . "word", getline(1)) + exe "norm! I\" + call assert_equal( "word", getline(1)) + exe "norm! I\" + call assert_equal( "word", getline(1)) + + set backspace& varsofttabstop& + bw! +endfunc + +" Test the >> and << normal-mode commands. +" +func Test_shift_norm() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=5 + set tabstop=7 + + call setline(1, " word") + + " Shift by 'shiftwidth' right and left. + + norm! >> + call assert_equal(repeat(" ", 7) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 12) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 17) . "word", getline(1)) + + norm! << + call assert_equal(repeat(" ", 12) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 7) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, " word") + + norm! >> + call assert_equal(repeat(" ", 9) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 16) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 23) . "word", getline(1)) + + norm! << + call assert_equal(repeat(" ", 16) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 9) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& tabstop& + bw! +endfunc + +" Test the >> and << normal-mode commands, with 'vartabstop'. +" +func Test_shift_norm_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, " word") + + norm! >> + call assert_equal(repeat(" ", 21) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 38) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 49) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 60) . "word", getline(1)) + + norm! << + call assert_equal(repeat(" ", 49) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 38) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 21) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& vartabstop& + bw! +endfunc + +" Test the >> and << normal-mode commands with 'shiftround'. +" +func Test_shift_norm_round() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftround + set shiftwidth=5 + set tabstop=7 + + call setline(1, "word") + + " Shift by 'shiftwidth' right and left. + + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 5) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 10) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 15) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 20) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 25) . "word", getline(1)) + + norm! << + call assert_equal(repeat(" ", 20) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 15) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 10) . "word", getline(1)) + exe "norm! I " + norm! << + call assert_equal(repeat(" ", 10) . "word", getline(1)) + + call setline(1, repeat(" ", 7) . "word") + norm! << + call assert_equal(repeat(" ", 5) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + call setline(1, repeat(" ", 2) . "word") + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, "word") + + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 7) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 14) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 21) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 28) . "word", getline(1)) + norm! >> + call assert_equal(repeat(" ", 35) . "word", getline(1)) + + norm! << + call assert_equal(repeat(" ", 28) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 21) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 14) . "word", getline(1)) + exe "norm! I " + norm! << + call assert_equal(repeat(" ", 14) . "word", getline(1)) + + call setline(1, repeat(" ", 9) . "word") + norm! << + call assert_equal(repeat(" ", 7) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + call setline(1, repeat(" ", 2) . "word") + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftround& shiftwidth& tabstop& + bw! +endfunc + +" Test the >> and << normal-mode commands with 'shiftround' and 'vartabstop'. +" +func Test_shift_norm_round_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftround + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, "word") + + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 36) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 47) . "word", getline(1)) + exe "norm! I " + norm! >> + call assert_equal(repeat(" ", 58) . "word", getline(1)) + + exe "norm! I " + norm! << + call assert_equal(repeat(" ", 58) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 47) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 36) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I " + norm! << + call assert_equal(repeat(" ", 19) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + exe "norm! I " + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftround& shiftwidth& vartabstop& + bw! +endfunc + +" Test the V> and V< visual-mode commands. +" +" See ":help v_<" and ":help v_>". See also the last paragraph of "3. Simple +" changes", ":help simple-change", immediately above "4. Complex changes", +" ":help complex-change". +" +func Test_shift_vis() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=5 + set tabstop=7 + + call setline(1, " word") + + " Shift by 'shiftwidth' right and left. + + norm! V> + call assert_equal(repeat(" ", 7) . "word", getline(1)) + norm! V2> + call assert_equal(repeat(" ", 17) . "word", getline(1)) + norm! V3> + call assert_equal(repeat(" ", 32) . "word", getline(1)) + + norm! V< + call assert_equal(repeat(" ", 27) . "word", getline(1)) + norm! V2< + call assert_equal(repeat(" ", 17) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, " word") + + norm! V> + call assert_equal(repeat(" ", 9) . "word", getline(1)) + norm! V2> + call assert_equal(repeat(" ", 23) . "word", getline(1)) + norm! V3> + call assert_equal(repeat(" ", 44) . "word", getline(1)) + + norm! V< + call assert_equal(repeat(" ", 37) . "word", getline(1)) + norm! V2< + call assert_equal(repeat(" ", 23) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& tabstop& + bw! +endfunc + +" Test the V> and V< visual-mode commands, with 'vartabstop'. +" +" See ":help v_<" and ":help v_>". See also the last paragraph of "3. Simple +" changes", ":help simple-change", immediately above "4. Complex changes", +" ":help complex-change". +" +func Test_shift_vis_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, " word") + + norm! V> + call assert_equal(repeat(" ", 21) . "word", getline(1)) + norm! V2> + call assert_equal(repeat(" ", 49) . "word", getline(1)) + norm! V3> + call assert_equal(repeat(" ", 82) . "word", getline(1)) + + norm! V< + call assert_equal(repeat(" ", 71) . "word", getline(1)) + norm! V2< + call assert_equal(repeat(" ", 49) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 2) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& vartabstop& + bw! +endfunc + +" Test the V> and V< visual-mode commands with 'shiftround'. +" +func Test_shift_vis_round() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftround + set shiftwidth=5 + set tabstop=7 + + call setline(1, "word") + + " Shift by 'shiftwidth' right and left. + + exe "norm! I " + norm! V> + call assert_equal(repeat(" ", 5) . "word", getline(1)) + exe "norm! I " + norm! V2> + call assert_equal(repeat(" ", 15) . "word", getline(1)) + exe "norm! I " + norm! V3> + call assert_equal(repeat(" ", 30) . "word", getline(1)) + + exe "norm! I " + norm! V2< + call assert_equal(repeat(" ", 25) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 10) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 5) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, "word") + + exe "norm! I " + norm! V> + call assert_equal(repeat(" ", 7) . "word", getline(1)) + exe "norm! I " + norm! V2> + call assert_equal(repeat(" ", 21) . "word", getline(1)) + exe "norm! I " + norm! V3> + call assert_equal(repeat(" ", 42) . "word", getline(1)) + + exe "norm! I " + norm! V< + call assert_equal(repeat(" ", 42) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 35) . "word", getline(1)) + norm! V2< + call assert_equal(repeat(" ", 21) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + call setline(1, " word") + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + + set expandtab& shiftround& shiftwidth& tabstop& + bw! +endfunc + +" Test the V> and V< visual-mode commands with 'shiftround' and 'vartabstop'. +" +func Test_shift_vis_round_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftround + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, "word") + + exe "norm! I " + norm! V> + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I " + norm! V3> + call assert_equal(repeat(" ", 58) . "word", getline(1)) + + exe "norm! I " + norm! V2< + call assert_equal(repeat(" ", 47) . "word", getline(1)) + exe "norm! I " + norm! V3< + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I " + norm! V3< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + exe "norm! I " + norm! V< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftround& shiftwidth& vartabstop& + bw! +endfunc + +" Test the :> and :< ex-mode commands. +" +func Test_shift_ex() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=5 + set tabstop=7 + + call setline(1, " word") + + " Shift by 'shiftwidth' right and left. + + > + call assert_equal(repeat(" ", 7) . "word", getline(1)) + >> + call assert_equal(repeat(" ", 17) . "word", getline(1)) + >>> + call assert_equal(repeat(" ", 32) . "word", getline(1)) + + <<<< + call assert_equal(repeat(" ", 12) . "word", getline(1)) + < + call assert_equal(repeat(" ", 7) . "word", getline(1)) + < + call assert_equal(repeat(" ", 2) . "word", getline(1)) + < + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, " word") + + > + call assert_equal(repeat(" ", 9) . "word", getline(1)) + >> + call assert_equal(repeat(" ", 23) . "word", getline(1)) + >>> + call assert_equal(repeat(" ", 44) . "word", getline(1)) + + <<<< + call assert_equal(repeat(" ", 16) . "word", getline(1)) + << + call assert_equal(repeat(" ", 2) . "word", getline(1)) + < + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& tabstop& + bw! +endfunc + +" Test the :> and :< ex-mode commands, with vartabstop. +" +func Test_shift_ex_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, " word") + + > + call assert_equal(repeat(" ", 21) . "word", getline(1)) + >> + call assert_equal(repeat(" ", 49) . "word", getline(1)) + >>> + call assert_equal(repeat(" ", 82) . "word", getline(1)) + + <<<< + call assert_equal(repeat(" ", 38) . "word", getline(1)) + << + call assert_equal(repeat(" ", 2) . "word", getline(1)) + < + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& vartabstop& + bw! +endfunc + +" Test the :> and :< ex-mode commands with 'shiftround'. +" +func Test_shift_ex_round() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftround + set shiftwidth=5 + set tabstop=7 + + call setline(1, "word") + + " Shift by 'shiftwidth' right and left. + + exe "norm! I " + > + call assert_equal(repeat(" ", 5) . "word", getline(1)) + exe "norm! I " + >> + call assert_equal(repeat(" ", 15) . "word", getline(1)) + exe "norm! I " + >>> + call assert_equal(repeat(" ", 30) . "word", getline(1)) + + exe "norm! I " + <<<< + call assert_equal(repeat(" ", 15) . "word", getline(1)) + exe "norm! I " + << + call assert_equal(repeat(" ", 10) . "word", getline(1)) + << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + >> + <<< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, "word") + + exe "norm! I " + > + call assert_equal(repeat(" ", 7) . "word", getline(1)) + exe "norm! I " + >> + call assert_equal(repeat(" ", 21) . "word", getline(1)) + exe "norm! I " + >>> + call assert_equal(repeat(" ", 42) . "word", getline(1)) + + exe "norm! I " + <<<< + call assert_equal(repeat(" ", 21) . "word", getline(1)) + exe "norm! I " + << + call assert_equal(repeat(" ", 14) . "word", getline(1)) + exe "norm! I " + <<< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + >> + <<< + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftround& shiftwidth& tabstop& + bw! +endfunc + +" Test the :> and :< ex-mode commands with 'shiftround' and 'vartabstop'. +" +func Test_shift_ex_round_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftround + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, "word") + + exe "norm! I " + > + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I " + >> + call assert_equal(repeat(" ", 47) . "word", getline(1)) + >>> + call assert_equal(repeat(" ", 80) . "word", getline(1)) + + <<<< + call assert_equal(repeat(" ", 36) . "word", getline(1)) + exe "norm! I " + << + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I " + << + call assert_equal(repeat(" ", 0) . "word", getline(1)) + < + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftround& shiftwidth& vartabstop& + bw! +endfunc + +" Test shifting lines with and . +" +func Test_shift_ins() + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=5 + set tabstop=7 + + " Shift by 'shiftwidth' right and left. + + call setline(1, repeat(" ", 7) . "word") + exe "norm! 9|i\" + call assert_equal(repeat(" ", 10) . "word", getline(1)) + exe "norm! A\" + call assert_equal(repeat(" ", 15) . "word", getline(1)) + exe "norm! I \" + call assert_equal(repeat(" ", 20) . "word", getline(1)) + + exe "norm! I \" + call assert_equal(repeat(" ", 20) . "word", getline(1)) + exe "norm! I " + exe "norm! 24|i\" + call assert_equal(repeat(" ", 20) . "word", getline(1)) + exe "norm! A\" + call assert_equal(repeat(" ", 15) . "word", getline(1)) + exe "norm! I " + exe "norm! A\\" + call assert_equal(repeat(" ", 10) . "word", getline(1)) + exe "norm! I\\\" + call assert_equal(repeat(" ", 0) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + " Shift by 'tabstop' right and left. + + set shiftwidth=0 + call setline(1, "word") + + call setline(1, repeat(" ", 9) . "word") + exe "norm! 11|i\" + call assert_equal(repeat(" ", 14) . "word", getline(1)) + exe "norm! A\" + call assert_equal(repeat(" ", 21) . "word", getline(1)) + exe "norm! I \" + call assert_equal(repeat(" ", 28) . "word", getline(1)) + + exe "norm! I \" + call assert_equal(repeat(" ", 28) . "word", getline(1)) + exe "norm! I " + exe "norm! 32|i\" + call assert_equal(repeat(" ", 28) . "word", getline(1)) + exe "norm! A\" + call assert_equal(repeat(" ", 21) . "word", getline(1)) + exe "norm! I " + exe "norm! A\\" + call assert_equal(repeat(" ", 14) . "word", getline(1)) + exe "norm! I\\\" + call assert_equal(repeat(" ", 0) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& tabstop& + bw! +endfunc + +" Test shifting lines with and , with 'vartabstop'. +" +func Test_shift_ins_vartabs() + CheckFeature vartabs + set expandtab " Don't want to worry about tabs vs. spaces in + " results. + + set shiftwidth=0 + set vartabstop=19,17,11 + + " Shift by 'vartabstop' right and left. + + call setline(1, "word") + + call setline(1, repeat(" ", 9) . "word") + exe "norm! 11|i\" + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! A\" + call assert_equal(repeat(" ", 36) . "word", getline(1)) + exe "norm! I \" + call assert_equal(repeat(" ", 47) . "word", getline(1)) + + exe "norm! I \" + call assert_equal(repeat(" ", 47) . "word", getline(1)) + exe "norm! I " + exe "norm! 51|i\" + call assert_equal(repeat(" ", 47) . "word", getline(1)) + exe "norm! A\" + call assert_equal(repeat(" ", 36) . "word", getline(1)) + exe "norm! I " + exe "norm! A\\" + call assert_equal(repeat(" ", 19) . "word", getline(1)) + exe "norm! I\\\" + call assert_equal(repeat(" ", 0) . "word", getline(1)) + exe "norm! I\" + call assert_equal(repeat(" ", 0) . "word", getline(1)) + + set expandtab& shiftwidth& vartabstop& + bw! +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 5933af3b89..96b3803fa8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 917, /**/ 916, /**/ From dff3c9c1a789351a741b6a430862c8b2a0eff383 Mon Sep 17 00:00:00 2001 From: 826814741_6 <44406129+826814741-6@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:15:14 +0100 Subject: [PATCH 094/244] patch 9.1.0918: tiny Vim crashes with fuzzy buffer completion Problem: tiny Vim crashes with fuzzy buffer completion Solution: Adjust #ifdefs in ExpandBufnames() (826814741_6) closes: #16200 Signed-off-by: h-east Signed-off-by: 826814741_6 <44406129+826814741-6@users.noreply.github.com> Signed-off-by: Christian Brabandt --- src/buffer.c | 4 ++-- src/testdir/Make_all.mak | 6 ++++-- src/testdir/test29.in | 14 ++++++++++++++ src/testdir/test29.ok | 1 + src/version.c | 2 ++ 5 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/testdir/test29.in create mode 100644 src/testdir/test29.ok diff --git a/src/buffer.c b/src/buffer.c index 3b05f25d7f..147d20dc78 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2985,9 +2985,9 @@ ExpandBufnames( vim_free(patc); } -#ifdef FEAT_VIMINFO if (!fuzzy) { +#ifdef FEAT_VIMINFO if (matches != NULL) { int i; @@ -3007,13 +3007,13 @@ ExpandBufnames( } vim_free(matches); } +#endif } else { if (fuzzymatches_to_strmatches(fuzmatch, file, count, FALSE) == FAIL) return FAIL; } -#endif *num_file = count; return (count == 0 ? FAIL : OK); diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index bdf058c1ec..7285354838 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -21,7 +21,8 @@ SCRIPTS_TINY = \ test25 \ test26 \ test27 \ - test28 + test28 \ + test29 SCRIPTS_TINY_OUT = \ test10.out \ @@ -33,7 +34,8 @@ SCRIPTS_TINY_OUT = \ test25.out \ test26.out \ test27.out \ - test28.out + test28.out \ + test29.out # Tests for Vim9 script. TEST_VIM9 = \ diff --git a/src/testdir/test29.in b/src/testdir/test29.in new file mode 100644 index 0000000000..047803c60f --- /dev/null +++ b/src/testdir/test29.in @@ -0,0 +1,14 @@ +Test for buffer name completion when 'wildoptions' contains "fuzzy" +(Confirm that Vim does not crash) + +STARTTEST +:set wildoptions=fuzzy +:new buf_a +:b buf_a +:q! +:set wildoptions& +:$w! test.out +:qa! +ENDTEST + +I'm alive! diff --git a/src/testdir/test29.ok b/src/testdir/test29.ok new file mode 100644 index 0000000000..6a0a7c9451 --- /dev/null +++ b/src/testdir/test29.ok @@ -0,0 +1 @@ +I'm alive! diff --git a/src/version.c b/src/version.c index 96b3803fa8..4fb60ac6e3 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 918, /**/ 917, /**/ From 5c42c7731536418c53273932d7ef76b80b001f38 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 12 Dec 2024 19:13:08 +0100 Subject: [PATCH 095/244] runtime(netrw): do not pollute search history with symlinks fixes: #16206 Signed-off-by: Christian Brabandt --- runtime/autoload/netrw.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index b90a8d672f..b0dfd823c7 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -40,6 +40,7 @@ " 2024 Nov 23 by Vim Project: fix powershell escaping issues (#16094) " 2024 Dec 04 by Vim Project: do not detach for gvim (#16168) " 2024 Dec 08 by Vim Project: check the first arg of netrw_browsex_viewer for being executable (#16185) +" 2024 Dec 12 by Vim Project: do not pollute the search history (#16206) " }}} " Former Maintainer: Charles E Campbell " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim @@ -11774,7 +11775,8 @@ endfun " s:ShowLink: used to modify thin and tree listings to show links {{{2 fun! s:ShowLink() if exists("b:netrw_curdir") - norm! $?\a + keepp :norm! $?\a + "call histdel("/",-1) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treetop") let basedir = s:NetrwTreePath(w:netrw_treetop) else From d66d68763d0947c292a9fdda4da6fda3650fa563 Mon Sep 17 00:00:00 2001 From: "Wu, Zhenyu" Date: Thu, 12 Dec 2024 19:31:54 +0100 Subject: [PATCH 096/244] patch 9.1.0919: filetype: some assembler files are not recognized Problem: filetype: some assembler are files not recognized Solution: detect '*.nasm' files as nasm filetype and '*.masm' as masm filetype (Wu, Zhenyu) closes: #16194 Signed-off-by: Wu, Zhenyu Signed-off-by: Christian Brabandt --- runtime/doc/syntax.txt | 9 ++++++--- runtime/filetype.vim | 9 ++++++++- src/testdir/test_filetype.vim | 3 +++ src/version.c | 2 ++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index b0c77db1d4..eb6c3b2336 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2024 Nov 10 +*syntax.txt* For Vim version 9.1. Last change: 2024 Dec 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -883,12 +883,15 @@ There are many types of assembly languages that all use the same file name extensions. Therefore you will have to select the type yourself, or add a line in the assembly file that Vim will recognize. Currently these syntax files are included: - asm GNU assembly (the default) + asm GNU assembly (usually have .s or .S extension and were + already built using C compiler such as GCC or CLANG) asm68k Motorola 680x0 assembly asmh8300 Hitachi H-8300 version of GNU assembly ia64 Intel Itanium 64 fasm Flat assembly (http://flatassembler.net) - masm Microsoft assembly (probably works for any 80x86) + masm Microsoft assembly (.masm files are compiled with + Microsoft's Macro Assembler. This is only supported + for x86, x86_64, ARM and AARCH64 CPU families) nasm Netwide assembly tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and MMX) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index fe12047783..cac7c2ca42 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: The Vim Project -" Last Change: 2024 Nov 24 +" Last Change: 2024 Dec 12 " Former Maintainer: Bram Moolenaar " Listen very carefully, I will say this only once @@ -183,8 +183,15 @@ au BufNewFile,BufRead *.demo,*.dm{1,2,3,t},*.wxm,maxima-init.mac setf maxima " Assembly (all kinds) " *.lst is not pure assembly, it has two extra columns (address, byte codes) +" *.[sS], *.[aA] usually Assembly - GNU au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm() +" Assembly - Netwide +au BufNewFile,BufRead *.nasm setf nasm + +" Assembly - Microsoft +au BufNewFile,BufRead *.masm setf masm + " Assembly - Macro (VAX) au BufNewFile,BufRead *.mar setf vmasm diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 2dc0f4961b..e9535bf033 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -113,6 +113,7 @@ def s:GetFilenameChecks(): dict> arduino: ['file.ino', 'file.pde'], art: ['file.art'], asciidoc: ['file.asciidoc', 'file.adoc'], + asm: ['file.s', 'file.S', 'file.a', 'file.A'], asn: ['file.asn', 'file.asn1'], asterisk: ['asterisk/file.conf', 'asterisk/file.conf-file', 'some-asterisk/file.conf', 'some-asterisk/file.conf-file'], astro: ['file.astro'], @@ -456,6 +457,7 @@ def s:GetFilenameChecks(): dict> map: ['file.map'], maple: ['file.mv', 'file.mpl', 'file.mws'], markdown: ['file.markdown', 'file.mdown', 'file.mkd', 'file.mkdn', 'file.mdwn', 'file.md'], + masm: ['file.masm'], mason: ['file.mason', 'file.mhtml'], master: ['file.mas', 'file.master'], matlab: ['file.m'], @@ -532,6 +534,7 @@ def s:GetFilenameChecks(): dict> n1ql: ['file.n1ql', 'file.nql'], named: ['namedfile.conf', 'rndcfile.conf', 'named-file.conf', 'named.conf', 'rndc-file.conf', 'rndc-file.key', 'rndc.conf', 'rndc.key'], nanorc: ['/etc/nanorc', 'file.nanorc', 'any/etc/nanorc'], + nasm: ['file.nasm'], natural: ['file.NSA', 'file.NSC', 'file.NSG', 'file.NSL', 'file.NSM', 'file.NSN', 'file.NSP', 'file.NSS'], ncf: ['file.ncf'], neomuttlog: ['/home/user/.neomuttdebug1'], diff --git a/src/version.c b/src/version.c index 4fb60ac6e3..50596585c3 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 919, /**/ 918, /**/ From 95a03fc321dcb9d6958ac508dbfb85f8e7752836 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Fri, 13 Dec 2024 11:54:54 +0100 Subject: [PATCH 097/244] patch 9.1.0920: Vim9: compile_assignment() too long Problem: Vim9: compile_assignment() too long Solution: refactor compile_assignment() function and split up into smaller parts (Yegappan Lakshmanan) closes: #16209 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/version.c | 2 + src/vim9compile.c | 1053 ++++++++++++++++++++++++++------------------- 2 files changed, 623 insertions(+), 432 deletions(-) diff --git a/src/version.c b/src/version.c index 50596585c3..1c38b6211e 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 920, /**/ 919, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index e75462f0b4..64e2195997 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -2391,11 +2391,11 @@ compile_load_lhs_with_index(lhs_T *lhs, char_u *var_start, cctx_T *cctx) */ int compile_assign_unlet( - char_u *var_start, - lhs_T *lhs, - int is_assign, - type_T *rhs_type, - cctx_T *cctx) + char_u *var_start, + lhs_T *lhs, + int is_assign, + type_T *rhs_type, + cctx_T *cctx) { vartype_T dest_type; int range = FALSE; @@ -2599,7 +2599,7 @@ push_default_value( * Returns OK on success. */ static int -compile_assignment_obj_new_arg(char_u **argp, cctx_T *cctx) +compile_assign_obj_new_arg(char_u **argp, cctx_T *cctx) { char_u *arg = *argp; @@ -2621,17 +2621,57 @@ compile_assignment_obj_new_arg(char_u **argp, cctx_T *cctx) } /* - * Convert the increment (++) or decrement (--) operator to the corresponding - * compound operator. + * Compile assignment context. Used when compiling an assignment statement. + */ +typedef struct cac_S cac_T; +struct cac_S +{ + cmdidx_T cac_cmdidx; // assignment command + char_u *cac_nextc; // next character to parse + lhs_T cac_lhs; // lhs of the assignment + type_T *cac_rhs_type; // rhs type of an assignment + char_u *cac_op; // assignment operator + int cac_oplen; // assignment operator length + char_u *cac_var_start; // start of the variable names + char_u *cac_var_end; // end of the variable names + int cac_var_count; // number of variables in assignment + int cac_var_idx; // variable index in a list + int cac_semicolon; // semicolon in [var1, var2; var3] + garray_T *cac_instr; + int cac_instr_count; + int cac_incdec; + int cac_did_generate_slice; + int cac_is_decl; + int cac_is_const; + int cac_start_lnum; + type_T *cac_inferred_type; + int cac_skip_store; +}; + +/* + * Initialize the compile assignment context. + */ + static void +compile_assign_context_init(cac_T *cac, cctx_T *cctx, int cmdidx, char_u *arg) +{ + CLEAR_FIELD(*cac); + cac->cac_cmdidx = cmdidx; + cac->cac_instr = &cctx->ctx_instr; + cac->cac_rhs_type = &t_any; + cac->cac_is_decl = is_decl_command(cmdidx); + cac->cac_start_lnum = SOURCING_LNUM; + cac->cac_instr_count = -1; + cac->cac_var_end = arg; +} + +/* + * Translate the increment (++) and decrement (--) operators to the + * corresponding compound operators (+= or -=). * * Returns OK on success and FAIL on syntax error. */ static int -incdec_op_translate( - exarg_T *eap, - char_u **op, - int *oplen, - int *incdec) +translate_incdec_op(exarg_T *eap, cac_T *cac) { if (VIM_ISWHITE(eap->cmd[2])) { @@ -2639,9 +2679,56 @@ incdec_op_translate( eap->cmdidx == CMD_increment ? "++" : "--", eap->cmd); return FAIL; } - *op = (char_u *)(eap->cmdidx == CMD_increment ? "+=" : "-="); - *oplen = 2; - *incdec = TRUE; + cac->cac_op = (char_u *)(eap->cmdidx == CMD_increment ? "+=" : "-="); + cac->cac_oplen = 2; + cac->cac_incdec = TRUE; + + return OK; +} + +/* + * Process the operator in an assignment statement. + */ + static int +compile_assign_process_operator( + exarg_T *eap, + char_u *arg, + cac_T *cac, + int *heredoc, + char_u **retstr) +{ + *retstr = NULL; + + if (eap->cmdidx == CMD_increment || eap->cmdidx == CMD_decrement) + { + // Change an unary operator to a compound operator + if (translate_incdec_op(eap, cac) == FAIL) + return FAIL; + } + else + { + char_u *sp; + + sp = cac->cac_nextc; + cac->cac_nextc = skipwhite(cac->cac_nextc); + cac->cac_op = cac->cac_nextc; + cac->cac_oplen = assignment_len(cac->cac_nextc, heredoc); + + if (cac->cac_var_count > 0 && cac->cac_oplen == 0) + { + // can be something like "[1, 2]->func()" + *retstr = arg; + return FAIL; + } + + // need white space before and after the operator + if (cac->cac_oplen > 0 && (!VIM_ISWHITE(*sp) + || !IS_WHITE_OR_NUL(cac->cac_op[cac->cac_oplen]))) + { + error_white_both(cac->cac_op, cac->cac_oplen); + return FAIL; + } + } return OK; } @@ -2651,519 +2738,621 @@ incdec_op_translate( * beginning of the heredoc content. */ static char_u * -heredoc_assign_stmt_end_get(char_u *p, exarg_T *eap, cctx_T *cctx) +parse_heredoc_assignment(exarg_T *eap, cctx_T *cctx, cac_T *cac) { // [let] varname =<< [trim] {end} eap->ea_getline = exarg_getline; eap->cookie = cctx; - list_T *l = heredoc_get(eap, p + 3, FALSE, TRUE); + list_T *l = heredoc_get(eap, cac->cac_nextc + 3, FALSE, TRUE); if (l == NULL) return NULL; list_free(l); - p += STRLEN(p); + cac->cac_nextc += STRLEN(cac->cac_nextc); - return p; + return cac->cac_nextc; } +/* + * Evaluate the expression for "[var, var] = expr" assignment. + * A line break may follow the assignment operator "=". + */ static char_u * -compile_list_assignment( - char_u *p, - char_u *op, - int oplen, - int var_count, - int semicolon, - garray_T *instr, - type_T **rhs_type, - cctx_T *cctx) +compile_list_assignment_expr(cctx_T *cctx, cac_T *cac) { char_u *wp; - // for "[var, var] = expr" evaluate the expression here, loop over the - // list of variables below. - // A line break may follow the "=". + wp = cac->cac_op + cac->cac_oplen; - wp = op + oplen; - if (may_get_next_line_error(wp, &p, cctx) == FAIL) + if (may_get_next_line_error(wp, &cac->cac_nextc, cctx) == FAIL) return NULL; - if (compile_expr0(&p, cctx) == FAIL) + + if (compile_expr0(&cac->cac_nextc, cctx) == FAIL) return NULL; - if (cctx->ctx_skip != SKIP_YES) - { - type_T *stacktype; - int needed_list_len; - int did_check = FALSE; + if (cctx->ctx_skip == SKIP_YES) + // no need to parse more when skipping + return cac->cac_nextc; + + type_T *stacktype; + int needed_list_len; + int did_check = FALSE; - stacktype = cctx->ctx_type_stack.ga_len == 0 ? &t_void + stacktype = cctx->ctx_type_stack.ga_len == 0 ? &t_void : get_type_on_stack(cctx, 0); - if (stacktype->tt_type == VAR_VOID) - { - emsg(_(e_cannot_use_void_value)); - return NULL; - } - if (need_type(stacktype, &t_list_any, FALSE, -1, 0, cctx, FALSE, - FALSE) == FAIL) - return NULL; - // If a constant list was used we can check the length right here. - needed_list_len = semicolon ? var_count - 1 : var_count; - if (instr->ga_len > 0) - { - isn_T *isn = ((isn_T *)instr->ga_data) + instr->ga_len - 1; + if (stacktype->tt_type == VAR_VOID) + { + emsg(_(e_cannot_use_void_value)); + return NULL; + } - if (isn->isn_type == ISN_NEWLIST) + if (need_type(stacktype, &t_list_any, FALSE, -1, 0, cctx, + FALSE, FALSE) == FAIL) + return NULL; + + // If a constant list was used we can check the length right here. + needed_list_len = cac->cac_semicolon + ? cac->cac_var_count - 1 + : cac->cac_var_count; + if (cac->cac_instr->ga_len > 0) + { + isn_T *isn = ((isn_T *)cac->cac_instr->ga_data) + + cac->cac_instr->ga_len - 1; + + if (isn->isn_type == ISN_NEWLIST) + { + did_check = TRUE; + if (cac->cac_semicolon ? isn->isn_arg.number < + needed_list_len + : isn->isn_arg.number != needed_list_len) { - did_check = TRUE; - if (semicolon ? isn->isn_arg.number < needed_list_len - : isn->isn_arg.number != needed_list_len) - { - semsg(_(e_expected_nr_items_but_got_nr), - needed_list_len, (int)isn->isn_arg.number); - return NULL; - } + semsg(_(e_expected_nr_items_but_got_nr), + needed_list_len, (int)isn->isn_arg.number); + return NULL; } } - if (!did_check) - generate_CHECKLEN(cctx, needed_list_len, semicolon); - if (stacktype->tt_member != NULL) - *rhs_type = stacktype->tt_member; } - return p; + if (!did_check) + generate_CHECKLEN(cctx, needed_list_len, cac->cac_semicolon); + + if (stacktype->tt_member != NULL) + cac->cac_rhs_type = stacktype->tt_member; + + return cac->cac_nextc; } /* - * Compile declaration and assignment: - * "let name" - * "var name = expr" - * "final name = expr" - * "const name = expr" - * "name = expr" - * "arg" points to "name". - * "++arg" and "--arg" - * Return NULL for an error. - * Return "arg" if it does not look like a variable list. + * Find and return the end of a heredoc or a list of variables assignment + * statement. For a single variable assignment statement, returns the current + * end. + * Returns NULL on failure. */ static char_u * -compile_assignment( - char_u *arg_start, - exarg_T *eap, - cmdidx_T cmdidx, - cctx_T *cctx) +compile_assign_compute_end( + exarg_T *eap, + cctx_T *cctx, + cac_T *cac, + int heredoc) { - char_u *arg = arg_start; - char_u *var_start; - char_u *p; - char_u *end = arg; - char_u *ret = NULL; - int var_count = 0; - int var_idx; - int semicolon = 0; - int did_generate_slice = FALSE; - garray_T *instr = &cctx->ctx_instr; - int jump_instr_idx = instr->ga_len; - char_u *op; - int oplen = 0; - int heredoc = FALSE; - int incdec = FALSE; - type_T *rhs_type = &t_any; - char_u *sp; - int is_decl = is_decl_command(cmdidx); - lhs_T lhs; - CLEAR_FIELD(lhs); - long start_lnum = SOURCING_LNUM; + if (heredoc) + { + cac->cac_nextc = parse_heredoc_assignment(eap, cctx, cac); + return cac->cac_nextc; + } + else if (cac->cac_var_count > 0) + { + // for "[var, var] = expr" evaluate the expression. The list of + // variables are processed later. + // A line break may follow the "=". + cac->cac_nextc = compile_list_assignment_expr(cctx, cac); + return cac->cac_nextc; + } - int has_arg_is_set_prefix = STRNCMP(arg, "ifargisset ", 11) == 0; - if (has_arg_is_set_prefix && - compile_assignment_obj_new_arg(&arg, cctx) == FAIL) - goto theend; + return cac->cac_var_end; +} - // Skip over the "varname" or "[varname, varname]" to get to any "=". - p = skip_var_list(arg, TRUE, &var_count, &semicolon, TRUE); - if (p == NULL) - return *arg == '[' ? arg : NULL; +/* + * For "var = expr" evaluate the expression. + */ + static int +compile_assign_single_eval_expr(cctx_T *cctx, cac_T *cac) +{ + int ret = OK; + char_u *wp; + lhs_T *lhs = &cac->cac_lhs; + // Compile the expression. + if (cac->cac_incdec) + return generate_PUSHNR(cctx, 1); - if (eap->cmdidx == CMD_increment || eap->cmdidx == CMD_decrement) + // Temporarily hide the new local variable here, it is + // not available to this expression. + if (lhs->lhs_new_local) + --cctx->ctx_locals.ga_len; + wp = cac->cac_op + cac->cac_oplen; + + if (may_get_next_line_error(wp, &cac->cac_nextc, cctx) == FAIL) { - if (incdec_op_translate(eap, &op, &oplen, &incdec) == FAIL) - return NULL; + if (lhs->lhs_new_local) + ++cctx->ctx_locals.ga_len; + return FAIL; + } + + ret = compile_expr0_ext(&cac->cac_nextc, cctx, &cac->cac_is_const); + if (lhs->lhs_new_local) + ++cctx->ctx_locals.ga_len; + + return ret; +} + +/* + * Compare the LHS type with the RHS type in an assignment. + */ + static int +compile_assign_check_type(cctx_T *cctx, cac_T *cac) +{ + lhs_T *lhs = &cac->cac_lhs; + type_T *rhs_type; + + rhs_type = cctx->ctx_type_stack.ga_len == 0 ? + &t_void : get_type_on_stack(cctx, 0); + cac->cac_rhs_type = rhs_type; + + if (check_type_is_value(rhs_type) == FAIL) + return FAIL; + + if (lhs->lhs_lvar != NULL && (cac->cac_is_decl || !lhs->lhs_has_type)) + { + if ((rhs_type->tt_type == VAR_FUNC + || rhs_type->tt_type == VAR_PARTIAL) + && !lhs->lhs_has_index + && var_wrong_func_name(lhs->lhs_name, TRUE)) + return FAIL; + + if (lhs->lhs_new_local && !lhs->lhs_has_type) + { + if (rhs_type->tt_type == VAR_VOID) + { + emsg(_(e_cannot_use_void_value)); + return FAIL; + } + else + { + type_T *type; + + // An empty list or dict has a &t_unknown member, + // for a variable that implies &t_any. + if (rhs_type == &t_list_empty) + type = &t_list_any; + else if (rhs_type == &t_dict_empty) + type = &t_dict_any; + else if (rhs_type == &t_unknown) + type = &t_any; + else + { + type = rhs_type; + cac->cac_inferred_type = rhs_type; + } + set_var_type(lhs->lhs_lvar, type, cctx); + } + } + else if (*cac->cac_op == '=') + { + type_T *use_type = lhs->lhs_lvar->lv_type; + where_T where = WHERE_INIT; + + // Without operator check type here, otherwise below. + // Use the line number of the assignment. + SOURCING_LNUM = cac->cac_start_lnum; + if (cac->cac_var_count > 0) + { + where.wt_index = cac->cac_var_idx + 1; + where.wt_kind = WT_VARIABLE; + } + // If assigning to a list or dict member, use the + // member type. Not for "list[:] =". + if (lhs->lhs_has_index && + !has_list_index(cac->cac_var_start + + lhs->lhs_varlen, cctx)) + use_type = lhs->lhs_member_type; + if (need_type_where(rhs_type, use_type, FALSE, -1, + where, cctx, FALSE, cac->cac_is_const) == FAIL) + return FAIL; + } } else { - sp = p; - p = skipwhite(p); - op = p; - oplen = assignment_len(p, &heredoc); + type_T *lhs_type = lhs->lhs_member_type; - if (var_count > 0 && oplen == 0) - // can be something like "[1, 2]->func()" - return arg; + // Special case: assigning to @# can use a number or a + // string. + // Also: can assign a number to a float. + if ((lhs_type == &t_number_or_string || lhs_type == &t_float) + && rhs_type->tt_type == VAR_NUMBER) + lhs_type = &t_number; + if (*cac->cac_nextc != '=' && need_type(rhs_type, + lhs_type, FALSE, -1, 0, cctx, FALSE, FALSE) == FAIL) + return FAIL; + } + + return OK; +} + +/* + * Compile the RHS expression in an assignment + */ + static int +compile_assign_rhs(cctx_T *cctx, cac_T *cac) +{ + lhs_T *lhs = &cac->cac_lhs; - if (oplen > 0 && (!VIM_ISWHITE(*sp) || !IS_WHITE_OR_NUL(op[oplen]))) + if (cctx->ctx_skip == SKIP_YES) + { + if (cac->cac_oplen > 0 && cac->cac_var_count == 0) { - error_white_both(op, oplen); - return NULL; + // skip over the "=" and the expression + cac->cac_nextc = skipwhite(cac->cac_op + cac->cac_oplen); + (void)compile_expr0(&cac->cac_nextc, cctx); } + return OK; } - if (heredoc) + if (cac->cac_oplen > 0) { - p = heredoc_assign_stmt_end_get(p, eap, cctx); - if (p == NULL) - return NULL; - end = p; + cac->cac_is_const = FALSE; + + // for "+=", "*=", "..=" etc. first load the current value + if (*cac->cac_op != '=' + && compile_load_lhs_with_index(&cac->cac_lhs, + cac->cac_var_start, + cctx) == FAIL) + return FAIL; + + // For "var = expr" evaluate the expression. + if (cac->cac_var_count == 0) + { + int ret; + + // Compile the expression. + cac->cac_instr_count = cac->cac_instr->ga_len; + ret = compile_assign_single_eval_expr(cctx, cac); + if (ret == FAIL) + return FAIL; + } + else if (cac->cac_semicolon && + cac->cac_var_idx == cac->cac_var_count - 1) + { + // For "[var; var] = expr" get the rest of the list + cac->cac_did_generate_slice = TRUE; + if (generate_SLICE(cctx, cac->cac_var_count - 1) == FAIL) + return FAIL; + } + else + { + // For "[var, var] = expr" get the "var_idx" item from the + // list. + if (generate_GETITEM(cctx, cac->cac_var_idx, + *cac->cac_op != '=') == FAIL) + return FAIL; + } + + if (compile_assign_check_type(cctx, cac) == FAIL) + return FAIL; + + return OK; } - else if (var_count > 0) + + if (cac->cac_cmdidx == CMD_final) { - // "[var, var] = expr" - p = compile_list_assignment(p, op, oplen, var_count, semicolon, - instr, &rhs_type, cctx); - if (p == NULL) - goto theend; - end = p; + emsg(_(e_final_requires_a_value)); + return FAIL; } - /* - * Loop over variables in "[var, var] = expr". - * For "var = expr" and "let var: type" this is done only once. - */ - if (var_count > 0) - var_start = skipwhite(arg + 1); // skip over the "[" + if (cac->cac_cmdidx == CMD_const) + { + emsg(_(e_const_requires_a_value)); + return FAIL; + } + + if (!lhs->lhs_has_type || lhs->lhs_dest == dest_option + || lhs->lhs_dest == dest_func_option) + { + emsg(_(e_type_or_initialization_required)); + return FAIL; + } + + // variables are always initialized + if (GA_GROW_FAILS(cac->cac_instr, 1)) + return FAIL; + + cac->cac_instr_count = cac->cac_instr->ga_len; + + return push_default_value(cctx, lhs->lhs_member_type->tt_type, + lhs->lhs_dest == dest_local, + &cac->cac_skip_store); +} + +/* + * Compile a compound op assignment statement (+=, -=, *=, %=, etc.) + */ + static int +compile_assign_compound_op(cctx_T *cctx, cac_T *cac) +{ + lhs_T *lhs = &cac->cac_lhs; + type_T *expected; + type_T *stacktype = NULL; + + if (*cac->cac_op == '.') + { + if (may_generate_2STRING(-1, TOSTRING_NONE, cctx) == FAIL) + return FAIL; + } else - var_start = arg; - for (var_idx = 0; var_idx == 0 || var_idx < var_count; var_idx++) { - int instr_count = -1; - int save_lnum; - int skip_store = FALSE; - type_T *inferred_type = NULL; + expected = lhs->lhs_member_type; + stacktype = get_type_on_stack(cctx, 0); + if ( + // If variable is float operation with number is OK. + !(expected == &t_float && (stacktype == &t_number + || stacktype == &t_number_bool)) + && need_type(stacktype, expected, TRUE, -1, 0, cctx, + FALSE, FALSE) == FAIL) + return FAIL; + } + + if (*cac->cac_op == '.') + { + if (generate_CONCAT(cctx, 2) == FAIL) + return FAIL; + } + else if (*cac->cac_op == '+') + { + if (generate_add_instr(cctx, + operator_type(lhs->lhs_member_type, stacktype), + lhs->lhs_member_type, stacktype, + EXPR_APPEND) == FAIL) + return FAIL; + } + else if (generate_two_op(cctx, cac->cac_op) == FAIL) + return FAIL; + + return OK; +} + +/* + * Generate the STORE and SETTYPE instructions for an assignment statement. + */ + static int +compile_assign_generate_store(cctx_T *cctx, cac_T *cac) +{ + lhs_T *lhs = &cac->cac_lhs; + int save_lnum; + + // Use the line number of the assignment for store instruction. + save_lnum = cctx->ctx_lnum; + cctx->ctx_lnum = cac->cac_start_lnum - 1; + + if (lhs->lhs_has_index) + { + // Use the info in "lhs" to store the value at the index in the + // list, dict or object. + if (compile_assign_unlet(cac->cac_var_start, &cac->cac_lhs, + TRUE, cac->cac_rhs_type, cctx) == FAIL) + { + cctx->ctx_lnum = save_lnum; + return FAIL; + } + } + else + { + if (cac->cac_is_decl && cac->cac_cmdidx == CMD_const && + (lhs->lhs_dest == dest_script + || lhs->lhs_dest == dest_script_v9 + || lhs->lhs_dest == dest_global + || lhs->lhs_dest == dest_local)) + // ":const var": lock the value, but not referenced variables + generate_LOCKCONST(cctx); + + type_T *inferred_type = cac->cac_inferred_type; + + if ((lhs->lhs_type->tt_type == VAR_DICT + || lhs->lhs_type->tt_type == VAR_LIST) + && lhs->lhs_type->tt_member != NULL + && lhs->lhs_type->tt_member != &t_any + && lhs->lhs_type->tt_member != &t_unknown) + // Set the type in the list or dict, so that it can be checked, + // also in legacy script. + generate_SETTYPE(cctx, lhs->lhs_type); + else if (inferred_type != NULL + && (inferred_type->tt_type == VAR_DICT + || inferred_type->tt_type == VAR_LIST) + && inferred_type->tt_member != NULL + && inferred_type->tt_member != &t_unknown + && inferred_type->tt_member != &t_any) + // Set the type in the list or dict, so that it can be checked, + // also in legacy script. + generate_SETTYPE(cctx, inferred_type); - if (var_start[0] == '_' && !eval_isnamec(var_start[1])) + if (!cac->cac_skip_store && + generate_store_lhs(cctx, &cac->cac_lhs, + cac->cac_instr_count, + cac->cac_is_decl) == FAIL) + { + cctx->ctx_lnum = save_lnum; + return FAIL; + } + } + + cctx->ctx_lnum = save_lnum; + return OK; +} + +/* + * Process the variable(s) in an assignment statement + */ + static int +compile_assign_process_variables( + cctx_T *cctx, + cac_T *cac, + int cmdidx, + int heredoc, + int has_cmd, + int has_argisset_prefix, + int jump_instr_idx) +{ + for (cac->cac_var_idx = 0; cac->cac_var_idx == 0 || + cac->cac_var_idx < cac->cac_var_count; cac->cac_var_idx++) + { + if (cac->cac_var_start[0] == '_' + && !eval_isnamec(cac->cac_var_start[1])) { // Ignore underscore in "[a, _, b] = list". - if (var_count > 0) + if (cac->cac_var_count > 0) { - var_start = skipwhite(var_start + 2); + cac->cac_var_start = skipwhite(cac->cac_var_start + 2); continue; } emsg(_(e_cannot_use_underscore_here)); - goto theend; + return FAIL; } - vim_free(lhs.lhs_name); + vim_free(cac->cac_lhs.lhs_name); /* * Figure out the LHS type and other properties. */ - if (compile_assign_lhs(var_start, &lhs, cmdidx, - is_decl, heredoc, var_start > eap->cmd, - oplen, cctx) == FAIL) - goto theend; + if (compile_assign_lhs(cac->cac_var_start, &cac->cac_lhs, cmdidx, + cac->cac_is_decl, heredoc, has_cmd, + cac->cac_oplen, cctx) == FAIL) + return FAIL; + + // Compile the RHS expression if (heredoc) { - SOURCING_LNUM = start_lnum; - if (lhs.lhs_has_type - && need_type(&t_list_string, lhs.lhs_type, FALSE, - -1, 0, cctx, FALSE, FALSE) == FAIL) - goto theend; + SOURCING_LNUM = cac->cac_start_lnum; + if (cac->cac_lhs.lhs_has_type + && need_type(&t_list_string, cac->cac_lhs.lhs_type, + FALSE, -1, 0, cctx, FALSE, FALSE) == FAIL) + return FAIL; } else { - if (cctx->ctx_skip == SKIP_YES) - { - if (oplen > 0 && var_count == 0) - { - // skip over the "=" and the expression - p = skipwhite(op + oplen); - (void)compile_expr0(&p, cctx); - } - } - else if (oplen > 0) - { - int is_const = FALSE; - char_u *wp; - - // for "+=", "*=", "..=" etc. first load the current value - if (*op != '=' - && compile_load_lhs_with_index(&lhs, var_start, - cctx) == FAIL) - goto theend; - - // For "var = expr" evaluate the expression. - if (var_count == 0) - { - int r; - - // Compile the expression. - instr_count = instr->ga_len; - if (incdec) - { - r = generate_PUSHNR(cctx, 1); - } - else - { - // Temporarily hide the new local variable here, it is - // not available to this expression. - if (lhs.lhs_new_local) - --cctx->ctx_locals.ga_len; - wp = op + oplen; - if (may_get_next_line_error(wp, &p, cctx) == FAIL) - { - if (lhs.lhs_new_local) - ++cctx->ctx_locals.ga_len; - goto theend; - } - r = compile_expr0_ext(&p, cctx, &is_const); - if (lhs.lhs_new_local) - ++cctx->ctx_locals.ga_len; - } - if (r == FAIL) - goto theend; - } - else if (semicolon && var_idx == var_count - 1) - { - // For "[var; var] = expr" get the rest of the list - did_generate_slice = TRUE; - if (generate_SLICE(cctx, var_count - 1) == FAIL) - goto theend; - } - else - { - // For "[var, var] = expr" get the "var_idx" item from the - // list. - if (generate_GETITEM(cctx, var_idx, *op != '=') == FAIL) - goto theend; - } - - rhs_type = cctx->ctx_type_stack.ga_len == 0 ? &t_void - : get_type_on_stack(cctx, 0); - if (check_type_is_value(rhs_type) == FAIL) - goto theend; - if (lhs.lhs_lvar != NULL && (is_decl || !lhs.lhs_has_type)) - { - if ((rhs_type->tt_type == VAR_FUNC - || rhs_type->tt_type == VAR_PARTIAL) - && !lhs.lhs_has_index - && var_wrong_func_name(lhs.lhs_name, TRUE)) - goto theend; - - if (lhs.lhs_new_local && !lhs.lhs_has_type) - { - if (rhs_type->tt_type == VAR_VOID) - { - emsg(_(e_cannot_use_void_value)); - goto theend; - } - else - { - type_T *type; - - // An empty list or dict has a &t_unknown member, - // for a variable that implies &t_any. - if (rhs_type == &t_list_empty) - type = &t_list_any; - else if (rhs_type == &t_dict_empty) - type = &t_dict_any; - else if (rhs_type == &t_unknown) - type = &t_any; - else - { - type = rhs_type; - inferred_type = rhs_type; - } - set_var_type(lhs.lhs_lvar, type, cctx); - } - } - else if (*op == '=') - { - type_T *use_type = lhs.lhs_lvar->lv_type; - where_T where = WHERE_INIT; - - // Without operator check type here, otherwise below. - // Use the line number of the assignment. - SOURCING_LNUM = start_lnum; - if (var_count > 0) - { - where.wt_index = var_idx + 1; - where.wt_kind = WT_VARIABLE; - } - // If assigning to a list or dict member, use the - // member type. Not for "list[:] =". - if (lhs.lhs_has_index - && !has_list_index(var_start + lhs.lhs_varlen, - cctx)) - use_type = lhs.lhs_member_type; - if (need_type_where(rhs_type, use_type, FALSE, -1, - where, cctx, FALSE, is_const) == FAIL) - goto theend; - } - } - else - { - type_T *lhs_type = lhs.lhs_member_type; - - // Special case: assigning to @# can use a number or a - // string. - // Also: can assign a number to a float. - if ((lhs_type == &t_number_or_string - || lhs_type == &t_float) - && rhs_type->tt_type == VAR_NUMBER) - lhs_type = &t_number; - if (*p != '=' && need_type(rhs_type, lhs_type, FALSE, - -1, 0, cctx, FALSE, FALSE) == FAIL) - goto theend; - } - } - else if (cmdidx == CMD_final) - { - emsg(_(e_final_requires_a_value)); - goto theend; - } - else if (cmdidx == CMD_const) - { - emsg(_(e_const_requires_a_value)); - goto theend; - } - else if (!lhs.lhs_has_type || lhs.lhs_dest == dest_option - || lhs.lhs_dest == dest_func_option) - { - emsg(_(e_type_or_initialization_required)); - goto theend; - } - else - { - // variables are always initialized - if (GA_GROW_FAILS(instr, 1)) - goto theend; - instr_count = instr->ga_len; - int r = push_default_value(cctx, lhs.lhs_member_type->tt_type, - lhs.lhs_dest == dest_local, &skip_store); - if (r == FAIL) - goto theend; - } - if (var_count == 0) - end = p; + if (compile_assign_rhs(cctx, cac) == FAIL) + return FAIL; + if (cac->cac_var_count == 0) + cac->cac_var_end = cac->cac_nextc; } // no need to parse more when skipping if (cctx->ctx_skip == SKIP_YES) break; - if (oplen > 0 && *op != '=') + if (cac->cac_oplen > 0 && *cac->cac_op != '=') { - type_T *expected; - type_T *stacktype = NULL; - - if (*op == '.') - { - if (may_generate_2STRING(-1, TOSTRING_NONE, cctx) == FAIL) - goto theend; - } - else - { - expected = lhs.lhs_member_type; - stacktype = get_type_on_stack(cctx, 0); - if ( - // If variable is float operation with number is OK. - !(expected == &t_float && (stacktype == &t_number - || stacktype == &t_number_bool)) - && need_type(stacktype, expected, TRUE, -1, 0, cctx, - FALSE, FALSE) == FAIL) - goto theend; - } - - if (*op == '.') - { - if (generate_CONCAT(cctx, 2) == FAIL) - goto theend; - } - else if (*op == '+') - { - if (generate_add_instr(cctx, - operator_type(lhs.lhs_member_type, stacktype), - lhs.lhs_member_type, stacktype, - EXPR_APPEND) == FAIL) - goto theend; - } - else if (generate_two_op(cctx, op) == FAIL) - goto theend; + if (compile_assign_compound_op(cctx, cac) == FAIL) + return FAIL; } - // Use the line number of the assignment for store instruction. - save_lnum = cctx->ctx_lnum; - cctx->ctx_lnum = start_lnum - 1; - - if (lhs.lhs_has_index) - { - // Use the info in "lhs" to store the value at the index in the - // list, dict or object. - if (compile_assign_unlet(var_start, &lhs, TRUE, rhs_type, cctx) - == FAIL) - { - cctx->ctx_lnum = save_lnum; - goto theend; - } - } - else - { - if (is_decl && cmdidx == CMD_const && (lhs.lhs_dest == dest_script - || lhs.lhs_dest == dest_script_v9 - || lhs.lhs_dest == dest_global - || lhs.lhs_dest == dest_local)) - // ":const var": lock the value, but not referenced variables - generate_LOCKCONST(cctx); - - if ((lhs.lhs_type->tt_type == VAR_DICT - || lhs.lhs_type->tt_type == VAR_LIST) - && lhs.lhs_type->tt_member != NULL - && lhs.lhs_type->tt_member != &t_any - && lhs.lhs_type->tt_member != &t_unknown) - // Set the type in the list or dict, so that it can be checked, - // also in legacy script. - generate_SETTYPE(cctx, lhs.lhs_type); - else if (inferred_type != NULL - && (inferred_type->tt_type == VAR_DICT - || inferred_type->tt_type == VAR_LIST) - && inferred_type->tt_member != NULL - && inferred_type->tt_member != &t_unknown - && inferred_type->tt_member != &t_any) - // Set the type in the list or dict, so that it can be checked, - // also in legacy script. - generate_SETTYPE(cctx, inferred_type); - - if (!skip_store && generate_store_lhs(cctx, &lhs, - instr_count, is_decl) == FAIL) - { - cctx->ctx_lnum = save_lnum; - goto theend; - } - } - cctx->ctx_lnum = save_lnum; + // generate the store instructions + if (compile_assign_generate_store(cctx, cac) == FAIL) + return FAIL; - if (var_idx + 1 < var_count) - var_start = skipwhite(lhs.lhs_end + 1); + if (cac->cac_var_idx + 1 < cac->cac_var_count) + cac->cac_var_start = skipwhite(cac->cac_lhs.lhs_end + 1); - if (has_arg_is_set_prefix) + if (has_argisset_prefix) { // set instruction index in JUMP_IF_ARG_SET to here - isn_T *isn = ((isn_T *)instr->ga_data) + jump_instr_idx; - isn->isn_arg.jumparg.jump_where = instr->ga_len; + isn_T *isn = ((isn_T *)cac->cac_instr->ga_data) + jump_instr_idx; + isn->isn_arg.jumparg.jump_where = cac->cac_instr->ga_len; } } + return OK; +} + +/* + * Compile declaration and assignment: + * "let name" + * "var name = expr" + * "final name = expr" + * "const name = expr" + * "name = expr" + * "arg" points to "name". + * "++arg" and "--arg" + * Return NULL for an error. + * Return "arg" if it does not look like a variable list. + */ + static char_u * +compile_assignment( + char_u *arg_start, + exarg_T *eap, + cmdidx_T cmdidx, + cctx_T *cctx) +{ + cac_T cac; + char_u *arg = arg_start; + char_u *ret = NULL; + int heredoc = FALSE; + int jump_instr_idx; + + compile_assign_context_init(&cac, cctx, cmdidx, arg); + + jump_instr_idx = cac.cac_instr->ga_len; + + // process object variable initialization in a new() constructor method + int has_argisset_prefix = STRNCMP(arg, "ifargisset ", 11) == 0; + if (has_argisset_prefix && + compile_assign_obj_new_arg(&arg, cctx) == FAIL) + goto theend; + + // Skip over the "varname" or "[varname, varname]" to get to any "=". + cac.cac_nextc = skip_var_list(arg, TRUE, &cac.cac_var_count, + &cac.cac_semicolon, TRUE); + if (cac.cac_nextc == NULL) + return *arg == '[' ? arg : NULL; + + char_u *retstr; + if (compile_assign_process_operator(eap, arg, &cac, &heredoc, + &retstr) == FAIL) + return retstr; + + // Compute the end of the assignment + cac.cac_var_end = compile_assign_compute_end(eap, cctx, &cac, heredoc); + if (cac.cac_var_end == NULL) + return NULL; + + /* + * Loop over variables in "[var, var] = expr". + * For "name = expr" and "var name: type" this is done only once. + */ + if (cac.cac_var_count > 0) + cac.cac_var_start = skipwhite(arg + 1); // skip over the "[" + else + cac.cac_var_start = arg; + + int has_cmd = cac.cac_var_start > eap->cmd; + + /* process the variable(s) */ + if (compile_assign_process_variables(cctx, &cac, cmdidx, heredoc, + has_cmd, has_argisset_prefix, + jump_instr_idx) == FAIL) + goto theend; + // For "[var, var] = expr" drop the "expr" value. // Also for "[var, var; _] = expr". - if (var_count > 0 && (!semicolon || !did_generate_slice)) + if (cac.cac_var_count > 0 && + (!cac.cac_semicolon || !cac.cac_did_generate_slice)) { if (generate_instr_drop(cctx, ISN_DROP, 1) == NULL) goto theend; } - ret = skipwhite(end); + ret = skipwhite(cac.cac_var_end); theend: - vim_free(lhs.lhs_name); + vim_free(cac.cac_lhs.lhs_name); return ret; } From c942f84aadffd0c8969ecf81e3e9103722b2714f Mon Sep 17 00:00:00 2001 From: glepnir Date: Fri, 13 Dec 2024 12:13:23 +0100 Subject: [PATCH 098/244] patch 9.1.0921: popupmenu logic is a bit convoluted Problem: popupmenu logic is a bit convoluted Solution: slightly refactor logic and use MIN/MAX() macros to simplify (glepnir) Define the MAX/MIN macros. Since we support some older platforms, C compilers may not be as smart. This helps reduce unnecessary if statements and redundant ternary expressions. Pre-calculate some expressions by defining variables. Remove unnecessary parentheses. Adjust certain lines to avoid exceeding 80 columns. closes: #16205 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/ex_getln.c | 4 --- src/popupmenu.c | 83 ++++++++++++++++--------------------------------- src/version.c | 2 ++ 3 files changed, 28 insertions(+), 61 deletions(-) diff --git a/src/ex_getln.c b/src/ex_getln.c index 60e9641626..163c474dbb 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -13,10 +13,6 @@ #include "vim.h" -#ifndef MAX -# define MAX(x,y) ((x) > (y) ? (x) : (y)) -#endif - // Return value when handling keys in command-line mode. #define CMDLINE_NOT_CHANGED 1 #define CMDLINE_CHANGED 2 diff --git a/src/popupmenu.c b/src/popupmenu.c index be8016f627..1856b6be58 100644 --- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -100,6 +100,9 @@ pum_display( int cursor_col; int above_row; int below_row; + int cline_visible_offset; + int content_width; + int right_edge_col; int redo_count = 0; #if defined(FEAT_QUICKFIX) win_T *pvwin; @@ -150,10 +153,7 @@ pum_display( /* * Figure out the size and position of the pum. */ - if (size < PUM_DEF_HEIGHT) - pum_height = size; - else - pum_height = PUM_DEF_HEIGHT; + pum_height = MIN(size, PUM_DEF_HEIGHT); if (p_ph > 0 && pum_height > p_ph) pum_height = p_ph; @@ -168,13 +168,8 @@ pum_display( // for cmdline pum, no need for context lines context_lines = 0; else - { // Leave two lines of context if possible - if (curwin->w_wrow - curwin->w_cline_row >= 2) - context_lines = 2; - else - context_lines = curwin->w_wrow - curwin->w_cline_row; - } + context_lines = MIN(2, curwin->w_wrow - curwin->w_cline_row); if (pum_win_row >= size + context_lines) { @@ -203,19 +198,13 @@ pum_display( { // Leave two lines of context if possible validate_cheight(); - if (curwin->w_cline_row - + curwin->w_cline_height - curwin->w_wrow >= 3) - context_lines = 3; - else - context_lines = curwin->w_cline_row - + curwin->w_cline_height - curwin->w_wrow; + cline_visible_offset = curwin->w_cline_row + + curwin->w_cline_height - curwin->w_wrow; + context_lines = MIN(3, cline_visible_offset); } pum_row = pum_win_row + context_lines; - if (size > below_row - pum_row) - pum_height = below_row - pum_row; - else - pum_height = size; + pum_height = MIN(below_row - pum_row, size); if (p_ph > 0 && pum_height > p_ph) pum_height = p_ph; } @@ -284,15 +273,10 @@ pum_display( #endif pum_width = Columns - pum_col - pum_scrollbar; - if (pum_width > max_width + pum_kind_width + pum_extra_width + 1 - && pum_width > p_pw) - { - // the width is more than needed for the items, make it - // narrower - pum_width = max_width + pum_kind_width + pum_extra_width + 1; - if (pum_width < p_pw) - pum_width = p_pw; - } + content_width = max_width + pum_kind_width + pum_extra_width + 1; + if (pum_width > content_width && pum_width > p_pw) + // Reduce width to fit item + pum_width = MAX(content_width , p_pw); else if (((cursor_col > p_pw || cursor_col > max_width) #ifdef FEAT_RIGHTLEFT && !pum_rl) @@ -313,14 +297,10 @@ pum_display( else if (!pum_rl) #endif { - if (curwin->w_wincol > Columns - max_width - pum_scrollbar - && max_width <= p_pw) - { + right_edge_col = Columns - max_width - pum_scrollbar; + if (curwin->w_wincol > right_edge_col && max_width <= p_pw) // use full width to end of the screen - pum_col = Columns - max_width - pum_scrollbar; - if (pum_col < 0) - pum_col = 0; - } + pum_col = MAX(0, right_edge_col); } #ifdef FEAT_RIGHTLEFT @@ -346,15 +326,8 @@ pum_display( pum_width = Columns - pum_col - 1; } } - else if (pum_width > max_width + pum_kind_width - + pum_extra_width + 1 - && pum_width > p_pw) - { - pum_width = max_width + pum_kind_width - + pum_extra_width + 1; - if (pum_width < p_pw) - pum_width = p_pw; - } + else if (pum_width > content_width && pum_width > p_pw) + pum_width = MIN(content_width, p_pw); } } @@ -823,14 +796,14 @@ pum_redraw(void) if (pum_rl) { screen_fill(row, row + 1, pum_col - basic_width - n + 1, - col + 1, ' ', ' ', orig_attr); + col + 1, ' ', ' ', orig_attr); col = pum_col - basic_width - n; } else #endif { screen_fill(row, row + 1, col, pum_col + basic_width + n, - ' ', ' ', orig_attr); + ' ', ' ', orig_attr); col = pum_col + basic_width + n; } totwidth = basic_width + n; @@ -839,11 +812,11 @@ pum_redraw(void) #ifdef FEAT_RIGHTLEFT if (pum_rl) screen_fill(row, row + 1, pum_col - pum_width + 1, col + 1, ' ', - ' ', orig_attr); + ' ', orig_attr); else #endif screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ', - orig_attr); + orig_attr); if (pum_scrollbar > 0) { #ifdef FEAT_RIGHTLEFT @@ -998,8 +971,7 @@ pum_set_selected(int n, int repeat UNUSED) } } // adjust for the number of lines displayed - if (pum_first > pum_size - pum_height) - pum_first = pum_size - pum_height; + pum_first = MIN(pum_first, pum_size - pum_height); #if defined(FEAT_QUICKFIX) /* @@ -1322,8 +1294,7 @@ pum_may_redraw(void) if (pum_in_same_position()) { - // window position didn't change, redraw in the same position - pum_redraw(); + pum_redraw(); // Redraw window in same position } else { @@ -1403,8 +1374,7 @@ pum_position_at_mouse(int min_width) pum_col = mouse_col; else // Not enough space, left align with window. - pum_col = (pum_base_width > min_width - ? min_width : pum_base_width) - 1; + pum_col = MIN(pum_base_width, min_width) - 1; pum_width = pum_col + 1; } else @@ -1416,8 +1386,7 @@ pum_position_at_mouse(int min_width) pum_col = mouse_col; else // Not enough space, right align with window. - pum_col = Columns - (pum_base_width > min_width - ? min_width : pum_base_width); + pum_col = Columns - MIN(pum_base_width, min_width); pum_width = Columns - pum_col; } diff --git a/src/version.c b/src/version.c index 1c38b6211e..1c2398e5c2 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 921, /**/ 920, /**/ From 618c4d36ca92a62212a37e787c202229ceff8537 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Fri, 13 Dec 2024 12:30:20 +0100 Subject: [PATCH 099/244] patch 9.1.0923: wrong MIN macro in popupmenu.c Problem: wrong MIN macro in popupmenu.c (after v9.1.0921) (zeertzjq) Solution: change it to MAX() Co-authored-by: glepnir Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/popupmenu.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/popupmenu.c b/src/popupmenu.c index 1856b6be58..1faabf44fb 100644 --- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -327,7 +327,7 @@ pum_display( } } else if (pum_width > content_width && pum_width > p_pw) - pum_width = MIN(content_width, p_pw); + pum_width = MAX(content_width, p_pw); } } diff --git a/src/version.c b/src/version.c index 1c2398e5c2..47ff826398 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 922, /**/ 921, /**/ From e29c8bafa78847414419522baecd008e287389db Mon Sep 17 00:00:00 2001 From: John Marriott Date: Fri, 13 Dec 2024 13:58:53 +0100 Subject: [PATCH 100/244] patch 9.1.0923: too many strlen() calls in filepath.c Problem: too many strlen() calls in filepath.c Solution: refactor filepath.c and remove calls to STRLEN(), unify dos_expandpath() and unix_expandpath() into a single function closes: #16160 Signed-off-by: John Marriott Signed-off-by: Christian Brabandt --- src/filepath.c | 713 +++++++++++++++++++---------------------- src/os_unix.c | 15 - src/proto/filepath.pro | 1 + src/version.c | 2 + 4 files changed, 333 insertions(+), 398 deletions(-) diff --git a/src/filepath.c b/src/filepath.c index 3dd71bc407..7298842527 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -29,12 +29,11 @@ static int get_short_pathname(char_u **fnamep, char_u **bufp, int *fnamelen) { - int l, len; + int l; WCHAR *newbuf; WCHAR *wfname; - len = MAXPATHL; - newbuf = malloc(len * sizeof(*newbuf)); + newbuf = alloc(MAXPATHL * sizeof(*newbuf)); if (newbuf == NULL) return FAIL; @@ -45,8 +44,8 @@ get_short_pathname(char_u **fnamep, char_u **bufp, int *fnamelen) return FAIL; } - l = GetShortPathNameW(wfname, newbuf, len); - if (l > len - 1) + l = GetShortPathNameW(wfname, newbuf, MAXPATHL); + if (l > MAXPATHL - 1) { // If that doesn't work (not enough space), then save the string // and try again with a new buffer big enough. @@ -105,7 +104,7 @@ shortpath_for_invalid_fname( char_u **bufp, int *fnamelen) { - char_u *short_fname, *save_fname, *pbuf_unused; + char_u *short_fname = NULL, *save_fname = NULL, *pbuf_unused = NULL; char_u *endp, *save_endp; char_u ch; int old_len, len; @@ -115,6 +114,11 @@ shortpath_for_invalid_fname( // Make a copy old_len = *fnamelen; save_fname = vim_strnsave(*fname, old_len); + if (save_fname == NULL) + { + retval = FAIL; + goto theend; + } pbuf_unused = NULL; short_fname = NULL; @@ -139,9 +143,9 @@ shortpath_for_invalid_fname( * resulting path. */ ch = *endp; - *endp = 0; + *endp = NUL; short_fname = save_fname; - len = (int)STRLEN(short_fname) + 1; + len = (int)(endp - save_fname) + 1; if (get_short_pathname(&short_fname, &pbuf_unused, &len) == FAIL) { retval = FAIL; @@ -225,7 +229,7 @@ shortpath_for_partial( if (vim_ispathsep(*p)) ++sepcount; - // Need full path first (use expand_env() to remove a "~/") + // Need full path first (use expand_env_save() to remove a "~/") hasTilde = (**fnamep == '~'); if (hasTilde) pbuf = tfname = expand_env_save(*fnamep); @@ -273,7 +277,7 @@ shortpath_for_partial( // Copy in the string - p indexes into tfname - allocated at pbuf vim_free(*bufp); - *fnamelen = (int)STRLEN(p); + *fnamelen = (int)((tfname + len) - p); *bufp = pbuf; *fnamep = p; @@ -414,7 +418,7 @@ modify_fname( continue; } pbuf = NULL; - // Need full path first (use expand_env() to remove a "~/") + // Need full path first (use expand_env_save() to remove a "~/") if (!has_fullname && !has_homerelative) { if (**fnamep == '~') @@ -505,7 +509,7 @@ modify_fname( if (*fnamelen == 0) { // Result is empty. Turn it into "." to make ":cd %:h" work. - p = vim_strsave((char_u *)"."); + p = vim_strnsave((char_u *)".", 1); if (p == NULL) return -1; vim_free(*bufp); @@ -1544,8 +1548,10 @@ f_mkdir(typval_T *argvars, typval_T *rettv) tv[0].vval.v_string = created; tv[1].v_type = VAR_STRING; tv[1].v_lock = 0; - tv[1].vval.v_string = vim_strsave( - (char_u *)(defer_recurse ? "rf" : "d")); + if (defer_recurse) + tv[1].vval.v_string = vim_strnsave((char_u *)"rf", 2); + else + tv[1].vval.v_string = vim_strnsave((char_u *)"d", 1); if (tv[0].vval.v_string == NULL || tv[1].vval.v_string == NULL || add_defer((char_u *)"delete", 2, tv) == FAIL) { @@ -2058,6 +2064,8 @@ f_resolve(typval_T *argvars, typval_T *rettv) char_u *p; #ifdef HAVE_READLINK char_u *buf = NULL; + char_u *remain = NULL; + int p_was_allocated = FALSE; #endif if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) @@ -2077,110 +2085,166 @@ f_resolve(typval_T *argvars, typval_T *rettv) #else # ifdef HAVE_READLINK { + size_t plen; + size_t buflen; char_u *cpy; - int len; - char_u *remain = NULL; + size_t cpysize; + char_u *r = NULL; // points to current position in "remain" + size_t rlen = 0; // length of r (excluding the NUL) char_u *q; int is_relative_to_current = FALSE; int has_trailing_pathsep = FALSE; int limit = 100; + size_t len; - p = vim_strsave(p); + rettv->vval.v_string = NULL; + + plen = STRLEN(p); + p = vim_strnsave(p, plen); if (p == NULL) goto fail; + + p_was_allocated = TRUE; if (p[0] == '.' && (vim_ispathsep(p[1]) || (p[1] == '.' && (vim_ispathsep(p[2]))))) is_relative_to_current = TRUE; - len = STRLEN(p); - if (len > 1 && after_pathsep(p, p + len)) + if (plen > 1 && after_pathsep(p, p + plen)) { has_trailing_pathsep = TRUE; - p[len - 1] = NUL; // the trailing slash breaks readlink() + p[--plen] = NUL; // the trailing slash breaks readlink() } q = getnextcomp(p); if (*q != NUL) { + char_u *q_prev = q - 1; + + // getnextcomp() finds the first path separator. + // if there is a run of >1 path separators, set all + // but the last in the run to NUL. + while (*q != NUL && vim_ispathsep(*q)) + { + *q_prev = NUL; + q_prev = q; + MB_PTR_ADV(q); + } + q = q_prev; + // Separate the first path component in "p", and keep the // remainder (beginning with the path separator). - remain = vim_strsave(q - 1); - q[-1] = NUL; + rlen = (size_t)(plen - (q - p)); + r = remain = vim_strnsave(q, rlen); + if (remain == NULL) + rlen = 0; + *q = NUL; + plen -= rlen; } buf = alloc(MAXPATHL + 1); if (buf == NULL) - { - vim_free(p); - vim_free(remain); goto fail; - } for (;;) { for (;;) { - len = readlink((char *)p, (char *)buf, MAXPATHL); - if (len <= 0) + ssize_t rv = readlink((char *)p, (char *)buf, MAXPATHL); + if (rv <= 0) break; - buf[len] = NUL; if (limit-- == 0) { - vim_free(p); - vim_free(remain); emsg(_(e_too_many_symbolic_links_cycle)); - rettv->vval.v_string = NULL; goto fail; } + buflen = (size_t)rv; + buf[buflen] = NUL; + // Ensure that the result will have a trailing path separator // if the argument has one. - if (remain == NULL && has_trailing_pathsep) - add_pathsep(buf); + if (remain == NULL && has_trailing_pathsep && !after_pathsep(buf, buf + buflen)) + { + STRCPY(buf + buflen, PATHSEPSTR); + ++buflen; + } // Separate the first path component in the link value and // concatenate the remainders. q = getnextcomp(vim_ispathsep(*buf) ? buf + 1 : buf); if (*q != NUL) { + char_u *q_prev = q - 1; + + // getnextcomp() finds the first path separator. + // if there is a run of >1 path separators, set all + // but the last in the run to NUL. + while (*q != NUL && vim_ispathsep(*q)) + { + *q_prev = NUL; + q_prev = q; + MB_PTR_ADV(q); + } + q = q_prev; + if (remain == NULL) - remain = vim_strsave(q - 1); + { + rlen = (size_t)(buflen - (q - buf)); + r = remain = vim_strnsave(q, rlen); + if (remain == NULL) + rlen = 0; + } else { - cpy = concat_str(q - 1, remain); - if (cpy != NULL) - { - vim_free(remain); - remain = cpy; - } + len = (size_t)(buflen - (q - buf)); + cpysize = (size_t)(len + rlen + 1); // +1 for NUL + cpy = alloc(plen + buflen + 1); + if (cpy == NULL) + goto fail; + + rlen = (size_t)vim_snprintf((char *)cpy, cpysize, "%.*s%s", (int)len, q, r); + vim_free(remain); + r = remain = cpy; } - q[-1] = NUL; + *q = NUL; + buflen = (size_t)(q - buf); } q = gettail(p); if (q > p && *q == NUL) { // Ignore trailing path separator. - p[q - p - 1] = NUL; + plen = (size_t)(q - p - 1); + p[plen] = NUL; q = gettail(p); } if (q > p && !mch_isFullName(buf)) { + char_u *tail; + // symlink is relative to directory of argument - cpy = alloc(STRLEN(p) + STRLEN(buf) + 1); - if (cpy != NULL) - { - STRCPY(cpy, p); - STRCPY(gettail(cpy), buf); - vim_free(p); - p = cpy; - } + cpy = alloc(plen + buflen + 1); + if (cpy == NULL) + goto fail; + + STRCPY(cpy, p); + tail = gettail(cpy); + if (*tail != NUL) + plen -= (size_t)(plen - (tail - cpy)); // remove portion that will be replaced + STRCPY(tail, buf); + vim_free(p); + p = cpy; + plen += buflen; } else { vim_free(p); - p = vim_strsave(buf); + p = vim_strnsave(buf, buflen); + if (p == NULL) + goto fail; + + plen = buflen; } } @@ -2188,20 +2252,29 @@ f_resolve(typval_T *argvars, typval_T *rettv) break; // Append the first path component of "remain" to "p". - q = getnextcomp(remain + 1); - len = q - remain - (*q != NUL); - cpy = vim_strnsave(p, STRLEN(p) + len); - if (cpy != NULL) - { - STRNCAT(cpy, remain, len); - vim_free(p); - p = cpy; - } + q = getnextcomp(r + 1); + len = (size_t)(q - r); + cpysize = (size_t)(plen + len + 1); // +1 for NUL + cpy = alloc(cpysize); + if (cpy == NULL) + goto fail; + + plen = (size_t)vim_snprintf((char *)cpy, cpysize, "%s%.*s", p, (int)len, r); + vim_free(p); + p = cpy; + // Shorten "remain". if (*q != NUL) - STRMOVE(remain, q - 1); + { + r += len; + rlen -= len; + } else + { VIM_CLEAR(remain); + r = NULL; + rlen = 0; + } } // If the result is a relative path name, make it explicitly relative to @@ -2218,12 +2291,14 @@ f_resolve(typval_T *argvars, typval_T *rettv) || vim_ispathsep(p[2])))))) { // Prepend "./". - cpy = concat_str((char_u *)"./", p); - if (cpy != NULL) - { - vim_free(p); - p = cpy; - } + cpysize = plen + 3; // +2 for "./" and +1 for NUL + cpy = alloc(cpysize); + if (cpy == NULL) + goto fail; + + plen = (size_t)vim_snprintf((char *)cpy, cpysize, "./%s", p); + vim_free(p); + p = cpy; } else if (!is_relative_to_current) { @@ -2232,18 +2307,17 @@ f_resolve(typval_T *argvars, typval_T *rettv) while (q[0] == '.' && vim_ispathsep(q[1])) q += 2; if (q > p) - STRMOVE(p, p + 2); + { + mch_memmove(p, p + 2, (plen - 2) + 1); + plen -= 2; + } } } // Ensure that the result will have no trailing path separator // if the argument had none. But keep "/" or "//". - if (!has_trailing_pathsep) - { - q = p + STRLEN(p); - if (after_pathsep(p, q)) - *gettail_sep(p) = NUL; - } + if (!has_trailing_pathsep && after_pathsep(p, p + plen)) + *gettail_sep(p) = NUL; rettv->vval.v_string = p; } @@ -2256,7 +2330,10 @@ f_resolve(typval_T *argvars, typval_T *rettv) #ifdef HAVE_READLINK fail: + if (rettv->vval.v_string == NULL && p_was_allocated) + vim_free(p); vim_free(buf); + vim_free(remain); #endif rettv->v_type = VAR_STRING; } @@ -2964,6 +3041,7 @@ getnextcomp(char_u *fname) { while (*fname && !vim_ispathsep(*fname)) MB_PTR_ADV(fname); + if (*fname) ++fname; return fname; @@ -3116,16 +3194,18 @@ vim_fnamencmp(char_u *x, char_u *y, size_t len) char_u * concat_fnames(char_u *fname1, char_u *fname2, int sep) { + size_t fname1len = STRLEN(fname1); + size_t destsize = fname1len + STRLEN(fname2) + 3; char_u *dest; - dest = alloc(STRLEN(fname1) + STRLEN(fname2) + 3); + dest = alloc(destsize); if (dest == NULL) return NULL; - STRCPY(dest, fname1); - if (sep) - add_pathsep(dest); - STRCAT(dest, fname2); + vim_snprintf((char *)dest, destsize, "%s%s%s", + fname1, + (sep && !after_pathsep(fname1, fname1 + fname1len)) ? PATHSEPSTR : "", + fname2); return dest; } @@ -3136,8 +3216,14 @@ concat_fnames(char_u *fname1, char_u *fname2, int sep) void add_pathsep(char_u *p) { - if (*p != NUL && !after_pathsep(p, p + STRLEN(p))) - STRCAT(p, PATHSEPSTR); + size_t plen; + + if (p == NULL || *p == NUL) + return; + + plen = STRLEN(p); + if (!after_pathsep(p, p + plen)) + STRCPY(p + plen, PATHSEPSTR); } /* @@ -3435,14 +3521,14 @@ expand_backtick( } #endif // VIM_BACKTICK -#if defined(MSWIN) +#if defined(MSWIN) || (defined(UNIX) && !defined(VMS)) || defined(USE_UNIXFILENAME) || defined(PROTO) /* - * File name expansion code for MS-DOS, Win16 and Win32. It's here because + * File name expansion code for Unix, Mac, MS-DOS, Win16 and Win32. It's here because * it's shared between these systems. */ /* - * comparison function for qsort in dos_expandpath() + * comparison function for qsort in unix_expandpath() */ static int pstrcmp(const void *a, const void *b) @@ -3457,33 +3543,35 @@ pstrcmp(const void *a, const void *b) * "path" has backslashes before chars that are not to be expanded, starting * at "path[wildoff]". * Return the number of matches found. - * NOTE: much of this is identical to unix_expandpath(), keep in sync! */ - static int -dos_expandpath( + int +unix_expandpath( garray_T *gap, - char_u *path, - int wildoff, - int flags, // EW_* flags - int didstar) // expanded "**" once already + char_u *path, + int wildoff, + int flags, // EW_* flags + int didstar) // expanded "**" once already { - char_u *buf; - char_u *path_end; - char_u *p, *s, *e; - int start_len = gap->ga_len; - char_u *pat; + char_u *buf; + char_u *path_end; + size_t basepathlen; // length of non-variable portion of the path + size_t wildcardlen; // length of wildcard segment + char_u *p, *s, *e; + int start_len = gap->ga_len; + char_u *pat; regmatch_T regmatch; - int starts_with_dot; - int matches; - int len; - int starstar = FALSE; + int starts_with_dot; + int matches; // number of matches found + int starstar = FALSE; static int stardepth = 0; // depth for "**" expansion - HANDLE hFind = INVALID_HANDLE_VALUE; - WIN32_FIND_DATAW wfb; - WCHAR *wn = NULL; // UCS-2 name, NULL when not used. - char_u *matchname; - int ok; - char_u *p_alt; +#ifdef MSWIN + HANDLE hFind = INVALID_HANDLE_VALUE; + WIN32_FIND_DATAW wfb; + WCHAR *wn = NULL; // UCS-2 name, NULL when not used. +#else + DIR *dirp; +#endif + int ok; // Expanding "**" may take a long time, check for CTRL-C. if (stardepth > 0) @@ -3493,15 +3581,16 @@ dos_expandpath( return 0; } - // Make room for file name. When doing encoding conversion the actual - // length may be quite a bit longer, thus use the maximum possible length. + // Make room for file name. When doing encoding conversion the actual + // length may be quite a bit longer. buf = alloc(MAXPATHL); if (buf == NULL) return 0; /* * Find the first part in the path name that contains a wildcard or a ~1. - * Copy it into buf, including the preceding characters. + * Copy it into "buf", including the preceding characters. + * Note: for unix, when EW_ICASE is set every letter is considered to be a wildcard. */ p = buf; s = buf; @@ -3513,18 +3602,25 @@ dos_expandpath( // be removed by rem_backslash() or file_pat_to_reg_pat() below. if (path_end >= path + wildoff && rem_backslash(path_end)) *p++ = *path_end++; - else if (*path_end == '\\' || *path_end == ':' || *path_end == '/') + else if (vim_ispathsep(*path_end)) { if (e != NULL) break; s = p + 1; } else if (path_end >= path + wildoff - && vim_strchr((char_u *)"*?[~", *path_end) != NULL) +#ifdef MSWIN + && vim_strchr((char_u *)"*?[~", *path_end) != NULL +#else + && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL + || (!p_fic && (flags & EW_ICASE) + && vim_isalpha(PTR2CHAR(path_end)))) +#endif + ) e = p; if (has_mbyte) { - len = (*mb_ptr2len)(path_end); + int len = (*mb_ptr2len)(path_end); STRNCPY(p, path_end, len); p += len; path_end += len; @@ -3535,270 +3631,38 @@ dos_expandpath( e = p; *e = NUL; - // now we have one wildcard component between s and e + // Now we have one wildcard component between "s" and "e". // Remove backslashes between "wildoff" and the start of the wildcard // component. - for (p = buf + wildoff; p < s; ++p) - if (rem_backslash(p)) - { - STRMOVE(p, p + 1); - --e; - --s; - } - - // Check for "**" between "s" and "e". - for (p = s; p < e; ++p) - if (p[0] == '*' && p[1] == '*') - starstar = TRUE; - - starts_with_dot = *s == '.'; - pat = file_pat_to_reg_pat(s, e, NULL, FALSE); - if (pat == NULL) + p = buf + wildoff; + if (p < s) { - vim_free(buf); - return 0; - } + size_t psize = STRLEN(p) + 1; - // compile the regexp into a program - if (flags & (EW_NOERROR | EW_NOTWILD)) - ++emsg_silent; - regmatch.rm_ic = TRUE; // Always ignore case - regmatch.regprog = vim_regcomp(pat, RE_MAGIC); - if (flags & (EW_NOERROR | EW_NOTWILD)) - --emsg_silent; - vim_free(pat); - - if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) - { - vim_free(buf); - return 0; - } - - // remember the pattern or file name being looked for - matchname = vim_strsave(s); - - // If "**" is by itself, this is the first time we encounter it and more - // is following then find matches without any directory. - if (!didstar && stardepth < 100 && starstar && e - s == 2 - && *path_end == '/') - { - STRCPY(s, path_end + 1); - ++stardepth; - (void)dos_expandpath(gap, buf, (int)(s - buf), flags, TRUE); - --stardepth; - } - - // Scan all files in the directory with "dir/ *.*" - STRCPY(s, "*.*"); - wn = enc_to_utf16(buf, NULL); - if (wn != NULL) - hFind = FindFirstFileW(wn, &wfb); - ok = (hFind != INVALID_HANDLE_VALUE); - - while (ok) - { - p = utf16_to_enc(wfb.cFileName, NULL); // p is allocated here - - if (p == NULL) - break; // out of memory - - // Do not use the alternate filename when the file name ends in '~', - // because it picks up backup files: short name for "foo.vim~" is - // "foo~1.vim", which matches "*.vim". - if (*wfb.cAlternateFileName == NUL || p[STRLEN(p) - 1] == '~') - p_alt = NULL; - else - p_alt = utf16_to_enc(wfb.cAlternateFileName, NULL); - - // Ignore entries starting with a dot, unless when asked for. Accept - // all entries found with "matchname". - if ((p[0] != '.' || starts_with_dot - || ((flags & EW_DODOT) - && p[1] != NUL && (p[1] != '.' || p[2] != NUL))) - && (matchname == NULL - || (regmatch.regprog != NULL - && (vim_regexec(®match, p, (colnr_T)0) - || (p_alt != NULL - && vim_regexec(®match, p_alt, (colnr_T)0)))) - || ((flags & EW_NOTWILD) - && fnamencmp(path + (s - buf), p, e - s) == 0))) + do { - STRCPY(s, p); - len = (int)STRLEN(buf); - - if (starstar && stardepth < 100 - && (wfb.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) - { - // For "**" in the pattern first go deeper in the tree to - // find matches. - STRCPY(buf + len, "/**"); - STRCPY(buf + len + 3, path_end); - ++stardepth; - (void)dos_expandpath(gap, buf, len + 1, flags, TRUE); - --stardepth; - } - - STRCPY(buf + len, path_end); - if (mch_has_exp_wildcard(path_end)) - { - // need to expand another component of the path - // remove backslashes for the remaining components only - (void)dos_expandpath(gap, buf, len + 1, flags, FALSE); - } + if (!rem_backslash(p)) + ++p; else { - stat_T sb; - - // no more wildcards, check if there is a match - // remove backslashes for the remaining components only - if (*path_end != 0) - backslash_halve(buf + len + 1); - // add existing file - if ((flags & EW_ALLLINKS) ? mch_lstat((char *)buf, &sb) >= 0 - : mch_getperm(buf) >= 0) - addfile(gap, buf, flags); + mch_memmove(p, p + 1, psize); + --e; + --s; } - } - - vim_free(p_alt); - vim_free(p); - ok = FindNextFileW(hFind, &wfb); + --psize; + } while (p < s); } - FindClose(hFind); - vim_free(wn); - vim_free(buf); - vim_regfree(regmatch.regprog); - vim_free(matchname); - - matches = gap->ga_len - start_len; - if (matches > 0) - qsort(((char_u **)gap->ga_data) + start_len, (size_t)matches, - sizeof(char_u *), pstrcmp); - return matches; -} - - int -mch_expandpath( - garray_T *gap, - char_u *path, - int flags) // EW_* flags -{ - return dos_expandpath(gap, path, 0, flags, FALSE); -} -#endif // MSWIN - -#if (defined(UNIX) && !defined(VMS)) || defined(USE_UNIXFILENAME) \ - || defined(PROTO) -/* - * Unix style wildcard expansion code. - * It's here because it's used both for Unix and Mac. - */ - static int -pstrcmp(const void *a, const void *b) -{ - return (pathcmp(*(char **)a, *(char **)b, -1)); -} - -/* - * Recursively expand one path component into all matching files and/or - * directories. Adds matches to "gap". Handles "*", "?", "[a-z]", "**", etc. - * "path" has backslashes before chars that are not to be expanded, starting - * at "path + wildoff". - * Return the number of matches found. - * NOTE: much of this is identical to dos_expandpath(), keep in sync! - */ - int -unix_expandpath( - garray_T *gap, - char_u *path, - int wildoff, - int flags, // EW_* flags - int didstar) // expanded "**" once already -{ - char_u *buf; - char_u *path_end; - char_u *p, *s, *e; - int start_len = gap->ga_len; - char_u *pat; - regmatch_T regmatch; - int starts_with_dot; - int matches; - int len; - int starstar = FALSE; - static int stardepth = 0; // depth for "**" expansion - - DIR *dirp; - struct dirent *dp; - - // Expanding "**" may take a long time, check for CTRL-C. - if (stardepth > 0) - { - ui_breakcheck(); - if (got_int) - return 0; - } - - // make room for file name (a bit too much to stay on the safe side) - size_t buflen = STRLEN(path) + MAXPATHL; - buf = alloc(buflen); - if (buf == NULL) - return 0; - - /* - * Find the first part in the path name that contains a wildcard. - * When EW_ICASE is set every letter is considered to be a wildcard. - * Copy it into "buf", including the preceding characters. - */ - p = buf; - s = buf; - e = NULL; - path_end = path; - while (*path_end != NUL) - { - // May ignore a wildcard that has a backslash before it; it will - // be removed by rem_backslash() or file_pat_to_reg_pat() below. - if (path_end >= path + wildoff && rem_backslash(path_end)) - *p++ = *path_end++; - else if (*path_end == '/') - { - if (e != NULL) - break; - s = p + 1; - } - else if (path_end >= path + wildoff - && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL - || (!p_fic && (flags & EW_ICASE) - && vim_isalpha(PTR2CHAR(path_end))))) - e = p; - if (has_mbyte) - { - len = (*mb_ptr2len)(path_end); - STRNCPY(p, path_end, len); - p += len; - path_end += len; - } - else - *p++ = *path_end++; - } - e = p; - *e = NUL; - - // Now we have one wildcard component between "s" and "e". - // Remove backslashes between "wildoff" and the start of the wildcard - // component. - for (p = buf + wildoff; p < s; ++p) - if (rem_backslash(p)) - { - STRMOVE(p, p + 1); - --e; - --s; - } + basepathlen = (size_t)(s - buf); + wildcardlen = (size_t)(e - s); // Check for "**" between "s" and "e". for (p = s; p < e; ++p) if (p[0] == '*' && p[1] == '*') + { starstar = TRUE; + break; + } // convert the file pattern to a regexp pattern starts_with_dot = *s == '.'; @@ -3810,10 +3674,14 @@ unix_expandpath( } // compile the regexp into a program +#ifdef MSWIN + regmatch.rm_ic = TRUE; // Always ignore case +#else if (flags & EW_ICASE) - regmatch.rm_ic = TRUE; // 'wildignorecase' set + regmatch.rm_ic = TRUE; // 'wildignorecase' set else - regmatch.rm_ic = p_fic; // ignore case when 'fileignorecase' is set + regmatch.rm_ic = p_fic; // ignore case when 'fileignorecase' is set +#endif if (flags & (EW_NOERROR | EW_NOTWILD)) ++emsg_silent; regmatch.regprog = vim_regcomp(pat, RE_MAGIC); @@ -3829,51 +3697,100 @@ unix_expandpath( // If "**" is by itself, this is the first time we encounter it and more // is following then find matches without any directory. - if (!didstar && stardepth < 100 && starstar && e - s == 2 - && *path_end == '/') + if (!didstar && stardepth < 100 && starstar && wildcardlen == 2 + && *path_end == '/') { STRCPY(s, path_end + 1); ++stardepth; - (void)unix_expandpath(gap, buf, (int)(s - buf), flags, TRUE); + (void)unix_expandpath(gap, buf, (int)basepathlen, flags, TRUE); --stardepth; } +#ifdef MSWIN + // open the directory for scanning + STRCPY(s, "*.*"); + wn = enc_to_utf16(buf, NULL); + if (wn != NULL) + hFind = FindFirstFileW(wn, &wfb); + ok = (hFind != INVALID_HANDLE_VALUE); +#else // open the directory for scanning *s = NUL; dirp = opendir(*buf == NUL ? "." : (char *)buf); + ok = (dirp != NULL); +#endif // Find all matching entries - if (dirp != NULL) + if (ok) { + char_u *d_name; +#ifdef MSWIN + char_u *d_name_alt; + // remember the pattern or file name being looked for + char_u *matchname = vim_strnsave(s, basepathlen); +#else + struct dirent *dp; +#endif + while (!got_int) { +#ifdef MSWIN + d_name = utf16_to_enc(wfb.cFileName, NULL); // p is allocated here + if (d_name == NULL) + break; // out of memory + + // Do not use the alternate filename when the file name ends in '~', + // because it picks up backup files: short name for "foo.vim~" is + // "foo~1.vim", which matches "*.vim". + if (*wfb.cAlternateFileName == NUL || d_name[STRLEN(d_name) - 1] == '~') + d_name_alt = NULL; + else + d_name_alt = utf16_to_enc(wfb.cAlternateFileName, NULL); +#else dp = readdir(dirp); if (dp == NULL) break; - if ((dp->d_name[0] != '.' || starts_with_dot - || ((flags & EW_DODOT) - && dp->d_name[1] != NUL - && (dp->d_name[1] != '.' || dp->d_name[2] != NUL))) - && ((regmatch.regprog != NULL && vim_regexec(®match, - (char_u *)dp->d_name, (colnr_T)0)) + d_name = (char_u *)dp->d_name; +#endif + + // Ignore entries starting with a dot, unless when asked for. For MSWIN accept + // all entries found with "matchname". + if ( + (d_name[0] != '.' || starts_with_dot || ( + (flags & EW_DODOT) && d_name[1] != NUL && + (d_name[1] != '.' || d_name[2] != NUL))) + && ( +#ifdef MSWIN + matchname == NULL || +#endif + (regmatch.regprog != NULL + && vim_regexec(®match, (char_u *)d_name, (colnr_T)0)) +#ifdef MSWIN + || (d_name_alt != NULL + && vim_regexec(®match, d_name_alt, (colnr_T)0)) +#endif || ((flags & EW_NOTWILD) - && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + && fnamencmp(path + basepathlen, d_name, wildcardlen) == 0)) + ) { - vim_strncpy(s, (char_u *)dp->d_name, buflen - (s - buf) - 1); - len = STRLEN(buf); + int len = (int)basepathlen + vim_snprintf((char *)s, (size_t)(MAXPATHL - (basepathlen + 1)), "%s", d_name); - if (starstar && stardepth < 100) + if (starstar && stardepth < 100 +#ifdef MSWIN + && (wfb.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) +#endif + ) { // For "**" in the pattern first go deeper in the tree to // find matches. - vim_snprintf((char *)buf + len, buflen - len, - "/**%s", path_end); + vim_snprintf((char *)buf + len, (size_t)(MAXPATHL - len), + "/**%s", path_end); ++stardepth; (void)unix_expandpath(gap, buf, len + 1, flags, TRUE); --stardepth; } - vim_snprintf((char *)buf + len, buflen - len, "%s", path_end); + vim_snprintf((char *)buf + len, (size_t)(MAXPATHL - len), "%s", path_end); if (mch_has_exp_wildcard(path_end)) // handle more wildcards { // need to expand another component of the path @@ -3890,7 +3807,7 @@ unix_expandpath( backslash_halve(buf + len + 1); // add existing file or symbolic link if ((flags & EW_ALLLINKS) ? mch_lstat((char *)buf, &sb) >= 0 - : mch_getperm(buf) >= 0) + : mch_getperm(buf) >= 0) { #ifdef MACOS_CONVERT size_t precomp_len = STRLEN(buf)+1; @@ -3907,11 +3824,26 @@ unix_expandpath( } } } + +#ifdef MSWIN + vim_free(d_name); + if (!FindNextFileW(hFind, &wfb)) + break; +#endif } +#ifdef MSWIN + FindClose(hFind); + vim_free(matchname); + vim_free(d_name_alt); +#else closedir(dirp); +#endif } +#ifdef MSWIN + vim_free(wn); +#endif vim_free(buf); vim_regfree(regmatch.regprog); @@ -3920,9 +3852,24 @@ unix_expandpath( matches = gap->ga_len - start_len; if (matches > 0 && !got_int) qsort(((char_u **)gap->ga_data) + start_len, matches, - sizeof(char_u *), pstrcmp); + sizeof(char_u *), pstrcmp); return matches; } + +/* + * Expand a path into all matching files and/or directories. Handles "*", + * "?", "[a-z]", "**", etc where appropriate for the platform. + * "path" has backslashes before chars that are not to be expanded. + * Returns the number of matches found. + */ + int +mch_expandpath( + garray_T *gap, + char_u *path, + int flags) // EW_* flags +{ + return unix_expandpath(gap, path, 0, flags, FALSE); +} #endif /* diff --git a/src/os_unix.c b/src/os_unix.c index dc518fc676..ac78733d34 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -6796,21 +6796,6 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted) return result; } -/* - * Expand a path into all matching files and/or directories. Handles "*", - * "?", "[a-z]", "**", etc. - * "path" has backslashes before chars that are not to be expanded. - * Returns the number of matches found. - */ - int -mch_expandpath( - garray_T *gap, - char_u *path, - int flags) // EW_* flags -{ - return unix_expandpath(gap, path, 0, flags, FALSE); -} - /* * mch_expand_wildcards() - this code does wild-card pattern matching using * the shell diff --git a/src/proto/filepath.pro b/src/proto/filepath.pro index 46f51cb36f..1665089e6c 100644 --- a/src/proto/filepath.pro +++ b/src/proto/filepath.pro @@ -56,6 +56,7 @@ int expand_wildcards_eval(char_u **pat, int *num_file, char_u ***file, int flags int expand_wildcards(int num_pat, char_u **pat, int *num_files, char_u ***files, int flags); int match_suffix(char_u *fname); int unix_expandpath(garray_T *gap, char_u *path, int wildoff, int flags, int didstar); +int mch_expandpath(garray_T *gap, char_u *path, int flags); int gen_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, int flags); void addfile(garray_T *gap, char_u *f, int flags); void FreeWild(int count, char_u **files); diff --git a/src/version.c b/src/version.c index 47ff826398..4feba92608 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 923, /**/ 922, /**/ From 6cc3027e544e4389bd665140511a3d347490b102 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Fri, 13 Dec 2024 17:54:33 +0100 Subject: [PATCH 101/244] patch 9.1.0924: patch 9.1.0923 causes issues Problem: patch 9.1.0923 causes issues (Shane-XB-Qian) Solution: back-out the change This reverts commit e29c8bafa78847414419522baecd008e287389db (v9.1.0923) fixes: #16213 related: #16160 Signed-off-by: Christian Brabandt --- src/filepath.c | 713 ++++++++++++++++++++++------------------- src/os_unix.c | 15 + src/proto/filepath.pro | 1 - src/version.c | 2 + 4 files changed, 400 insertions(+), 331 deletions(-) diff --git a/src/filepath.c b/src/filepath.c index 7298842527..3dd71bc407 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -29,11 +29,12 @@ static int get_short_pathname(char_u **fnamep, char_u **bufp, int *fnamelen) { - int l; + int l, len; WCHAR *newbuf; WCHAR *wfname; - newbuf = alloc(MAXPATHL * sizeof(*newbuf)); + len = MAXPATHL; + newbuf = malloc(len * sizeof(*newbuf)); if (newbuf == NULL) return FAIL; @@ -44,8 +45,8 @@ get_short_pathname(char_u **fnamep, char_u **bufp, int *fnamelen) return FAIL; } - l = GetShortPathNameW(wfname, newbuf, MAXPATHL); - if (l > MAXPATHL - 1) + l = GetShortPathNameW(wfname, newbuf, len); + if (l > len - 1) { // If that doesn't work (not enough space), then save the string // and try again with a new buffer big enough. @@ -104,7 +105,7 @@ shortpath_for_invalid_fname( char_u **bufp, int *fnamelen) { - char_u *short_fname = NULL, *save_fname = NULL, *pbuf_unused = NULL; + char_u *short_fname, *save_fname, *pbuf_unused; char_u *endp, *save_endp; char_u ch; int old_len, len; @@ -114,11 +115,6 @@ shortpath_for_invalid_fname( // Make a copy old_len = *fnamelen; save_fname = vim_strnsave(*fname, old_len); - if (save_fname == NULL) - { - retval = FAIL; - goto theend; - } pbuf_unused = NULL; short_fname = NULL; @@ -143,9 +139,9 @@ shortpath_for_invalid_fname( * resulting path. */ ch = *endp; - *endp = NUL; + *endp = 0; short_fname = save_fname; - len = (int)(endp - save_fname) + 1; + len = (int)STRLEN(short_fname) + 1; if (get_short_pathname(&short_fname, &pbuf_unused, &len) == FAIL) { retval = FAIL; @@ -229,7 +225,7 @@ shortpath_for_partial( if (vim_ispathsep(*p)) ++sepcount; - // Need full path first (use expand_env_save() to remove a "~/") + // Need full path first (use expand_env() to remove a "~/") hasTilde = (**fnamep == '~'); if (hasTilde) pbuf = tfname = expand_env_save(*fnamep); @@ -277,7 +273,7 @@ shortpath_for_partial( // Copy in the string - p indexes into tfname - allocated at pbuf vim_free(*bufp); - *fnamelen = (int)((tfname + len) - p); + *fnamelen = (int)STRLEN(p); *bufp = pbuf; *fnamep = p; @@ -418,7 +414,7 @@ modify_fname( continue; } pbuf = NULL; - // Need full path first (use expand_env_save() to remove a "~/") + // Need full path first (use expand_env() to remove a "~/") if (!has_fullname && !has_homerelative) { if (**fnamep == '~') @@ -509,7 +505,7 @@ modify_fname( if (*fnamelen == 0) { // Result is empty. Turn it into "." to make ":cd %:h" work. - p = vim_strnsave((char_u *)".", 1); + p = vim_strsave((char_u *)"."); if (p == NULL) return -1; vim_free(*bufp); @@ -1548,10 +1544,8 @@ f_mkdir(typval_T *argvars, typval_T *rettv) tv[0].vval.v_string = created; tv[1].v_type = VAR_STRING; tv[1].v_lock = 0; - if (defer_recurse) - tv[1].vval.v_string = vim_strnsave((char_u *)"rf", 2); - else - tv[1].vval.v_string = vim_strnsave((char_u *)"d", 1); + tv[1].vval.v_string = vim_strsave( + (char_u *)(defer_recurse ? "rf" : "d")); if (tv[0].vval.v_string == NULL || tv[1].vval.v_string == NULL || add_defer((char_u *)"delete", 2, tv) == FAIL) { @@ -2064,8 +2058,6 @@ f_resolve(typval_T *argvars, typval_T *rettv) char_u *p; #ifdef HAVE_READLINK char_u *buf = NULL; - char_u *remain = NULL; - int p_was_allocated = FALSE; #endif if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) @@ -2085,166 +2077,110 @@ f_resolve(typval_T *argvars, typval_T *rettv) #else # ifdef HAVE_READLINK { - size_t plen; - size_t buflen; char_u *cpy; - size_t cpysize; - char_u *r = NULL; // points to current position in "remain" - size_t rlen = 0; // length of r (excluding the NUL) + int len; + char_u *remain = NULL; char_u *q; int is_relative_to_current = FALSE; int has_trailing_pathsep = FALSE; int limit = 100; - size_t len; - rettv->vval.v_string = NULL; - - plen = STRLEN(p); - p = vim_strnsave(p, plen); + p = vim_strsave(p); if (p == NULL) goto fail; - - p_was_allocated = TRUE; if (p[0] == '.' && (vim_ispathsep(p[1]) || (p[1] == '.' && (vim_ispathsep(p[2]))))) is_relative_to_current = TRUE; - if (plen > 1 && after_pathsep(p, p + plen)) + len = STRLEN(p); + if (len > 1 && after_pathsep(p, p + len)) { has_trailing_pathsep = TRUE; - p[--plen] = NUL; // the trailing slash breaks readlink() + p[len - 1] = NUL; // the trailing slash breaks readlink() } q = getnextcomp(p); if (*q != NUL) { - char_u *q_prev = q - 1; - - // getnextcomp() finds the first path separator. - // if there is a run of >1 path separators, set all - // but the last in the run to NUL. - while (*q != NUL && vim_ispathsep(*q)) - { - *q_prev = NUL; - q_prev = q; - MB_PTR_ADV(q); - } - q = q_prev; - // Separate the first path component in "p", and keep the // remainder (beginning with the path separator). - rlen = (size_t)(plen - (q - p)); - r = remain = vim_strnsave(q, rlen); - if (remain == NULL) - rlen = 0; - *q = NUL; - plen -= rlen; + remain = vim_strsave(q - 1); + q[-1] = NUL; } buf = alloc(MAXPATHL + 1); if (buf == NULL) + { + vim_free(p); + vim_free(remain); goto fail; + } for (;;) { for (;;) { - ssize_t rv = readlink((char *)p, (char *)buf, MAXPATHL); - if (rv <= 0) + len = readlink((char *)p, (char *)buf, MAXPATHL); + if (len <= 0) break; + buf[len] = NUL; if (limit-- == 0) { + vim_free(p); + vim_free(remain); emsg(_(e_too_many_symbolic_links_cycle)); + rettv->vval.v_string = NULL; goto fail; } - buflen = (size_t)rv; - buf[buflen] = NUL; - // Ensure that the result will have a trailing path separator // if the argument has one. - if (remain == NULL && has_trailing_pathsep && !after_pathsep(buf, buf + buflen)) - { - STRCPY(buf + buflen, PATHSEPSTR); - ++buflen; - } + if (remain == NULL && has_trailing_pathsep) + add_pathsep(buf); // Separate the first path component in the link value and // concatenate the remainders. q = getnextcomp(vim_ispathsep(*buf) ? buf + 1 : buf); if (*q != NUL) { - char_u *q_prev = q - 1; - - // getnextcomp() finds the first path separator. - // if there is a run of >1 path separators, set all - // but the last in the run to NUL. - while (*q != NUL && vim_ispathsep(*q)) - { - *q_prev = NUL; - q_prev = q; - MB_PTR_ADV(q); - } - q = q_prev; - if (remain == NULL) - { - rlen = (size_t)(buflen - (q - buf)); - r = remain = vim_strnsave(q, rlen); - if (remain == NULL) - rlen = 0; - } + remain = vim_strsave(q - 1); else { - len = (size_t)(buflen - (q - buf)); - cpysize = (size_t)(len + rlen + 1); // +1 for NUL - cpy = alloc(plen + buflen + 1); - if (cpy == NULL) - goto fail; - - rlen = (size_t)vim_snprintf((char *)cpy, cpysize, "%.*s%s", (int)len, q, r); - vim_free(remain); - r = remain = cpy; + cpy = concat_str(q - 1, remain); + if (cpy != NULL) + { + vim_free(remain); + remain = cpy; + } } - *q = NUL; - buflen = (size_t)(q - buf); + q[-1] = NUL; } q = gettail(p); if (q > p && *q == NUL) { // Ignore trailing path separator. - plen = (size_t)(q - p - 1); - p[plen] = NUL; + p[q - p - 1] = NUL; q = gettail(p); } if (q > p && !mch_isFullName(buf)) { - char_u *tail; - // symlink is relative to directory of argument - cpy = alloc(plen + buflen + 1); - if (cpy == NULL) - goto fail; - - STRCPY(cpy, p); - tail = gettail(cpy); - if (*tail != NUL) - plen -= (size_t)(plen - (tail - cpy)); // remove portion that will be replaced - STRCPY(tail, buf); - vim_free(p); - p = cpy; - plen += buflen; + cpy = alloc(STRLEN(p) + STRLEN(buf) + 1); + if (cpy != NULL) + { + STRCPY(cpy, p); + STRCPY(gettail(cpy), buf); + vim_free(p); + p = cpy; + } } else { vim_free(p); - p = vim_strnsave(buf, buflen); - if (p == NULL) - goto fail; - - plen = buflen; + p = vim_strsave(buf); } } @@ -2252,29 +2188,20 @@ f_resolve(typval_T *argvars, typval_T *rettv) break; // Append the first path component of "remain" to "p". - q = getnextcomp(r + 1); - len = (size_t)(q - r); - cpysize = (size_t)(plen + len + 1); // +1 for NUL - cpy = alloc(cpysize); - if (cpy == NULL) - goto fail; - - plen = (size_t)vim_snprintf((char *)cpy, cpysize, "%s%.*s", p, (int)len, r); - vim_free(p); - p = cpy; - - // Shorten "remain". - if (*q != NUL) + q = getnextcomp(remain + 1); + len = q - remain - (*q != NUL); + cpy = vim_strnsave(p, STRLEN(p) + len); + if (cpy != NULL) { - r += len; - rlen -= len; + STRNCAT(cpy, remain, len); + vim_free(p); + p = cpy; } + // Shorten "remain". + if (*q != NUL) + STRMOVE(remain, q - 1); else - { VIM_CLEAR(remain); - r = NULL; - rlen = 0; - } } // If the result is a relative path name, make it explicitly relative to @@ -2291,14 +2218,12 @@ f_resolve(typval_T *argvars, typval_T *rettv) || vim_ispathsep(p[2])))))) { // Prepend "./". - cpysize = plen + 3; // +2 for "./" and +1 for NUL - cpy = alloc(cpysize); - if (cpy == NULL) - goto fail; - - plen = (size_t)vim_snprintf((char *)cpy, cpysize, "./%s", p); - vim_free(p); - p = cpy; + cpy = concat_str((char_u *)"./", p); + if (cpy != NULL) + { + vim_free(p); + p = cpy; + } } else if (!is_relative_to_current) { @@ -2307,17 +2232,18 @@ f_resolve(typval_T *argvars, typval_T *rettv) while (q[0] == '.' && vim_ispathsep(q[1])) q += 2; if (q > p) - { - mch_memmove(p, p + 2, (plen - 2) + 1); - plen -= 2; - } + STRMOVE(p, p + 2); } } // Ensure that the result will have no trailing path separator // if the argument had none. But keep "/" or "//". - if (!has_trailing_pathsep && after_pathsep(p, p + plen)) - *gettail_sep(p) = NUL; + if (!has_trailing_pathsep) + { + q = p + STRLEN(p); + if (after_pathsep(p, q)) + *gettail_sep(p) = NUL; + } rettv->vval.v_string = p; } @@ -2330,10 +2256,7 @@ f_resolve(typval_T *argvars, typval_T *rettv) #ifdef HAVE_READLINK fail: - if (rettv->vval.v_string == NULL && p_was_allocated) - vim_free(p); vim_free(buf); - vim_free(remain); #endif rettv->v_type = VAR_STRING; } @@ -3041,7 +2964,6 @@ getnextcomp(char_u *fname) { while (*fname && !vim_ispathsep(*fname)) MB_PTR_ADV(fname); - if (*fname) ++fname; return fname; @@ -3194,18 +3116,16 @@ vim_fnamencmp(char_u *x, char_u *y, size_t len) char_u * concat_fnames(char_u *fname1, char_u *fname2, int sep) { - size_t fname1len = STRLEN(fname1); - size_t destsize = fname1len + STRLEN(fname2) + 3; char_u *dest; - dest = alloc(destsize); + dest = alloc(STRLEN(fname1) + STRLEN(fname2) + 3); if (dest == NULL) return NULL; - vim_snprintf((char *)dest, destsize, "%s%s%s", - fname1, - (sep && !after_pathsep(fname1, fname1 + fname1len)) ? PATHSEPSTR : "", - fname2); + STRCPY(dest, fname1); + if (sep) + add_pathsep(dest); + STRCAT(dest, fname2); return dest; } @@ -3216,14 +3136,8 @@ concat_fnames(char_u *fname1, char_u *fname2, int sep) void add_pathsep(char_u *p) { - size_t plen; - - if (p == NULL || *p == NUL) - return; - - plen = STRLEN(p); - if (!after_pathsep(p, p + plen)) - STRCPY(p + plen, PATHSEPSTR); + if (*p != NUL && !after_pathsep(p, p + STRLEN(p))) + STRCAT(p, PATHSEPSTR); } /* @@ -3521,14 +3435,14 @@ expand_backtick( } #endif // VIM_BACKTICK -#if defined(MSWIN) || (defined(UNIX) && !defined(VMS)) || defined(USE_UNIXFILENAME) || defined(PROTO) +#if defined(MSWIN) /* - * File name expansion code for Unix, Mac, MS-DOS, Win16 and Win32. It's here because + * File name expansion code for MS-DOS, Win16 and Win32. It's here because * it's shared between these systems. */ /* - * comparison function for qsort in unix_expandpath() + * comparison function for qsort in dos_expandpath() */ static int pstrcmp(const void *a, const void *b) @@ -3543,35 +3457,33 @@ pstrcmp(const void *a, const void *b) * "path" has backslashes before chars that are not to be expanded, starting * at "path[wildoff]". * Return the number of matches found. + * NOTE: much of this is identical to unix_expandpath(), keep in sync! */ - int -unix_expandpath( + static int +dos_expandpath( garray_T *gap, - char_u *path, - int wildoff, - int flags, // EW_* flags - int didstar) // expanded "**" once already + char_u *path, + int wildoff, + int flags, // EW_* flags + int didstar) // expanded "**" once already { - char_u *buf; - char_u *path_end; - size_t basepathlen; // length of non-variable portion of the path - size_t wildcardlen; // length of wildcard segment - char_u *p, *s, *e; - int start_len = gap->ga_len; - char_u *pat; + char_u *buf; + char_u *path_end; + char_u *p, *s, *e; + int start_len = gap->ga_len; + char_u *pat; regmatch_T regmatch; - int starts_with_dot; - int matches; // number of matches found - int starstar = FALSE; + int starts_with_dot; + int matches; + int len; + int starstar = FALSE; static int stardepth = 0; // depth for "**" expansion -#ifdef MSWIN - HANDLE hFind = INVALID_HANDLE_VALUE; - WIN32_FIND_DATAW wfb; - WCHAR *wn = NULL; // UCS-2 name, NULL when not used. -#else - DIR *dirp; -#endif - int ok; + HANDLE hFind = INVALID_HANDLE_VALUE; + WIN32_FIND_DATAW wfb; + WCHAR *wn = NULL; // UCS-2 name, NULL when not used. + char_u *matchname; + int ok; + char_u *p_alt; // Expanding "**" may take a long time, check for CTRL-C. if (stardepth > 0) @@ -3581,16 +3493,15 @@ unix_expandpath( return 0; } - // Make room for file name. When doing encoding conversion the actual - // length may be quite a bit longer. + // Make room for file name. When doing encoding conversion the actual + // length may be quite a bit longer, thus use the maximum possible length. buf = alloc(MAXPATHL); if (buf == NULL) return 0; /* * Find the first part in the path name that contains a wildcard or a ~1. - * Copy it into "buf", including the preceding characters. - * Note: for unix, when EW_ICASE is set every letter is considered to be a wildcard. + * Copy it into buf, including the preceding characters. */ p = buf; s = buf; @@ -3602,25 +3513,18 @@ unix_expandpath( // be removed by rem_backslash() or file_pat_to_reg_pat() below. if (path_end >= path + wildoff && rem_backslash(path_end)) *p++ = *path_end++; - else if (vim_ispathsep(*path_end)) + else if (*path_end == '\\' || *path_end == ':' || *path_end == '/') { if (e != NULL) break; s = p + 1; } else if (path_end >= path + wildoff -#ifdef MSWIN - && vim_strchr((char_u *)"*?[~", *path_end) != NULL -#else - && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL - || (!p_fic && (flags & EW_ICASE) - && vim_isalpha(PTR2CHAR(path_end)))) -#endif - ) + && vim_strchr((char_u *)"*?[~", *path_end) != NULL) e = p; if (has_mbyte) { - int len = (*mb_ptr2len)(path_end); + len = (*mb_ptr2len)(path_end); STRNCPY(p, path_end, len); p += len; path_end += len; @@ -3631,38 +3535,270 @@ unix_expandpath( e = p; *e = NUL; - // Now we have one wildcard component between "s" and "e". + // now we have one wildcard component between s and e // Remove backslashes between "wildoff" and the start of the wildcard // component. - p = buf + wildoff; - if (p < s) + for (p = buf + wildoff; p < s; ++p) + if (rem_backslash(p)) + { + STRMOVE(p, p + 1); + --e; + --s; + } + + // Check for "**" between "s" and "e". + for (p = s; p < e; ++p) + if (p[0] == '*' && p[1] == '*') + starstar = TRUE; + + starts_with_dot = *s == '.'; + pat = file_pat_to_reg_pat(s, e, NULL, FALSE); + if (pat == NULL) { - size_t psize = STRLEN(p) + 1; + vim_free(buf); + return 0; + } - do + // compile the regexp into a program + if (flags & (EW_NOERROR | EW_NOTWILD)) + ++emsg_silent; + regmatch.rm_ic = TRUE; // Always ignore case + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); + if (flags & (EW_NOERROR | EW_NOTWILD)) + --emsg_silent; + vim_free(pat); + + if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) + { + vim_free(buf); + return 0; + } + + // remember the pattern or file name being looked for + matchname = vim_strsave(s); + + // If "**" is by itself, this is the first time we encounter it and more + // is following then find matches without any directory. + if (!didstar && stardepth < 100 && starstar && e - s == 2 + && *path_end == '/') + { + STRCPY(s, path_end + 1); + ++stardepth; + (void)dos_expandpath(gap, buf, (int)(s - buf), flags, TRUE); + --stardepth; + } + + // Scan all files in the directory with "dir/ *.*" + STRCPY(s, "*.*"); + wn = enc_to_utf16(buf, NULL); + if (wn != NULL) + hFind = FindFirstFileW(wn, &wfb); + ok = (hFind != INVALID_HANDLE_VALUE); + + while (ok) + { + p = utf16_to_enc(wfb.cFileName, NULL); // p is allocated here + + if (p == NULL) + break; // out of memory + + // Do not use the alternate filename when the file name ends in '~', + // because it picks up backup files: short name for "foo.vim~" is + // "foo~1.vim", which matches "*.vim". + if (*wfb.cAlternateFileName == NUL || p[STRLEN(p) - 1] == '~') + p_alt = NULL; + else + p_alt = utf16_to_enc(wfb.cAlternateFileName, NULL); + + // Ignore entries starting with a dot, unless when asked for. Accept + // all entries found with "matchname". + if ((p[0] != '.' || starts_with_dot + || ((flags & EW_DODOT) + && p[1] != NUL && (p[1] != '.' || p[2] != NUL))) + && (matchname == NULL + || (regmatch.regprog != NULL + && (vim_regexec(®match, p, (colnr_T)0) + || (p_alt != NULL + && vim_regexec(®match, p_alt, (colnr_T)0)))) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), p, e - s) == 0))) { - if (!rem_backslash(p)) - ++p; + STRCPY(s, p); + len = (int)STRLEN(buf); + + if (starstar && stardepth < 100 + && (wfb.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + // For "**" in the pattern first go deeper in the tree to + // find matches. + STRCPY(buf + len, "/**"); + STRCPY(buf + len + 3, path_end); + ++stardepth; + (void)dos_expandpath(gap, buf, len + 1, flags, TRUE); + --stardepth; + } + + STRCPY(buf + len, path_end); + if (mch_has_exp_wildcard(path_end)) + { + // need to expand another component of the path + // remove backslashes for the remaining components only + (void)dos_expandpath(gap, buf, len + 1, flags, FALSE); + } else { - mch_memmove(p, p + 1, psize); - --e; - --s; + stat_T sb; + + // no more wildcards, check if there is a match + // remove backslashes for the remaining components only + if (*path_end != 0) + backslash_halve(buf + len + 1); + // add existing file + if ((flags & EW_ALLLINKS) ? mch_lstat((char *)buf, &sb) >= 0 + : mch_getperm(buf) >= 0) + addfile(gap, buf, flags); } - --psize; - } while (p < s); + } + + vim_free(p_alt); + vim_free(p); + ok = FindNextFileW(hFind, &wfb); } - basepathlen = (size_t)(s - buf); - wildcardlen = (size_t)(e - s); + FindClose(hFind); + vim_free(wn); + vim_free(buf); + vim_regfree(regmatch.regprog); + vim_free(matchname); + + matches = gap->ga_len - start_len; + if (matches > 0) + qsort(((char_u **)gap->ga_data) + start_len, (size_t)matches, + sizeof(char_u *), pstrcmp); + return matches; +} + + int +mch_expandpath( + garray_T *gap, + char_u *path, + int flags) // EW_* flags +{ + return dos_expandpath(gap, path, 0, flags, FALSE); +} +#endif // MSWIN + +#if (defined(UNIX) && !defined(VMS)) || defined(USE_UNIXFILENAME) \ + || defined(PROTO) +/* + * Unix style wildcard expansion code. + * It's here because it's used both for Unix and Mac. + */ + static int +pstrcmp(const void *a, const void *b) +{ + return (pathcmp(*(char **)a, *(char **)b, -1)); +} + +/* + * Recursively expand one path component into all matching files and/or + * directories. Adds matches to "gap". Handles "*", "?", "[a-z]", "**", etc. + * "path" has backslashes before chars that are not to be expanded, starting + * at "path + wildoff". + * Return the number of matches found. + * NOTE: much of this is identical to dos_expandpath(), keep in sync! + */ + int +unix_expandpath( + garray_T *gap, + char_u *path, + int wildoff, + int flags, // EW_* flags + int didstar) // expanded "**" once already +{ + char_u *buf; + char_u *path_end; + char_u *p, *s, *e; + int start_len = gap->ga_len; + char_u *pat; + regmatch_T regmatch; + int starts_with_dot; + int matches; + int len; + int starstar = FALSE; + static int stardepth = 0; // depth for "**" expansion + + DIR *dirp; + struct dirent *dp; + + // Expanding "**" may take a long time, check for CTRL-C. + if (stardepth > 0) + { + ui_breakcheck(); + if (got_int) + return 0; + } + + // make room for file name (a bit too much to stay on the safe side) + size_t buflen = STRLEN(path) + MAXPATHL; + buf = alloc(buflen); + if (buf == NULL) + return 0; + + /* + * Find the first part in the path name that contains a wildcard. + * When EW_ICASE is set every letter is considered to be a wildcard. + * Copy it into "buf", including the preceding characters. + */ + p = buf; + s = buf; + e = NULL; + path_end = path; + while (*path_end != NUL) + { + // May ignore a wildcard that has a backslash before it; it will + // be removed by rem_backslash() or file_pat_to_reg_pat() below. + if (path_end >= path + wildoff && rem_backslash(path_end)) + *p++ = *path_end++; + else if (*path_end == '/') + { + if (e != NULL) + break; + s = p + 1; + } + else if (path_end >= path + wildoff + && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL + || (!p_fic && (flags & EW_ICASE) + && vim_isalpha(PTR2CHAR(path_end))))) + e = p; + if (has_mbyte) + { + len = (*mb_ptr2len)(path_end); + STRNCPY(p, path_end, len); + p += len; + path_end += len; + } + else + *p++ = *path_end++; + } + e = p; + *e = NUL; + + // Now we have one wildcard component between "s" and "e". + // Remove backslashes between "wildoff" and the start of the wildcard + // component. + for (p = buf + wildoff; p < s; ++p) + if (rem_backslash(p)) + { + STRMOVE(p, p + 1); + --e; + --s; + } // Check for "**" between "s" and "e". for (p = s; p < e; ++p) if (p[0] == '*' && p[1] == '*') - { starstar = TRUE; - break; - } // convert the file pattern to a regexp pattern starts_with_dot = *s == '.'; @@ -3674,14 +3810,10 @@ unix_expandpath( } // compile the regexp into a program -#ifdef MSWIN - regmatch.rm_ic = TRUE; // Always ignore case -#else if (flags & EW_ICASE) - regmatch.rm_ic = TRUE; // 'wildignorecase' set + regmatch.rm_ic = TRUE; // 'wildignorecase' set else - regmatch.rm_ic = p_fic; // ignore case when 'fileignorecase' is set -#endif + regmatch.rm_ic = p_fic; // ignore case when 'fileignorecase' is set if (flags & (EW_NOERROR | EW_NOTWILD)) ++emsg_silent; regmatch.regprog = vim_regcomp(pat, RE_MAGIC); @@ -3697,100 +3829,51 @@ unix_expandpath( // If "**" is by itself, this is the first time we encounter it and more // is following then find matches without any directory. - if (!didstar && stardepth < 100 && starstar && wildcardlen == 2 - && *path_end == '/') + if (!didstar && stardepth < 100 && starstar && e - s == 2 + && *path_end == '/') { STRCPY(s, path_end + 1); ++stardepth; - (void)unix_expandpath(gap, buf, (int)basepathlen, flags, TRUE); + (void)unix_expandpath(gap, buf, (int)(s - buf), flags, TRUE); --stardepth; } -#ifdef MSWIN - // open the directory for scanning - STRCPY(s, "*.*"); - wn = enc_to_utf16(buf, NULL); - if (wn != NULL) - hFind = FindFirstFileW(wn, &wfb); - ok = (hFind != INVALID_HANDLE_VALUE); -#else // open the directory for scanning *s = NUL; dirp = opendir(*buf == NUL ? "." : (char *)buf); - ok = (dirp != NULL); -#endif // Find all matching entries - if (ok) + if (dirp != NULL) { - char_u *d_name; -#ifdef MSWIN - char_u *d_name_alt; - // remember the pattern or file name being looked for - char_u *matchname = vim_strnsave(s, basepathlen); -#else - struct dirent *dp; -#endif - while (!got_int) { -#ifdef MSWIN - d_name = utf16_to_enc(wfb.cFileName, NULL); // p is allocated here - if (d_name == NULL) - break; // out of memory - - // Do not use the alternate filename when the file name ends in '~', - // because it picks up backup files: short name for "foo.vim~" is - // "foo~1.vim", which matches "*.vim". - if (*wfb.cAlternateFileName == NUL || d_name[STRLEN(d_name) - 1] == '~') - d_name_alt = NULL; - else - d_name_alt = utf16_to_enc(wfb.cAlternateFileName, NULL); -#else dp = readdir(dirp); if (dp == NULL) break; - d_name = (char_u *)dp->d_name; -#endif - - // Ignore entries starting with a dot, unless when asked for. For MSWIN accept - // all entries found with "matchname". - if ( - (d_name[0] != '.' || starts_with_dot || ( - (flags & EW_DODOT) && d_name[1] != NUL && - (d_name[1] != '.' || d_name[2] != NUL))) - && ( -#ifdef MSWIN - matchname == NULL || -#endif - (regmatch.regprog != NULL - && vim_regexec(®match, (char_u *)d_name, (colnr_T)0)) -#ifdef MSWIN - || (d_name_alt != NULL - && vim_regexec(®match, d_name_alt, (colnr_T)0)) -#endif + if ((dp->d_name[0] != '.' || starts_with_dot + || ((flags & EW_DODOT) + && dp->d_name[1] != NUL + && (dp->d_name[1] != '.' || dp->d_name[2] != NUL))) + && ((regmatch.regprog != NULL && vim_regexec(®match, + (char_u *)dp->d_name, (colnr_T)0)) || ((flags & EW_NOTWILD) - && fnamencmp(path + basepathlen, d_name, wildcardlen) == 0)) - ) + && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) { - int len = (int)basepathlen + vim_snprintf((char *)s, (size_t)(MAXPATHL - (basepathlen + 1)), "%s", d_name); + vim_strncpy(s, (char_u *)dp->d_name, buflen - (s - buf) - 1); + len = STRLEN(buf); - if (starstar && stardepth < 100 -#ifdef MSWIN - && (wfb.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) -#endif - ) + if (starstar && stardepth < 100) { // For "**" in the pattern first go deeper in the tree to // find matches. - vim_snprintf((char *)buf + len, (size_t)(MAXPATHL - len), - "/**%s", path_end); + vim_snprintf((char *)buf + len, buflen - len, + "/**%s", path_end); ++stardepth; (void)unix_expandpath(gap, buf, len + 1, flags, TRUE); --stardepth; } - vim_snprintf((char *)buf + len, (size_t)(MAXPATHL - len), "%s", path_end); + vim_snprintf((char *)buf + len, buflen - len, "%s", path_end); if (mch_has_exp_wildcard(path_end)) // handle more wildcards { // need to expand another component of the path @@ -3807,7 +3890,7 @@ unix_expandpath( backslash_halve(buf + len + 1); // add existing file or symbolic link if ((flags & EW_ALLLINKS) ? mch_lstat((char *)buf, &sb) >= 0 - : mch_getperm(buf) >= 0) + : mch_getperm(buf) >= 0) { #ifdef MACOS_CONVERT size_t precomp_len = STRLEN(buf)+1; @@ -3824,26 +3907,11 @@ unix_expandpath( } } } - -#ifdef MSWIN - vim_free(d_name); - if (!FindNextFileW(hFind, &wfb)) - break; -#endif } -#ifdef MSWIN - FindClose(hFind); - vim_free(matchname); - vim_free(d_name_alt); -#else closedir(dirp); -#endif } -#ifdef MSWIN - vim_free(wn); -#endif vim_free(buf); vim_regfree(regmatch.regprog); @@ -3852,24 +3920,9 @@ unix_expandpath( matches = gap->ga_len - start_len; if (matches > 0 && !got_int) qsort(((char_u **)gap->ga_data) + start_len, matches, - sizeof(char_u *), pstrcmp); + sizeof(char_u *), pstrcmp); return matches; } - -/* - * Expand a path into all matching files and/or directories. Handles "*", - * "?", "[a-z]", "**", etc where appropriate for the platform. - * "path" has backslashes before chars that are not to be expanded. - * Returns the number of matches found. - */ - int -mch_expandpath( - garray_T *gap, - char_u *path, - int flags) // EW_* flags -{ - return unix_expandpath(gap, path, 0, flags, FALSE); -} #endif /* diff --git a/src/os_unix.c b/src/os_unix.c index ac78733d34..dc518fc676 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -6796,6 +6796,21 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED, int *interrupted) return result; } +/* + * Expand a path into all matching files and/or directories. Handles "*", + * "?", "[a-z]", "**", etc. + * "path" has backslashes before chars that are not to be expanded. + * Returns the number of matches found. + */ + int +mch_expandpath( + garray_T *gap, + char_u *path, + int flags) // EW_* flags +{ + return unix_expandpath(gap, path, 0, flags, FALSE); +} + /* * mch_expand_wildcards() - this code does wild-card pattern matching using * the shell diff --git a/src/proto/filepath.pro b/src/proto/filepath.pro index 1665089e6c..46f51cb36f 100644 --- a/src/proto/filepath.pro +++ b/src/proto/filepath.pro @@ -56,7 +56,6 @@ int expand_wildcards_eval(char_u **pat, int *num_file, char_u ***file, int flags int expand_wildcards(int num_pat, char_u **pat, int *num_files, char_u ***files, int flags); int match_suffix(char_u *fname); int unix_expandpath(garray_T *gap, char_u *path, int wildoff, int flags, int didstar); -int mch_expandpath(garray_T *gap, char_u *path, int flags); int gen_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, int flags); void addfile(garray_T *gap, char_u *f, int flags); void FreeWild(int count, char_u **files); diff --git a/src/version.c b/src/version.c index 4feba92608..ac695905dc 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 924, /**/ 923, /**/ From e203841e0dbae2851e23f87f5bd89a458895d0d6 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Sat, 14 Dec 2024 19:59:24 +0100 Subject: [PATCH 102/244] patch 9.1.0925: Vim9: expression compiled when not necessary Problem: Vim9: expression compiled when not necessary Solution: do not compile when ctx_skip is set, add a few more Vim9 expressions tests (Yegappan Lakshmanan) closes: #16218 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/testdir/test_vim9_assign.vim | 8 +++++++ src/testdir/test_vim9_script.vim | 38 ++++++++++++++++++++++++++++++++ src/version.c | 2 ++ src/vim9compile.c | 2 +- 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index bb08943ffa..1848c016c1 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -3090,6 +3090,14 @@ def Test_heredoc_expr() END LINES v9.CheckDefAndScriptFailure(lines, 'E15: Invalid expression: "}"') + + # dangling "}" + lines =<< trim LINES + var text =<< trim eval END + aa}a + END + LINES + v9.CheckDefAndScriptFailure(lines, "E1278: Stray '}' without a matching '{': aa}a") enddef " Test for assigning to a multi-dimensional list item. diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index bcb590d107..82f808862d 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -2038,6 +2038,12 @@ def Test_if_const_expr() .. 'ccc' )->setline(1) endif + + if 1 + # do nothing + else + var [a] = [10] + endif enddef def Test_if_const_expr_fails() @@ -2234,6 +2240,15 @@ def Test_echowindow_cmd() # output goes in message window popup_clear() + + # Invalid range + var lines =<< trim END + def Foo() + :$echowindow "foo" + enddef + defcompile + END + v9.CheckDefAndScriptFailure(lines, 'E16: Invalid range') enddef def Test_for_outside_of_function() @@ -5133,6 +5148,29 @@ def Test_unknown_type_in_typecast() v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected number but got bool', 2) enddef +" Test for calling a function as a method with a list argument +" This exercises some conditions in the assignment statement parsing code. +def Test_method_call_with_list_arg() + var lines =<< trim END + vim9script + + def Foo(l: list) + g:save_list = l + enddef + + def Bar() + var a = 10 + var b = 20 + [a, b]->Foo() + enddef + + g:save_list = [] + Bar() + assert_equal([10, 20], g:save_list) + END + v9.CheckSourceSuccess(lines) +enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new diff --git a/src/version.c b/src/version.c index ac695905dc..789df38a23 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 925, /**/ 924, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index 64e2195997..776e6d6b8a 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -3342,7 +3342,7 @@ compile_assignment( // For "[var, var] = expr" drop the "expr" value. // Also for "[var, var; _] = expr". - if (cac.cac_var_count > 0 && + if (cctx->ctx_skip != SKIP_YES && cac.cac_var_count > 0 && (!cac.cac_semicolon || !cac.cac_did_generate_slice)) { if (generate_instr_drop(cctx, ISN_DROP, 1) == NULL) From ed89206efe404a94e8424ccfe03c978fd93470f1 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Sat, 14 Dec 2024 20:23:39 +0100 Subject: [PATCH 103/244] runtime(doc): add a note about inclusive motions and exclusive selection related: #16202 Signed-off-by: Christian Brabandt --- runtime/doc/motion.txt | 9 ++++++++- runtime/doc/options.txt | 4 +++- runtime/doc/tags | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index 2637480ae9..8fe70241e9 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 9.1. Last change: 2024 Oct 06 +*motion.txt* For Vim version 9.1. Last change: 2024 Dec 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -93,6 +93,13 @@ command. There are however, two general exceptions: end of the motion is moved to the end of the previous line and the motion becomes inclusive. Example: "}" moves to the first line after a paragraph, but "d}" will not include that line. + + *inclusive-motion-selection-exclusive* +When 'selection' is "exclusive", |Visual| mode is active and an inclusive +motion has been used, the cursor position will be adjusted by another +character to the right, so that visual selction includes the expected text and +can be acted upon. + *exclusive-linewise* 2. If the motion is exclusive, the end of the motion is in column 1 and the start of the motion was at or before the first non-blank in the line, the diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 4024d20c50..7c32384e14 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Dec 07 +*options.txt* For Vim version 9.1. Last change: 2024 Dec 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -7018,6 +7018,8 @@ A jump table for the options with a short description can be found at |Q_op|. selection. When "old" is used and 'virtualedit' allows the cursor to move past the end of line the line break still isn't included. + When "exclusive" is used, cursor position in visual mode will be + adjusted for inclusive motions |inclusive-motion-selection-exclusive|. Note that when "exclusive" is used and selecting from the end backwards, you cannot include the last character of a line, when starting in Normal mode and 'virtualedit' empty. diff --git a/runtime/doc/tags b/runtime/doc/tags index 6b4cd63e48..0f8b2051f4 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -8404,6 +8404,7 @@ inactive-buffer windows.txt /*inactive-buffer* include-search tagsrch.txt /*include-search* inclusion helphelp.txt /*inclusion* inclusive motion.txt /*inclusive* +inclusive-motion-selection-exclusive motion.txt /*inclusive-motion-selection-exclusive* incomp-small-6 version6.txt /*incomp-small-6* incompatible-5 version5.txt /*incompatible-5* incompatible-6 version6.txt /*incompatible-6* From fbe9a6903a5b66d5b546a5a080726cba50372df5 Mon Sep 17 00:00:00 2001 From: Yinzuo Jiang Date: Sat, 14 Dec 2024 20:28:51 +0100 Subject: [PATCH 104/244] runtime(doc): Add a reference to |++opt| and |+cmd| at `:h :pedit` closes: #16217 Signed-off-by: Yinzuo Jiang Signed-off-by: Christian Brabandt --- runtime/doc/windows.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 915db37e9e..edb105aa52 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 9.1. Last change: 2024 Sep 08 +*windows.txt* For Vim version 9.1. Last change: 2024 Dec 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1012,6 +1012,8 @@ CTRL-W g } *CTRL-W_g}* position isn't changed. Useful example: > :pedit +/fputc /usr/include/stdio.h < + Also see |++opt| and |+cmd|. + *:ps* *:psearch* :[range]ps[earch][!] [count] [/]pattern[/] Works like |:ijump| but shows the found match in the preview From 7d1bb90dcf711c732a49e0a45e56028a4853a17d Mon Sep 17 00:00:00 2001 From: Brandon Maier Date: Sat, 14 Dec 2024 20:56:34 +0100 Subject: [PATCH 105/244] patch 9.1.0926: filetype: Pixi lock files are not recognized Problem: filetype: Pixi lock files are not recognized Solution: detect "pixi.lock" file as yaml filetype (Brandon Maier) Reference: https://pixi.sh/latest/features/lockfile/ closes: #16212 Signed-off-by: Brandon Maier Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 3 +++ src/testdir/test_filetype.vim | 2 +- src/version.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index cac7c2ca42..eb1d851289 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1873,6 +1873,9 @@ au BufNewFile,BufRead requires/*.txt setf requirements au BufNewFile,BufRead Pipfile setf toml au BufNewFile,BufRead Pipfile.lock setf json +" Pixi lock +au BufNewFile,BufRead pixi.lock setf yaml + " PL/1, PL/I au BufNewFile,BufRead *.pli,*.pl1 setf pli diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index e9535bf033..583cca6396 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -893,7 +893,7 @@ def s:GetFilenameChecks(): dict> xslt: ['file.xsl', 'file.xslt'], yacc: ['file.yy', 'file.yxx', 'file.y++'], yaml: ['file.yaml', 'file.yml', 'file.eyaml', 'any/.bundle/config', '.clangd', '.clang-format', '.clang-tidy', 'file.mplstyle', 'matplotlibrc', 'yarn.lock', - '/home/user/.kube/config', '.condarc', 'condarc'], + '/home/user/.kube/config', '.condarc', 'condarc', 'pixi.lock'], yang: ['file.yang'], yuck: ['file.yuck'], z8a: ['file.z8a'], diff --git a/src/version.c b/src/version.c index 789df38a23..caf3d5d486 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 926, /**/ 925, /**/ From 6e19993991cfbea2e00435cc706a15ba7e766c55 Mon Sep 17 00:00:00 2001 From: glepnir Date: Sat, 14 Dec 2024 21:13:27 +0100 Subject: [PATCH 106/244] patch 9.1.0927: style issues in insexpand.c Problem: style issues in insexpand.c Solution: add braces, use ternary operator to improve style (glepnir) closes: #16210 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/insexpand.c | 54 ++++++++++++++++++++++--------------------------- src/version.c | 2 ++ 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/src/insexpand.c b/src/insexpand.c index 305511cd8c..d3a6300a35 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -554,19 +554,18 @@ ins_compl_infercase_gettext( p = str; for (i = 0; i < char_len; ++i) + { if (has_mbyte) wca[i] = mb_ptr2char_adv(&p); else wca[i] = *(p++); + } // Rule 1: Were any chars converted to lower? p = compl_orig_text.string; for (i = 0; i < min_len; ++i) { - if (has_mbyte) - c = mb_ptr2char_adv(&p); - else - c = *(p++); + c = has_mbyte ? mb_ptr2char_adv(&p) : *(p++); if (MB_ISLOWER(c)) { has_lower = TRUE; @@ -587,10 +586,7 @@ ins_compl_infercase_gettext( p = compl_orig_text.string; for (i = 0; i < min_len; ++i) { - if (has_mbyte) - c = mb_ptr2char_adv(&p); - else - c = *(p++); + c = has_mbyte ? mb_ptr2char_adv(&p) : *(p++); if (was_letter && MB_ISUPPER(c) && MB_ISLOWER(wca[i])) { // Rule 2 is satisfied. @@ -606,10 +602,7 @@ ins_compl_infercase_gettext( p = compl_orig_text.string; for (i = 0; i < min_len; ++i) { - if (has_mbyte) - c = mb_ptr2char_adv(&p); - else - c = *(p++); + c = has_mbyte ? mb_ptr2char_adv(&p) : *(p++); if (MB_ISLOWER(c)) wca[i] = MB_TOLOWER(wca[i]); else if (MB_ISUPPER(c)) @@ -710,7 +703,9 @@ ins_compl_add_infercase( } } else + { char_len = len; + } // Find actual length of original text. if (has_mbyte) @@ -724,11 +719,13 @@ ins_compl_add_infercase( } } else + { compl_char_len = compl_length; + } // "char_len" may be smaller than "compl_char_len" when using // thesaurus, only use the minimum when comparing. - min_len = char_len < compl_char_len ? char_len : compl_char_len; + min_len = MIN(char_len, compl_char_len); str = ins_compl_infercase_gettext(str, char_len, compl_char_len, min_len, &tofree); @@ -847,8 +844,10 @@ ins_compl_add( int i; for (i = 0; i < CPT_COUNT; ++i) + { if (cptext[i] != NULL && *cptext[i] != NUL) match->cp_text[i] = vim_strsave(cptext[i]); + } } #ifdef FEAT_EVAL if (user_data != NULL) @@ -995,10 +994,13 @@ ins_compl_add_matches( int dir = compl_direction; for (i = 0; i < num_matches && add_r != FAIL; i++) - if ((add_r = ins_compl_add(matches[i], -1, NULL, NULL, NULL, dir, - CP_FAST | (icase ? CP_ICASE : 0), FALSE, NULL)) == OK) + { + add_r = ins_compl_add(matches[i], -1, NULL, NULL, NULL, dir, + CP_FAST | (icase ? CP_ICASE : 0), FALSE, NULL); + if (add_r == OK) // if dir was BACKWARD then honor it just once dir = FORWARD; + } FreeWild(num_matches, matches); } @@ -1123,12 +1125,11 @@ pum_wanted(void) pum_enough_matches(void) { compl_T *compl; - int i; + int i = 0; // Don't display the popup menu if there are no matches or there is only // one (ignoring the original text). compl = compl_first_match; - i = 0; do { if (compl == NULL || (!match_at_original_text(compl) && ++i == 2)) @@ -1342,20 +1343,15 @@ ins_compl_build_pum(void) i = 0; while (compl != NULL) { - if (compl->cp_text[CPT_ABBR] != NULL) - compl_match_array[i].pum_text = compl->cp_text[CPT_ABBR]; - else - compl_match_array[i].pum_text = compl->cp_str.string; + compl_match_array[i].pum_text = compl->cp_text[CPT_ABBR] != NULL + ? compl->cp_text[CPT_ABBR] : compl->cp_str.string; compl_match_array[i].pum_kind = compl->cp_text[CPT_KIND]; compl_match_array[i].pum_info = compl->cp_text[CPT_INFO]; compl_match_array[i].pum_score = compl->cp_score; compl_match_array[i].pum_user_abbr_hlattr = compl->cp_user_abbr_hlattr; compl_match_array[i].pum_user_kind_hlattr = compl->cp_user_kind_hlattr; - if (compl->cp_text[CPT_MENU] != NULL) - compl_match_array[i++].pum_extra = - compl->cp_text[CPT_MENU]; - else - compl_match_array[i++].pum_extra = compl->cp_fname; + compl_match_array[i++].pum_extra = compl->cp_text[CPT_MENU] != NULL + ? compl->cp_text[CPT_MENU] : compl->cp_fname; match_next = compl->cp_match_next; compl->cp_match_next = NULL; compl = match_next; @@ -1687,10 +1683,8 @@ ins_compl_files( while (vim_regexec(regmatch, buf, (colnr_T)(ptr - buf))) { ptr = regmatch->startp[0]; - if (ctrl_x_mode_line_or_eval()) - ptr = find_line_end(ptr); - else - ptr = find_word_end(ptr); + ptr = ctrl_x_mode_line_or_eval() ? find_line_end(ptr) + : find_word_end(ptr); add_r = ins_compl_add_infercase(regmatch->startp[0], (int)(ptr - regmatch->startp[0]), p_ic, files[i], *dir, FALSE); diff --git a/src/version.c b/src/version.c index caf3d5d486..6166ce6e16 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 927, /**/ 926, /**/ From 3c5d782dbc61c9328ef0cd906dab2b043dc084a9 Mon Sep 17 00:00:00 2001 From: Yinzuo Jiang Date: Sun, 15 Dec 2024 10:31:19 +0100 Subject: [PATCH 107/244] editorconfig: set trim_trailing_whitespace = false for src/testdir/test*.vim closes: #16220 Signed-off-by: Yinzuo Jiang Signed-off-by: Christian Brabandt --- .editorconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.editorconfig b/.editorconfig index a586af40e2..7dc0cfbaf6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -23,3 +23,7 @@ trim_trailing_whitespace = false [runtime/doc/**.txt] # It can mess up some documentation by trying to strip trailing whitespaces trim_trailing_whitespace = false + +[src/testdir/test*.vim] +# Some tests need trailing whitespaces, for example `set showbreak=>>\ ` +trim_trailing_whitespace = false From b48108d58ea30ba72b635af6ae8d888e7f0fe223 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Sun, 15 Dec 2024 10:38:57 +0100 Subject: [PATCH 108/244] patch 9.1.0928: tests: test_popupwin fails because the filter command fails Problem: tests: test_popupwin fails because the filter command fails Solution: add the "e" flag to the :s command to normalize the screendumps Last Change header so that it doesn't fail on "Pattern not found" The test might still fail, because the "Last Change" hader should always be part of the screendump, but at least the filter command should not cause aborting of the test script. Signed-off-by: Christian Brabandt --- src/testdir/dumps/Test_popup_setbuf_04.vim | 2 +- src/testdir/dumps/Test_popup_setbuf_05.vim | 2 +- src/testdir/dumps/Test_popup_setbuf_06.vim | 2 +- src/version.c | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/testdir/dumps/Test_popup_setbuf_04.vim b/src/testdir/dumps/Test_popup_setbuf_04.vim index f55dbf30d8..b0e9be872b 100644 --- a/src/testdir/dumps/Test_popup_setbuf_04.vim +++ b/src/testdir/dumps/Test_popup_setbuf_04.vim @@ -1,2 +1,2 @@ " replace Last Change Header in help.txt -:1s/|L|a|s|t| |c|h|a|n|g|e|:| |\d|\d|\d|\d| |\w|\w|\w| |\d|\d|/|L|a|s|t| |c|h|a|n|g|e|:| |2|0|2|4| |M|a|y| |2|7|/g +:1s/|L|a|s|t| |c|h|a|n|g|e|:| |\d|\d|\d|\d| |\w|\w|\w| |\d|\d|/|L|a|s|t| |c|h|a|n|g|e|:| |2|0|2|4| |M|a|y| |2|7|/ge diff --git a/src/testdir/dumps/Test_popup_setbuf_05.vim b/src/testdir/dumps/Test_popup_setbuf_05.vim index f55dbf30d8..b0e9be872b 100644 --- a/src/testdir/dumps/Test_popup_setbuf_05.vim +++ b/src/testdir/dumps/Test_popup_setbuf_05.vim @@ -1,2 +1,2 @@ " replace Last Change Header in help.txt -:1s/|L|a|s|t| |c|h|a|n|g|e|:| |\d|\d|\d|\d| |\w|\w|\w| |\d|\d|/|L|a|s|t| |c|h|a|n|g|e|:| |2|0|2|4| |M|a|y| |2|7|/g +:1s/|L|a|s|t| |c|h|a|n|g|e|:| |\d|\d|\d|\d| |\w|\w|\w| |\d|\d|/|L|a|s|t| |c|h|a|n|g|e|:| |2|0|2|4| |M|a|y| |2|7|/ge diff --git a/src/testdir/dumps/Test_popup_setbuf_06.vim b/src/testdir/dumps/Test_popup_setbuf_06.vim index f55dbf30d8..b0e9be872b 100644 --- a/src/testdir/dumps/Test_popup_setbuf_06.vim +++ b/src/testdir/dumps/Test_popup_setbuf_06.vim @@ -1,2 +1,2 @@ " replace Last Change Header in help.txt -:1s/|L|a|s|t| |c|h|a|n|g|e|:| |\d|\d|\d|\d| |\w|\w|\w| |\d|\d|/|L|a|s|t| |c|h|a|n|g|e|:| |2|0|2|4| |M|a|y| |2|7|/g +:1s/|L|a|s|t| |c|h|a|n|g|e|:| |\d|\d|\d|\d| |\w|\w|\w| |\d|\d|/|L|a|s|t| |c|h|a|n|g|e|:| |2|0|2|4| |M|a|y| |2|7|/ge diff --git a/src/version.c b/src/version.c index 6166ce6e16..e795be6d33 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 928, /**/ 927, /**/ From 5a2e0cf5f11c611c9b01f1bd6e7294edf0dd2bf4 Mon Sep 17 00:00:00 2001 From: David Thievon Date: Sun, 15 Dec 2024 19:22:17 +0100 Subject: [PATCH 109/244] patch 9.1.0929: filetype: lalrpop files are not recognized Problem: filetype: lalrpop files are not recognized Solution: detect '*.lalrpop' files as lalrpop filetype (David Thievon) References: https://github.com/lalrpop/lalrpop closes: #16223 Signed-off-by: David Thievon Signed-off-by: Christian Brabandt --- runtime/filetype.vim | 3 +++ src/testdir/test_filetype.vim | 1 + src/version.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index eb1d851289..413eb6eb9a 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1315,6 +1315,9 @@ au BufNewFile,BufRead Kconfig,Kconfig.debug,Config.in setf kconfig " Lace (ISE) au BufNewFile,BufRead *.ace,*.ACE setf lace +" Lalrpop +au BufNewFile,Bufread *.lalrpop setf lalrpop + " Larch Shared Language au BufNewFile,BufRead .lsl call dist#ft#FTlsl() diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 583cca6396..8f7254fd37 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -407,6 +407,7 @@ def s:GetFilenameChecks(): dict> kscript: ['file.ks'], kwt: ['file.k'], lace: ['file.ace', 'file.ACE'], + lalrpop: ['file.lalrpop'], latte: ['file.latte', 'file.lte'], ld: ['file.ld', 'any/usr/lib/aarch64-xilinx-linux/ldscripts/aarch64elf32b.x'], ldapconf: ['ldap.conf', '.ldaprc', 'ldaprc'], diff --git a/src/version.c b/src/version.c index e795be6d33..3f9d8003b8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 929, /**/ 928, /**/ From b34622579ca2ffa701ea6cf27a09b17bf74e6f62 Mon Sep 17 00:00:00 2001 From: h-east Date: Sun, 15 Dec 2024 19:32:39 +0100 Subject: [PATCH 110/244] patch 9.1.0930: tests: test_terminal2 may hang in GUI mode Problem: tests: test_terminal2 may hang in GUI mode Solution: break the loop in gui_mch_update() after at most 99 iterations (h-east) related: #16211 Signed-off-by: h-east Signed-off-by: Christian Brabandt --- src/gui_gtk_x11.c | 4 +++- src/version.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index c037702ad9..284be30889 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -6621,7 +6621,9 @@ gui_mch_draw_part_cursor(int w, int h, guicolor_T color) void gui_mch_update(void) { - while (g_main_context_pending(NULL) && !vim_is_input_buf_full()) + int cnt = 0; // prevent endless loop + while (g_main_context_pending(NULL) && !vim_is_input_buf_full() + && ++cnt < 100) g_main_context_iteration(NULL, TRUE); } diff --git a/src/version.c b/src/version.c index 3f9d8003b8..66bbbe8875 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 930, /**/ 929, /**/ From 3a3a2c921c78a12eac35ef6d6b9cceb117fcc7e1 Mon Sep 17 00:00:00 2001 From: h-east Date: Sun, 15 Dec 2024 19:36:11 +0100 Subject: [PATCH 111/244] patch 9.1.0931: ml_get error in terminal buffer Problem: ml_get error in terminal buffer (user202729) Solution: call update_topline() in win_enter_ext() for terminal buffers (h-east) fixes: #16024 closes: #16211 Signed-off-by: h-east Signed-off-by: Christian Brabandt --- src/testdir/test_terminal2.vim | 44 ++++++++++++++++++++++++++++++++++ src/version.c | 2 ++ src/window.c | 4 ++++ 3 files changed, 50 insertions(+) diff --git a/src/testdir/test_terminal2.vim b/src/testdir/test_terminal2.vim index 166b1792d3..9413905a95 100644 --- a/src/testdir/test_terminal2.vim +++ b/src/testdir/test_terminal2.vim @@ -241,8 +241,52 @@ func Test_termwinscroll() let filtered = filter(copy(lines), {idx, val -> val =~ 'echo ' . i . '\>'}) call assert_equal(1, len(filtered), 'for "echo ' . i . '"') endfor + exe buf . 'bwipe!' +endfunc + +func Test_termwinscroll_topline() + set termwinscroll=1000 mouse=a + terminal + call assert_equal(2, winnr('$')) + let buf = bufnr() + call WaitFor({-> !empty(term_getline(buf, 1))}) + + let num1 = &termwinscroll / 100 * 99 + call writefile(range(num1), 'Xtext', 'D') + if has('win32') + call term_sendkeys(buf, "type Xtext\") + else + call term_sendkeys(buf, "cat Xtext\") + endif + let rows = term_getsize(buf)[0] + " On MS-Windows there is an empty line, check both last line and above it. + call WaitForAssert({-> assert_match(string(num1 - 1), term_getline(buf, rows - 1) .. term_getline(buf, rows - 2))}) + call feedkeys("\N", 'xt') + call feedkeys("i", 'xt') + let num2 = &termwinscroll / 100 * 10 + call writefile(range(num2), 'Xtext', 'D') + if has('win32') + call term_sendkeys(buf, "timeout /t 1 && type Xtext\") + else + call term_sendkeys(buf, "sleep 1; cat Xtext\") + endif + " Change the normal window to the current window with keystrokes. + call feedkeys("\w", 'xt') + call WaitForAssert({-> assert_notequal(buf, bufnr())}) + let rows = term_getsize(buf)[0] + " On MS-Windows there is an empty line, check both last line and above it. + call WaitForAssert({-> assert_match(string(num2 - 1), term_getline(buf, rows - 1) .. term_getline(buf, rows - 2))}) + " Change the terminal window to the current window using mouse operation. + call test_setmouse(1, 1) + call feedkeys("\", "xt") + call WaitForAssert({-> assert_equal(buf, bufnr())}) + " Before the fix, E340 and E315 would occur multiple times at this point. + let wm = winheight(0) * 2 + let num3 = num1 + num2 - (num1 / 10) - wm + call assert_inrange(num3 - wm, num3 + wm, getwininfo(bufwinid(buf))[0].topline) exe buf . 'bwipe!' + set termwinscroll& mouse& endfunc " Resizing the terminal window caused an ml_get error. diff --git a/src/version.c b/src/version.c index 66bbbe8875..82d353f1d4 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 931, /**/ 930, /**/ diff --git a/src/window.c b/src/window.c index 23a52ef8db..af29a698d3 100644 --- a/src/window.c +++ b/src/window.c @@ -5578,6 +5578,10 @@ win_enter_ext(win_T *wp, int flags) did_decrement = TRUE; } #endif +#ifdef FEAT_TERMINAL + if (bt_terminal(curwin->w_buffer)) + update_topline(); +#endif win_fix_current_dir(); From 6fea0a54804fc36ab7138a66210b0eb380d96198 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Sun, 15 Dec 2024 20:47:37 +0100 Subject: [PATCH 112/244] runtime(help): Add Vim lang annotation support for codeblocks closes: #16215 Co-authored-by: zeertzjq Signed-off-by: Shougo Matsushita Signed-off-by: Christian Brabandt --- runtime/doc/helphelp.txt | 10 ++++++++-- runtime/syntax/help.vim | 18 +++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index 3da38ecc51..948ef72488 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 9.1. Last change: 2024 Nov 19 +*helphelp.txt* For Vim version 9.1. Last change: 2024 Dec 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -437,7 +437,13 @@ also implicitly stops the block of ex-commands before it. E.g. > echo "Example" endfunction < - +It's possible to add Vim syntax highlighting support to code examples. This +can be done by adding "vim" after the greater than (>) character (">vim"). +E.g: >vim + function Example_Func() + echo "Example" + endfunction +< The following are highlighted differently in a Vim help file: - a special key name expressed either in <> notation as in , or as a Ctrl character as in CTRL-X diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim index ae7e3bc6a7..3886164b33 100644 --- a/runtime/syntax/help.vim +++ b/runtime/syntax/help.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Vim help file " Maintainer: The Vim Project -" Last Change: 2024 Oct 16 +" Last Change: 2024 Dec 15 " Former Maintainer: Bram Moolenaar " Quit when a (custom) syntax file was already loaded @@ -15,10 +15,22 @@ set cpo&vim syn match helpHeadline "^[A-Z.][-A-Z0-9 .,()_']*?\=\ze\(\s\+\*\|$\)" syn match helpSectionDelim "^===.*===$" syn match helpSectionDelim "^---.*--$" + +unlet! b:current_syntax +" sil! to prevent E403 +silent! syntax include @VimScript syntax/vim.vim if has("conceal") syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<" concealends -else - syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<" + syn region helpExampleVimScript matchgroup=helpIgnore + \ start=/^>vim$/ start=/ >vim$/ + \ end=/^[^ \t]/me=e-1 end=/^$" start="^>$" end="^[^ \t]"me=e-1 end="^<" + syn region helpExampleVimScript matchgroup=helpIgnore + \ start=/^>vim$/ start=/ >vim$/ + \ end=/^[^ \t]/me=e-1 end=/^ Date: Sun, 15 Dec 2024 21:17:49 +0100 Subject: [PATCH 113/244] runtime(doc): update the change.txt help file Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/doc/change.txt | 17 ++++++++--------- runtime/doc/tags | 1 + runtime/doc/various.txt | 5 ++++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index e4366551d6..301eacee26 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 9.1. Last change: 2024 Nov 12 +*change.txt* For Vim version 9.1. Last change: 2024 Dec 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1512,18 +1512,17 @@ since formatting is highly dependent on the type of file. It makes sense to use an |autoload| script, so the corresponding script is only loaded when actually needed and the script should be called format.vim. -For example, the XML filetype plugin distributed with Vim in the $VIMRUNTIME -directory, sets the 'formatexpr' option to: > +For example, the XML filetype plugin distributed with Vim in the +$VIMRUNTIME/ftplugin directory, sets the 'formatexpr' option to: > setlocal formatexpr=xmlformat#Format() That means, you will find the corresponding script, defining the -xmlformat#Format() function, in the directory: -`$VIMRUNTIME/autoload/xmlformat.vim` +xmlformat#Format() function, in the file `$VIMRUNTIME/autoload/xmlformat.vim` Here is an example script that removes trailing whitespace from the selected -text. Put it in your autoload directory, e.g. ~/.vim/autoload/format.vim: > - +text. Put it in your autoload directory, e.g. ~/.vim/autoload/format.vim: +>vim func! format#Format() " only reformat on explicit gq command if mode() != 'n' @@ -1556,7 +1555,7 @@ debugging it helps to set the 'debug' option. *right-justify* There is no command in Vim to right justify text. You can do it with -an external command, like "par" (e.g.: "!}par" to format until the end of the +an external command, like "par" (e.g.: `:.,}!par` to format until the end of the paragraph) or set 'formatprg' to "par". *format-comments* @@ -1622,7 +1621,7 @@ type of comment string. A part consists of: some indent for the start or end part that can be removed. When a string has none of the 'f', 's', 'm' or 'e' flags, Vim assumes the -comment string repeats at the start of each line. The flags field may be +comment string repeats at the start of each line. The {flags} field may be empty. Any blank space in the text before and after the {string} is part of the diff --git a/runtime/doc/tags b/runtime/doc/tags index 0f8b2051f4..dde183e69a 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -2034,6 +2034,7 @@ $quote eval.txt /*$quote* : cmdline.txt /*:* :! various.txt /*:!* :!! various.txt /*:!!* +:!-range various.txt /*:!-range* :!cmd various.txt /*:!cmd* :!start os_win32.txt /*:!start* :# various.txt /*:#* diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 0ebcd06841..f8c3bef28e 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 9.1. Last change: 2024 Nov 23 +*various.txt* For Vim version 9.1. Last change: 2024 Dec 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -322,6 +322,9 @@ g8 Print the hex values of the bytes used in the in Vim window. `:term ++shell ++close {cmd}` could serve as close approximation to what `:!{cmd}` does. + *:!-range* +:{range}!{cmd} Like |:!| but execute {cmd} for each line in the + {range}. *:!!* :!! Repeat last ":!{cmd}". From b100477190caa8680df0bf19951b79d65665aa7d Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Sun, 15 Dec 2024 21:36:55 +0100 Subject: [PATCH 114/244] translation(it): add Italian translation for the interactive tutor Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- runtime/tutor/it/vim-01-beginner.tutor | 1029 +++++++++++++++++++ runtime/tutor/it/vim-01-beginner.tutor.json | 45 + 2 files changed, 1074 insertions(+) create mode 100644 runtime/tutor/it/vim-01-beginner.tutor create mode 100644 runtime/tutor/it/vim-01-beginner.tutor.json diff --git a/runtime/tutor/it/vim-01-beginner.tutor b/runtime/tutor/it/vim-01-beginner.tutor new file mode 100644 index 0000000000..bb8787aaaf --- /dev/null +++ b/runtime/tutor/it/vim-01-beginner.tutor @@ -0,0 +1,1029 @@ +# Benvenuto alla guida introduttiva VIM + +Vim è un editor molto potente, che ha molti comandi, troppi per poterli +spiegare in una guida introduttiva come questa. Questa guida introduttiva è +stata preparata per descrivere i comandi che servono a poter usare facilmente +Vim come editor di uso generale. È IMPORTANTE ricordarsi che questa guida è +stata preparata per apprendere facendo pratica. Ciò significa che occorre fare +gli esercizi, per poter apprendere davvero. Limitandosi a leggere il testo, si +finirebbe per dimenticare presto le cose più importanti! + +Per iniziare, assicuratevi che il tasto di blocco maiuscole NON sia premuto e +premete ripetutamente il tasto `j`{normal} per muovere il cursore, finché la +Lezione 0 riempia completamente lo schermo. + +# Lezione 0 + +NOTA: I comandi dati durante le lezioni modificheranno il testo, ma le +modifiche da voi effettuate non saranno salvate. Quindi non preoccupatevi +se fate pasticci; ricordate che premendo il tasto []() e poi +[u](u) verrà annullata l'ultima modifica. + +Questa guida è interattiva, e ci sono alcune cose che dovreste sapere. +- Battete []() sui link [come questo](holy-grail ) per aprire la parte di help relativa. +- O semplicemente battete [K](K) su una parola qualsiasi per trovare la relativa + documentazione! +- Talvolta vi viene richiesto di modificare righe di testo come +questa qui +Una volta fatte correttamente le modifiche richieste, il segno ✗ a sinistra +della riga diverrà ✓. Penso iniziate a intuire quanto Vim sia bello. ;) +Altre volte vi viene richiesto di eseguire un comando (vedere più sotto): +~~~ cmd + :help +~~~ +o di battere una sequenza di tasti +~~~ normal + 0fd3wP$P +~~~ + +I testi racchiusi tra i segni '<' e '>' (come ``{normal}) indicano un tasto +da premere, invece di un testo da immettere. + +Ora, avanziamo verso la prossima Lezione (usa il tasto `j`{normal} per scorrere +verso il basso). + +# Lezione 1.1: SPOSTARE IL CURSORE + +** Per spostare il cursore, premete i tasti `h`, `j`, `k`, `l` come indicato. + + ↑ + k Nota: Il tasto `h`{normal} è a sinistra e sposta a sinistra. + ↠h l → Il tasto `l`{normal} è a destra e sposta a destra. + j Il tasto `j`{normal} assomiglia a una freccia in giù. + ↓ + + 1. Muovete il cursore sullo schermo, finché vi sentite a vostro agio. + + 2. Tenete schiacciato il tasto "giù" (`j`{normal}) per far ripetere l'azione. + Adesso sapete come andare alla prossima Lezione. + + 3. Usando il tasto "giù", passate alla Lezione 1.2. + +NOTA: Se non siete sicuri di aver usato i tasti giusti, premete per + tornare al modo Normal. Poi immettete ancora il comando che volevate. + +NOTA: I tasti del cursore hanno lo steso effetto. Ma usando hjkl sarete in grado + di spostarvi molto più velocemente, dopo che vi siete abituati. Davvero! + +# Lezione 1.2: USCIRE DA VIM + +!! NOTA: Prima di eseguire i passi elencati sotto, +leggetevi l'intera Lezione !! + + 1. Premete il tasto (per accertarvi di essere nel modo Normal). + + 2. Battete: + + `:q!`{vim} ``{normal}. + + Così si esce dall'editor, SCARTANDO qualsiasi modifica fatta. + + 3. Aprite vim e tornate qui eseguendo il comando che vi ha portato a questa + guida. Potrebbe essere: + + :Tutor + + 4. Se siete sicuri di aver memorizzato questi passi, eseguite i passi + dall'1 al 3 per uscire dall'editor e rientrarvi. + +NOTA: [:q!](:q) SCARTA qualsiasi modifica fatta. Tra qualche Lezione + vedremo come salvare le modifiche su un file. + + 5. Spostatevi in giù col cursore, alla Lezione 1.3. + +# Lezione 1.3: MODIFICARE TESTO - CANCELLARE + +** Premete `x`{normal} per cancellare il carattere sotto il cursore. ** + + 1. Portatevi col cursore alla riga qui sotto marcata ✗. + + 2. Per correggere, spostate il cursore posizionandolo sopra il + carattere da cancellare. + + 3. Premete [il tasto x](x) per cancellare il carattere di troppo. + + 4. Ripetete i passi da 2 a 4 finché la frase è corretta. + +La mmucca saltòò soppra lla luuna. + + 5. Ora che la riga è corretta, passate alla Lezione 1.4. + +NOTA: Nel seguire questa guida, non tentate di memorizzare, è + meglio imparare facendo pratica. + +# Lezione 1.4: EDITARE UN TESTO: INSERIMENTI + +** Premete `i`{normal} per inserire del testo. ** + + 1. Portatevi col cursore alla prima riga sotto, marcata ✗. + + 2. Per rendere la riga uguale alla seguente, spostate il cursore fino + a sovrapporvi al print carattere DOPO il testo che va inserito. + + 3. Premete `i`{normal} e immettete le aggiunte richieste. + + 4. Dopo aver corretto ogni siingolo errore premete ``{normal} + per ritornare al modo Normal. + Ripetete i passi da 2 a 4 per correggere la frase. + +Un po' testo mca questa . +Un po' di testo manca da questa riga. + + 5. Quando vi sentite a vostro agio nell'inserire del testo, passate alla + Lezione 1.5. + +# Lezione 1.5: EDITARE UN TESTO: AGGIUNGERE A FINE RIGA + +** Premete `A`{normal} per aggiungere del testo a fine riga. ** + + 1. Portatevi col cursore alla prima riga sotto marcata ✗. + Non importa su che carattere sta il cursore nella riga. + + 2. Premete [A](A) e aggiungete quanto manca. + + 3. Una volta finito di aggiungere testo, premete ``{normal} + per ritornare al modo Normal. + + 4. Portatevi col cursore alla seconda riga marcata ✗ e ripetete + i passi 2 e 3 per correggere la frase. + +Un po' di testo manca da que +Un po' di testo manca da questa riga. +Un po' di testo man +Un po' di testo manca anche qui. + + 5. Quando vi sentite a vostro agio nell'aggiungere del testo in fondo + alla riga, passate alla Lezione 1.6. + +# Lezione 1.6: EDITARE UN FILE + +** Usate `:wq`{vim} per salvare un file e uscire da Vim. ** + +!! NOTA: Prima di eseguire i passi elencati sotto, +leggetevi l'intera Lezione !! + + 1. Uscite da questa guida come avete fatto nella Lezione 1.2: `:q!`{vim} + O, se avete accesso a un altro terminale, digitate quel che segue in + quel terminale. + + 2. Dal prompt della shell battete questo comando: +~~~ sh + $ vim tutor +~~~ + 'vim' è il comando che fa partire l'editor Vim, 'tutor' è il nome + del file che desiderate editare. Usate un file che siete in grado di + modificare. + + 3. Inserite e cancellate del testo, come visto nella Lezione precedente. + + 4. Salvate il file con le modifiche da voi fatte e uscite da Vim immettendo: +~~~ cmd + :wq +~~~ + + Notate che occorre premete `` perché il comando sia eseguito. + + 5. Se siete usciti dalla guida Vim nel Passo 1, fate ripartire la guida Vim + e posizionatevi sul sommario qui sotto. + + 6. Dopo aver letto e capito tutti i passi visti qui sopra: metteteli in pratica. + +# Lezione 1 SOMMARIO + + 1. Il cursore su muove usando i tasti freccia o i tasti h j k l. + h (sinistra) j (giù) k (sù) l (destra) + + 2. Per far partire Vim dal prompt della shell immettete: + +~~~ sh + $ vim NOME-DI-FILE +~~~ + + 3. Per uscire da Vim battete: ``{normal} `:q!`{vim} ``{normal} + per buttar via tutte le modifiche. + OPPURE battete: ``{normal} `:wq`{vim} ``{normal} + per salvare le modifiche fatte. + + 4. Per cancellare il carattere sotto il cursore battete: `x`{normal} + + 5. Per inserire o aggiungere in fondo del testo battete: + `i`{normal} inserire testo ``{normal} inserire prima del cursore. + `A`{normal} aggiungere testo ``{normal} aggiungere a fine riga. + +NOTA: Premendo ``{normal} si entra nel modo Normal e, se del caso, si + annulla un comando parzialmente immesso, che non volete eseguire. + +Ora continuate con la Lezione 2. + +# Lezione 2.1: COMANDI PER CANCELLARE + +** Battete `dw`{normal} per cancellare una parola. ** + + 1. Premete ``{normal} per assicurarvi di essere nel modo Normal. + + 2. Portatevi col cursore alla riga qui sotto marcata ✗. + + 3. Portatevi col cursore all'inizio di una parola che va cancellata + + 4. Battete [d](d)[w](w) per cancellare la parola. + +Ci sono penna alcune parole matita che non appartengono carta a questa frase. + + 5. Ripetete i passi 3 e 4 finché la frase è corretta e andate alla Lezione 2.2. + +# Lezione 2.2: ANCORA COMANDI PER CANCELLARE + +** Battete `d$`{normal} per cancellare fino a fine riga. ** + + 1. Premete ``{normal} per assicurarvi di essere nel modo Normal. + + 2. Portatevi col cursore alla riga qui sotto marcata ✗. + + 3. Portatevi col cursore alla fine della riga corretta (DOPO il primo . ). + + 4. Battete `d$`{normal} per cancellare fino a fine riga. + +Qualcuno ha scritto due volte la fine di questa riga. fine di questa riga. + + 5. Passate alla Lezione 2.3 per capire cosa sta accadendo. + +# Lezione 2.3: OPERATORI E MOVIMENTI + +Molti comandi che modificano del testo sono composti da un [operatore](operator) e +da un [movimento](navigation). +Il formato di un comando delete con l'operatore [d](d) è il seguente: + + d movimento + + Dove: + d - è l'operatore per "delete" (cancella) + movimento - indice dove l'operatore agisce (vedere sotto). + + Una breve lista di movimenti: + [w](w) - fino a inizio prossima parola, ESCLUSO il carattere iniziale. + [e](e) - fino alla fine della parola corrente, INCLUSO l'ultimo carattere. + [$]($) - fino a fine riga, INCLUSO l'ultimo carattere. + + Quindi battendo `de`{normal} cancella dalla posizione del cursore a fine parola. + +NOTA: Premendo solo il carattere di movimento in modo Normal, senza un operatore + sposterà il cursore come specificato. + +# Lezione 2.4: USARE UN CONTATORE PER UN MOVIMENTO + +** Un numero prima di un movimento lo ripete altrettante volte. ** + + 1. Portatevi col cursore all'inizio della riga qui sotto, marcata ✓ . + + 2. Battete `2w`{normal} per spostare il cursore due parole in avanti. + + 3. Battete `3e`{normal} per spostare il cursore alla fine della terza parola + in avanti. + + 4. Battete `0`{normal} ([zero](0)) per andare all'inizio della riga. + + 5. Ripetete i passi 2 e 3 con numeri differenti. + +Questa è solo una riga con delle parole per imparare a muovere il cursore. + + 6. Passate alla Lezione 2.5. + +# Lezione 2.5: USARE UN CONTATORE PER CANCELLARE DI PIÙ + +** Un numero prima di un operatore lo ripete altrettante volte. ** + +Usando l'operatore delete con un movimento di quelli visti sopra, si può +inserire un contatore prima del movimento, per cancellare di più + d numero movimento + + 1. Portatevi col cursore alla prima parola MAIUSCOLA sulla riga marcata ✗. + + 2. Battete `d2w`{normal} per cancellare le due parole MAIUSCOLE. + + 3. Ripetete i passi 1 e 2 con un contatore differente per cancellare tutte + le parole MAIUSCOLE consecutive, con un solo comando. + +Questa ABC DE riga FGHI JK LMN OP di parole è stata Q RS TUV pulita. + +# Lezione 2.6: AGIRE SU INTERE RIGHE + +** Battete `dd`{normal} per cancellare un'intera riga. ** + +A causa della frequenza con cui capita di cancellare intere righe, +chi ha progettato Vim ha deciso che sarebbe stato più semplice battere +due volte la lettera d per cancellare una riga. + + 1. Portatevi col cursore alla seconda riga nella frase sotto. + 2. Battete [dd](dd) per cancellare la riga. + 3. Poi spostatevi alla riga numero 4. + 4. Battete `2dd`{normal} per cancellare due righe. + +1) Le rose sono rosse, +2) Il fango è divertente, +3) Le viole sono blu, +4) Io ho un'automobile, +5) Gli orologi ti dicono l'ora, +6) Dolce è lo zucchero, +7) Ma non quanto sei tu. + +# Lezione 2.7: IL COMANDO UNDO + +** Premete `u`{normal} per annullare l'ultimo comando, `U`{normal} per farlo su un'intera riga. ** + + 1. Portatevi col cursore alla riga qui sotto marcata ✗ e posizionatelo + sul primo errore. + 2. Battete `x`{normal} per cancellare il primo carattere indesiderato. + 3. Poi battete `u`{normal} per annullare l'ultimo comando eseguito. + 4. Poi correggete tutti gli errori sulla riga con il comando `x`{normal}. + 5. Poi battete `U`{normal} per riportare la riga a come era all'inizio. + 6. Poi battete `u`{normal} più volte per annullare l'effetto di `U`{normal} + e i comandi precedenti. + 7. Ora battete ``{normal} (Control + R) più volte per rieseguire i comandi + (annullare gli annullamenti). + +Corregggete gli errori ssu queesta riga e rimettetelli usanndo undo. + + 8. Questi comandi sono molto utili. Potete procedere al Sommario della Lezione 2. + +# Lezione 2 SOMMARIO + + 1. Per cancellare dal cursore fino alla parola seguente battete: `dw`{normal} + 2. Per cancellare dal cursore a fine riga battete: `d$`{normal} + 3. Per cancellare un'intera riga battete: `dd`{normal} + 4. Per ripetere un movimento metteteci davanti un numero: `2w`{normal} + + 5. Il formato di un comando di modifica è: + operatore [numero] movimento + dove: + operatore - indica l'azione, come [d](d) per cancellare (delete) + [numero] - è un contatore opzionale per ripetere il movimento + movimento - indica quanto esteso è il campo su cui operare, come: + [w](w) (parola, word), + [$]($) (fine della riga), etc. + + 6. Per spostarsi a inizio riga si usa uno zero: [0](0) + + 7. Per annullare azioni precedenti, battete: `u`{normal} (u minuscolo) + Per annullare tutte le modifiche a una riga, battete: `U`{normal} (U maiuscolo) + Per annullare gli annulli, battete: ``{normal} + +# Lezione 3.1: IL COMANDO PUT + +** Battete `p`{normal} per inserire il testo appena cancellato dopo il cursore. ** + + 1. Portatevi col cursore alla prima riga marcata ✓ sotto. + + 2. Battete `dd`{normal} per cancellare la riga e metterla in un registro Vim. + + 3. Portatevi col cursore alla riga c), SOPRA dove va messa la riga cancellata. + + 4. Battete `p`{normal} per inserire la riga sotto quella dove è il cursore. + + 5. Ripetete i passi da 2 a 4 per inserire tutte le righe nell'ordine corretto. + +d) Puoi impararla anche tu? +b) Le viole sono blu, +c) L'intelligenza si impara. +a) Le rose sono rosse, + +# Lezione 3.2: IL COMANDO RIMPIAZZA + +** Battete `rx`{normal} per rimpiazzare il carattere sotto il cursore con x. ** + + 1. Portatevi col cursore alla prima riga sotto marcata ✗. + + 2. Spostate il cursore fino a posizionarlo sopra al primo errore. + + 3. Battete `r`{normal} e poi il carattere "giusto". + + 4. Ripetete i passi 2 e 3 finché la prima riga è uguale alla seconda. + +Quwndo questa riga è stata imbessa, qualcuno ha premato i tasti sballiati! +Quando questa riga è stata immessa, qualcuno ha premuto i tasti sbagliati! + + 5. Ora passate alla Lezione 3.3. + +NOTA: Non dimenticate è meglio imparare provando, e non memorizzando. + +# Lezione 3.3: L'OPERATORE CAMBIA `c`{normal} + +** Per cambiare fino alla fine di una parola, battete `ce`{normal}. ** + + 1. Portatevi col cursore alla prima riga sotto marcata ✗. + + 2. Posizionate il cursore sulla prima "a" di "rana". + + 3. Battete `ce`{normal} e la parola corretta (in questo caso, battete "iga" ). + + 4. Premete ``{normal} e posizionatevi sul successivo carattere da + cambiare. + + 5. Ripetete i passi 3 e 4 finché la prima frase è uguale alla seconda. + +Questa rana ha alcune papere che vanga cambiate uscita il comando change. +Questa riga ha alcune parole che vanno cambiate usando il comando change. + +Notare che [c](c)e cancella la parole e vi mette in modo Insert. + +# Lezione 3.4: ALTRE MODIFICHE USANDO `c`{normal} + +** L'operatore cambia si usa con gli stessi movimenti di cancella. ** + + 1. L'operatore cambia funziona come l'operatore cancella. Il formato è: + + c [numero] movimento + + 2. I movimenti sono gli stessi, come `w`{normal} (parola) e `$`{normal} (fine-riga). + + 3. Spostatevi alla prima riga sotto marcata ✗. + + 4. Portatevi col cursore alla prima parola errata. + + 5. Battete `c$`{normal} e battete il resto della riga come la seguente + e premete ``{normal}. + +La fine di questa riga ha bisogno di aiuto per divenire uguale alla seguente. +La fine di questa riga va corretta usando il comando `c$`. + +NOTA: Si può usare il tasto Backspace per correggere errori di battitura. + +# Lezione 3 SOMMARIO + + 1. Per reinserire del testo che è stato appena cancellato, battete [p](p). + Questo comando mette il testo appena cancellato DOPO il cursore + (se una riga intera era stata cancellata, questa diverrà la riga SOTTO + il cursore). + + 2. Per rimpiazzare il carattere sotto il cursore, battete [r](r) e poi il + carattere che volete sostituire a quello. + + 3. Il comando [change](c) consente di cambiare il testo dalla posizione + del cursore fino a dove il movimento lo porta. Battete `ce`{normal} + per cambiare dalla posizione del cursore alla fine della parola, e + `c$`{normal} per cambiare il testo fino alla fine della riga. + + 4. Il formato per il comando che cambia del testo è: + + c [numero] movimento + +Adesso passate alla prossima Lezione. + +# Lezione 4.1: POSIZIONE DEL CURSORE E STATO DEL FILE + +** Battete ``{normal} per visualizzare la vostra posizione + all'interno del file, e lo stato del file. + Battete `G`{normal} per andare a una data riga nel file. ** + +!! NOTA: Prima di eseguire i passi elencati sotto, +leggetevi l'intera Lezione !! + + 1. Tenendo premuto il tasto ``{normal} premete `g`{normal}. Questo si indica + scrivendo ``{normal}. Un messaggio apparirà in fondo alla pagina + con il nome del file e la posizione all'interno del file. Memorizzate + il numero di riga per il Passo 3 sotto. + +NOTA: La posizione del cursore si può vedere nell'angolo in basso a destra + dello schermo. Ciò accada se è stata specificata l'opzione ['ruler']('ruler'). + 2. Battete [G](G) per portarvi in fondo al file. + Battete [gg](gg) per portarvi in cima al file. + + 3. Battete il numero della riga in cui eravate e poi `G`{normal}. In questo modo + tornerete alla riga in cui eravate al momento di battere ``{normal}. + + 4. Se vi sentite sicuri del fatto vostro, eseguite i passi da 1 a 3. + +# Lezione 4.2: IL COMANDO CERCA + +** Battete `/`{normal} seguito da una frase, per cercare quella frase. ** + + 1. In modo Normal battete il carattere `/`{normal}. Notate che il carattere + stesso e il cursore sono in fondo alla schermo, dove vengono anche + visualizzati i comandi che iniziano per `:`{normal}. + + 2. Ora battete 'errroore' ``{normal}. Questa è la parola che volete + cercare. + + 3. Per cercare ancora la stessa frase, simply battete [n](n). + Per cercare la stessa frase nella direzione opposta, battete [N](N). + + 4. Per cerca una frase all'indietro, usate [?](?) invece che `/`{normal}. + + 5. Per tornare dove eravate prima premete ``{normal} (tenendo premuto + il tasto ``{normal} premete la lettera `o`{normal}). Ripetete + per tornare ancora più indietro. ``{normal} per andare in avanti. + +"errroore" non è il modo giusto di scrivere errore; errroore è un errore. + +NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio, a meno + che l'opzione ['wrapscan']('wrapscan') sia inattiva. + +# Lezione 4.3: CERCARE PARENTESI CORRISPONDENTI + +** Battete `%`{normal} per trovare una corrispondenza a ),], o }. ** + + 1. Posizionate il cursore su una qualsiasi (, [, o { nella riga sotto + marcata ✓. + + 2. Ora battete il carattere [%](%). + + 3. Il cursore si sposterà sulla parentesi corrispondente. + + 4. Battete `%`{normal} per spostare il cursore sull'altra parentesi + corrispondente. + + 5. Portatevi col cursore su un'altra (,),[,],{ o } e guardate cosa fa + il comando `%`{normal}. + +Questa ( è una riga di test che contiene (, [, ] e { } al suo interno. )) + +NOTA: Questo comando è molto utile per correggere un programma con qualche + parentesi mancante o posizionata male! + +# Lezione 4.4: IL COMANDO SOSTITUISCI + +** Battete `:s/vecchio/nuovo/g` per sostituire "nuovo" a "vecchio". ** + + 1. Portatevi col cursore alla riga qui sotto marcata ✗. + + 2. Battete +~~~ cmd + :s/laa/la/ +~~~ + + NOTATE che il comando [:s](:s) la cambiato solo il primo "laa" della riga. + + 3. Adesso battete +~~~ cmd + :s/laa/la/g +~~~ + + Aggiungendo il flag [flag](:s_flags) si chiede di sostituire globalmente + sulla riga, ossia di cambiare tutte le occorrenze di "laa" della riga. + +Di solito laa stagione migliore per ammirare i fiori è laa primavera. + + 4. Per cambiare ogni occorrenza di una stringa in un gruppo di righe + battete +~~~ cmd + :#,#s/vecchio/nuovo/g +~~~ + Dove #,# sono i numeri iniziale e finale del gruppo di righe dove va + fatta la sostituzione. + + Battete +~~~ cmd + :%s/vecchio/nuovo/g +~~~ + per cambiare ogni occorrenza di una stringa nell'intero file. + + Battete +~~~ cmd + :%s/vecchio/nuovo/gc +~~~ + per trovare ogni occorrenza di una stringa nell'intero file, e ricevere + la richiesta se cambiare oppure no ogni particolare occorrenza. + +# Lezione 4 SOMMARIO + + 1. ``{normal} visualizza posizione e stato del file. + `G`{normal} va all'ultima riga del file. + numero `G`{normal} va al numero di riga specificato. + `gg`{normal} va alla prima riga del file. + + 2. Battendo `/`{normal} seguito da una frase cerca la frase in AVANTI. + Battendo `?`{normal} seguito da una frase cerca la frase all'INDIETRO. + Dopo aver trovato una corrispondenza battete `n`{normal} per cercare la + corrispondenza successiva nella stessa direzione, oppure `N`{normal} + per cercarla nella direzione opposta. + ``{normal} vi riposta indietro a posizioni precedenti, + ``{normal} vi riporta avanti verso le posizioni più recenti. + + 3. Battendo `%`{normal} mentre il cursore è su (,),[,],{, o } sposta il + cursore alla parentesi corrispondente. + + 4. Per sostituire "nuovo" alla prima occorrenza di "vecchio" in una riga + battete +~~~ cmd + :s/vecchio/nuovo +~~~ + Per sostituire "nuovo" per tutti i "vecchio" di una riga battete +~~~ cmd + :s/vecchio/nuovo/g +~~~ + Per sostituire frasi nell'intervallo di righe da "#" a "#" battete +~~~ cmd + :#,#s/vecchio/nuovo/g +~~~ + Per sostituire tutte le occorrenze nel file battete +~~~ cmd + :%s/vecchio/nuovo/g +~~~ + Per chiedere conferma per ogni possibile modifica, aggiungete il flag 'c' +~~~ cmd + :%s/vecchio/nuovo/gc +~~~ +%%%% +# Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO + +** Battete `:!`{vim} seguito da un comando esterno, per eseguire quel comando. ** + + 1. Battete il familiare comando `:`{normal} per portare il cursore in fondo allo + schermo. Ciò vi consente di immettere un comando dalla riga-di-comando. + + 2. Ora battete il carattere [!](!cmd) (punto esclamativo). Questo permette di + eseguire qualsiasi comando esterno della shell. + + 3. Come esempio battete "ls" dopo il "!" e poi date ``{normal}. + Ciò vi mostrerà una lista dei file nella vostra directory, proprio come se + deste il comando dalla shell. + +NOTA: Si può eseguire qualsiasi comando esterno in questo modo, si possono + anche specificare degli argomenti per il comando. + +NOTA: Tutti il comandi `:`{vim} vanno completati battendo ``{normal}. + Da qui in poi non lo ricorderemo tutte le volte. + +# Lezione 5.2: RISCRIVERE I FILE + +** Per salvare le modifiche fatte al testo, battete `:w`{vim} NOME-FILE. ** + + 1. Battete `:!ls`{vim} per ottenere la lista dei file nella vostra directory. + Già sapete di dover battere ``{normal} per far eseguire il comando. + + 2. Scegliete un nome-file che ancora non esiste, come TEST. + + 3. Poi battete: +~~~ cmd + :w TEST +~~~ + (dove TEST indica il nome-file da voi scelto.) + + 4. Questo comando salva l'intero file (il file Vim Tutor) con il nome TEST. + Per verificarlo, battete `:!ls`{vim} ancora per vedere i file nella + vostra directory. + +NOTA: Se uscite da Vim e chiamate Vim di nuovo battendo `vim TEST`, il file + in edit è una copia esatta del file di guida, quando è stato salvato. + + 5. Ora cancellate il file battendo: +~~~ cmd + :!rm TEST +~~~ + +# Lezione 5.3: SCRIVERE SOLO PARTE DEL TESTO + +** Per salvare solo una parte del file, battete `v`{normal} movimento + `:w NOME-FILE`{vim}. ** + + 1. Portatevi col cursore su questa riga. + + 2. Premete [v](v) e spostate il cursore alla riga marcata 5. qui sotto. + Notate che il testo selezionato è evidenziato. + + 3. Premete il tasto `:`{normal}. A fondo schermo apparirà + + :'<,'> + + 4. Battete + + `:w TEST`{vim} + + dove TEST è un nome-file non ancora esistente. Verificate di vedere + + `:'<,'>w TEST`{vim} + + prima di premere ``{normal}. + + 5. Vim scriverà le righe selezionate al file TEST. Usate `:!ls`{vim} per + controllare. + Non cancellate subito il file! Sarà usato nella prossima Lezione. + +NOTA: Premendo [v](v) iniziate il modo [selezione Visuale](visual-mode). Potete + usare il cursore per rendere la selezione più piccola o più grande. + Poi potete usare un operatore per fare qualcosa col testo così + selezionato. Per esempio, `d`{normal} cancella tutto il testo. + +# Lezione 5.4: AGGIUNGERE INTERI FILE E UNIRE FILE + +** Per inserire il contenuto di un file, battete `:r NOME-FILE`{vim}. ** + + 1. Posizionate il cursore sopra questa riga. + +NOTA: Dopo aver eseguito il Passo 2 vedrete del testo dalla Lezione 5.3. + Quindi, spostatevi in GIÙ per vedere di nuovo questa Lezione. + + 2. A questo punto, inserite il vostro file TEST usando il comando + + `:r TEST`{vim} + + dove TEST è il nome del file che avete usato più sopra. + Il file da voi letto viene inserito sotto la riga del cursore. + + 3. Per verificare che è stato inserito un file, portatevi indietro col + cursore e vedrete che ci sono ora due copie della Lezione 5.3, quella + originale e quella inserita da voi, prendendola dal file. + +NOTA: Si può anche leggere l'output prodotto da un comando esterno. + Per esempio, + + `:r !ls`{vim} + + mette l'output del comando `ls` a partire dalla riga sotto il cursore. + +# Lezione 5 SOMMARIO + + 1. [:!comando](:!cmd) esegue un comando esterno. + + Alcune esempi utili sono: + `:!ls`{vim} - mostra i file di una directory + `:!rm NOME-FILE`{vim} - cancella il file NOME-FILE + + 2. [:w](:w) NOME-FILE scrive il file in edit su disco con il nome + NOME-FILE. + + 3. [v](v) movimento :w NOME-FILE salva le righe selezionate in + modo Visual nel file chiamato NOME-FILE. + + 4. [:r](:r) NOME-FILE legge da disco il file NOME-FILE e lo + inserisce nella riga sotto il cursore. + + 5. [:r !dir](:r!) legge l'output del comando dir e lo + inserisce nella riga sotto il cursore. + +# Lezione 6.1: IL COMANDO OPEN + +** Battete `o`{normal} per aprire una nuova riga sotto a quella del cursore + e per mettervi in modo Insert sulla riga. ** + + 1. Portatevi col cursore alla riga qui sotto marcata ✓. + + 2. Battete la lettera minuscola `o`{normal} per [aprire](o) una riga sotto il + cursore e mettervi in modo Insert. + + 3. Ora battete del testo e premete ``{normal} per uscire dal modo Insert. + +Dopo battuto `o`{normal} il cursore si sposta sulla riga nuova in modo Insert. + + 4. Per aprire una riga SOPRA il cursore, semplicemente battete una + [O maiuscola](O), invece che una `o`{normal} minuscola. + Provate a farlo con la riga sotto. + +Aprite una riga sopra questa battendo O mentre il cursore è su questa riga. + +# Lezione 6.2: IL COMANDO AGGIUNGI + +** Battete `a`{normal} per inserire del testo DOPO il cursore. ** + + 1. Portatevi col cursore all'inizio della riga sotto marcata ✗. + + 2. Premete `e`{normal} fino a che il cursore sia alla fine di "ri". + + 3. Battete la lettera minuscola `a`{normal} per [aggiungere](a) testo DOPO + il cursore. + + 4. Completate la parole come nella riga sotto. Premete ``{normal} per + uscire dal modo Insert. + + 5. Usate `e`{normal} per spostarvi sulla parola incompleta seguente e + ripetete i passi 3 e 4. + +Questa ri serve per far prat ad aggiungere testo a una riga. +Questa riga serve per far pratica ad aggiungere testo a una riga. + +NOTA: I comandi [a](a), [i](i) e [A](A) fanno tutti andate al modo Insert, + la sola differenza è dove vengono inseriti i caratteri. + +# Lezione 6.3: UN ALTRO MODO PER RIMPIAZZARE + +** Battete una `R`{normal} maiuscola per rimpiazzare più caratteri. ** + + 1. Portatevi col cursore alla prima riga sotto marcata ✗. Portatevi col + cursore all'inizio del primo "xxx". + + 2. Poi premete `R`{normal} ([R maiuscolo](R)) e inserite il numero che + vedete sulla riga seguente, in modo da rimpiazzare "xxx". + + 3. Premete ``{normal} per uscire dal [modo Replace](mode-replace). + Notate che il resto della riga non viene cambiato. + + 4. Ripetete i passi per rimpiazzare l'altro "xxx". + +Sommando 123 a xxx si ottiene xxx. +Sommando 123 a 456 si ottiene 579. + +NOTA: Il modo Replace è come il modo Insert, ma ogni carattere immesso cancella + un carattere del testo. + +# Lezione 6.4: COPIARE E INCOLLARE TESTO + +** Usare l'operatore `y`{normal} per copiare testo e `p`{normal} per incollarlo. ** + + 1. Andate alla riga marcata con ✓ sotto e posizionate il cursore dopo "a)". + + 2. Entrate in mod Visual con `v`{normal} e spostate il cursore subito prima + di "primo". + + 3. Battete `y`{normal} per [copiare](yank) (copy) il testo evidenziato. + + 4. Portatevi col cursore alla fine delle riga seguente: `j$`{normal} + + 5. Battete `p`{normal} per [incollare](put) il testo. + + 6. Premete `a`{normal} e poi battete "secondo". Premete ``{normal} per + uscire dal modo Insert. + + 7. Usate il modo Visual per selezionare "elemento.", copiatelo con `y`{normal}, + andate alla fine della riga seguente con `j$`{normal} e incollate lì il + testo con `p`{normal} + +a) Questo è il primo elemento. +b) + +NOTA: SI può usare `y`{normal} come un operatore: `yw`{normal} copia una parola. + +# Lezione 6.5: IMPOSTARE UN'OPZIONE + +** Impostare un'opzione per ignorare la distinzione maiuscolo/minuscolo + quando si cerca o si sostituisce. ** + + 1. Cercate la parola 'premete' col comando: `/premete` + ripetete più volte premendo `n`{normal}. + + 2. Impostate l'opzione the 'ic' (Ignora MAIUSCOLO/minuscolo) battendo: +~~~ cmd + :set ic +~~~ + 3. Poi cercate ancora 'ignore' premendo `n`{normal}. + Notate che ora vengono trovate anche le parole Premete e PREMETE. + + 4. Impostate le opzioni 'hlsearch' e 'incsearch': +~~~ cmd + :set hls is +~~~ + 5. Ora battete il comando di ricerca e guardate cosa succede: + /premete + + 6. Per tornare a distinguere MAIUSCOLO/minuscolo battete: +~~~ cmd + :set noic +~~~ + 7. Per invertire il valore di un'opzione, metteteci davanti "inv": +~~~ cmd + :set invic +~~~ +NOTA: Per rimuovere l'evidenziazione delle corrispondenze battete: +~~~ cmd + :nohlsearch +~~~ +NOTA: Se volete ignorare la distinzione MAIUSCOLO/minuscolo solo una volta, + usate [\c](/\c) nel comando: /premete\c + +# Lezione 6 SOMMARIO + + 1. Battete `o`{normal} per aprire una riga sotto il cursore e entrare + in modo Insert. + Battete `O`{normal} per aprire una riga SOPRA il cursore. + + 2. Battete `a`{normal} per inserire del testo DOPO il cursore. + Battete `A`{normal} per aggiungere del testo a fine riga. + + 3. Il comando `e`{normal} sposta il cursore a fine parola. + + 4. Il comando `y`{normal} copia del testo, `p`{normal} lo incolla. + + 5. Battendo `R`{normal} maiuscola si entra nel modo Replace + fino a quando non si preme il tasto ``{normal}. + + 6. Battendo "[:set](:set) xxx" imposta l'opzione "xxx". + Alcune opzioni sono: + + 'ic' 'ignorecase' ignorare MAIUSCOLO/minuscole nella ricerca + 'is' 'incsearch' mostra corrispondenze parziali in ricerca + 'hls' 'hlsearch' evidenzia tutte le corrispondenze trovate + + Si può usare sia il nome lungo di un'opzione, che quello corto. + + 7. Premettete "no" per annullare un'opzione: +~~~ cmd + :set noic +~~~ + 8. Premettete "inv" per invertire un'opzione: +~~~ cmd + :set invic +~~~ + +# Lezione 7.1: OTTENERE AIUTO + +** Usate il sistema di aiuto on-line. ** + +Vim ha un ampio sistema di aiuto on-line. Per iniziare, provate una +di queste alternative: + - premete il taso ``{normal} (se disponibile) + - premete il taso ``{normal} (se disponibile) + - Battete + `:help`{vim} + +Leggete il testo nella finestra di help per vedere come funziona. +Battete ``{normal} per passare da una finestra all'altra. +Battete `:q`{vim} per chiudere la finestra di aiuto. + +Potete trovare aiuto su quasi tutto, fornendo un argomento al comando +":help". Potete provare questi (non dimenticatevi di battere ): +~~~ cmd + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~ +# Lezione 7.2: CREARE UNO SCRIPT INIZIALE + +** Abilitare funzionalità di Vim. ** + +Vim ha molte più funzionalità rispetto a Vi, ma molte di esse sono +disabilitate per default. Per iniziare a usare più funzionalità occorre +creare un file "vimrc". + + 1. Iniziate a editare il file "vimrc" con: + `:call mkdir(stdpath('config'),'p')`{vim} + `:exe 'edit' stdpath('config').'/init.vim'`{vim} + + 2. Salvate il file con: + `:w`{vim} + + Potete aggiungere a questo file "vimrc" tutte le vostre impostazioni + preferite. Per maggiori informazioni battete `:help vimrc-intro`{vim}. + +# Lezione 7.3: COMPLETAMENTI + +** Completamenti nella riga-di-comando con ``{normal} e ``{normal}. ** + + 1. Guardate i file che esistono nella directory corrente: `:!ls`{vim} + + 2. Battete l'inizio di un comando: `:e`{vim} + + 3. Premete ``{normal} e Vim vi mostra una lista di tutti i comandi che + iniziano con la lettera "e". + + 4. Premete ``{normal} e Vim completerà il nome comando a ":edit". + + 5. Ora aggiungete uno spazio e la lettera iniziale di un file nella vostra + directory: `:edit FIL`{vim} + + 6. Premete ``{normal}. Vim completerà il nome (se è il solo possibile + completamento). + +NOTA: Il completamento è disponibile in parecchi comandi. È particolarmente + utile per il comando `:help`{vim}. + +# Lezione 7 SOMMARIO + + 1. Battete `:help`{vim} + o premete il tasto ``{normal} o ``{normal} per aprire una + finestra di aiuto. + + 2. Battete `:help ARGOMENTO`{vim} per trovare aiuto su ARGOMENTO. + + 3. Battete ``{normal} per saltare da una finestra all'altra. + + 4. Battete `:q`{vim} per chiudere la finestra di help. + + 5. Create uno script iniziale vimrc mettendoci le vostre impostazioni + preferite. + + 6. Mentre immettete un comando, premete ``{normal} per vedere i + completamenti possibili. + Premete ``{normal} per usare uno dei completamenti visualizzati. + +# CONCLUSIONE + +Lo scopo di questa guida era di dare una breve panoramica sull'editor Vim, +che fosse sufficiente a permettervi di usare l'editore abbastanza facilmente. +La guida è tutt'altro che completa, Vim ha molti altri comandi. +Consultate spesso l''help. + +Ci sono molte risorse on-line (in inglese) per saperne di più riguardo a Vim. +Qui sotto potete trovare un breve elenco: + +- *Learn Vim Progressively*: http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ +- *Learning Vim in 2014*: http://benmccormick.org/learning-vim-in-2014/ +- *Vimcasts*: http://vimcasts.org/ +- *Vim Video-Tutorials by Derek Wyatt*: http://derekwyatt.org/vim/tutorials/ +- *Learn Vimscript the Hard Way*: http://learnvimscriptthehardway.stevelosh.com/ +- *7 Habits of Effective testo Editing*: http://www.moolenaar.net/habits.html +- *vim-galore*: https://github.com/mhinz/vim-galore + +Se preferite un libro (sempre in inglese), *Practical Vim* e il suo seguito +*Modern Vim* di Drew Neil sono spesso raccomandati. + +Le parti più importanti dell'help di Vim (inclusa una traduzione completa +della "User Guide") sono disponibili anche in italiano. +Per procurarsi la versione italiana, vedere: +https://sites.google.com/view/vimdoc-it + +Questa guida è stata scritta di Michael C. Pierce e Robert K. Ware, Colorado +School of Mines usando idee fornite da Charles Smith, Colorado State +University. E-mail: bware@mines.colorado.edu. + +Modificato per Vim da Bram Moolenaar. +Modificato per vim-tutor-mode da Felipe Morales. +Tradotto in italiano da Antonio Colombo. diff --git a/runtime/tutor/it/vim-01-beginner.tutor.json b/runtime/tutor/it/vim-01-beginner.tutor.json new file mode 100644 index 0000000000..48b7743fc4 --- /dev/null +++ b/runtime/tutor/it/vim-01-beginner.tutor.json @@ -0,0 +1,45 @@ +{ + "expect": { + "27": -1, + "107": "La mucca saltò sopra la luna.", + "129": "Un po' di testo manca da questa riga.", + "130": "Un po' di testo manca da questa riga.", + "150": "Un po' di testo manca da questa riga.", + "151": "Un po' di testo manca da questa riga.", + "152": "Un po' di testo manca anche qui.", + "153": "Un po' di testo manca anche qui.", + "230": "Ci sono alcune parole che non appartengono a questa frase.", + "246": "Qualcuno ha scritto due volte la fine di questa riga.", + "287": -1, + "306": "Questa riga di parole è stata pulita.", + "321": -1, + "322": -1, + "323": -1, + "324": -1, + "325": -1, + "326": -1, + "327": -1, + "344": "Correggete gli errori su questa riga e rimetteteli usando undo.", + "384": -1, + "385": -1, + "386": -1, + "387": -1, + "401": "Quando questa riga è stata immessa, qualcuno ha premuto i tasti sbagliati!", + "402": "Quando questa riga è stata immessa, qualcuno ha premuto i tasti sbagliati!", + "423": "Questa riga ha alcune parole che vanno cambiate usando il comando change.", + "424": "Questa riga ha alcune parole che vanno cambiate usando il comando change.", + "445": "La fine di questa riga va corretta usando il comando `c$`.", + "446": "La fine di questa riga va corretta usando il comando `c$`.", + "515": -1, + "537": -1, + "563": "Di solito la stagione migliore per ammirare i fiori è la primavera.", + "765": -1, + "771": -1, + "790": "Questa riga serve per far pratica ad aggiungere testo a una riga.", + "791": "Questa riga serve per far pratica ad aggiungere testo a una riga.", + "811": "Sommando 123 a 456 si ottiene 579.", + "812": "Sommando 123 a 456 si ottiene 579.", + "839": "a) Questo è il primo elemento.", + "840": "b) Questo è il secondo elemento." + } +} From 0a4e57f44abc05033f839b4538efee8120f7d967 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Mon, 16 Dec 2024 10:20:51 +0100 Subject: [PATCH 115/244] runtime(doc): fix a few minor errors from the last doc updates 1) move the section at :h inclusive-motion-selection-exclusive a few lines below, so that it doesn't live in between the 2 exceptions. 2) remove the tag :h :!-range. It's not accurate (because it is actually a filter) and this command is already described at :h :range! Signed-off-by: Christian Brabandt --- runtime/doc/motion.txt | 15 +++++++-------- runtime/doc/tags | 1 - runtime/doc/various.txt | 5 +---- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index 8fe70241e9..e5b8151d0e 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 9.1. Last change: 2024 Dec 14 +*motion.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -93,13 +93,6 @@ command. There are however, two general exceptions: end of the motion is moved to the end of the previous line and the motion becomes inclusive. Example: "}" moves to the first line after a paragraph, but "d}" will not include that line. - - *inclusive-motion-selection-exclusive* -When 'selection' is "exclusive", |Visual| mode is active and an inclusive -motion has been used, the cursor position will be adjusted by another -character to the right, so that visual selction includes the expected text and -can be acted upon. - *exclusive-linewise* 2. If the motion is exclusive, the end of the motion is in column 1 and the start of the motion was at or before the first non-blank in the line, the @@ -129,6 +122,12 @@ This cannot be repeated: > endif Note that when using ":" any motion becomes characterwise exclusive. + *inclusive-motion-selection-exclusive* +When 'selection' is "exclusive", |Visual| mode is active and an inclusive +motion has been used, the cursor position will be adjusted by another +character to the right, so that visual selction includes the expected text and +can be acted upon. + *forced-motion* FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE diff --git a/runtime/doc/tags b/runtime/doc/tags index dde183e69a..0f8b2051f4 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -2034,7 +2034,6 @@ $quote eval.txt /*$quote* : cmdline.txt /*:* :! various.txt /*:!* :!! various.txt /*:!!* -:!-range various.txt /*:!-range* :!cmd various.txt /*:!cmd* :!start os_win32.txt /*:!start* :# various.txt /*:#* diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index f8c3bef28e..440a665629 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 9.1. Last change: 2024 Dec 15 +*various.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -322,9 +322,6 @@ g8 Print the hex values of the bytes used in the in Vim window. `:term ++shell ++close {cmd}` could serve as close approximation to what `:!{cmd}` does. - *:!-range* -:{range}!{cmd} Like |:!| but execute {cmd} for each line in the - {range}. *:!!* :!! Repeat last ":!{cmd}". From 3f7d584e967e28ca9d3dab0b4726106bbcb5094d Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Mon, 16 Dec 2024 20:11:04 +0100 Subject: [PATCH 116/244] patch 9.1.0932: new Italian tutor not installed Problem: new Italian tutor not installed Solution: add Makefile rule, include it into the Filelist ("Philip H." <47042125+pheiduck@users.noreply.github.com>), update the tutors help file closes: #16215 Co-authored-by: Philip H. <47042125+pheiduck@users.noreply.github.com> Signed-off-by: Philip H. <47042125+pheiduck@users.noreply.github.com> Signed-off-by: Christian Brabandt --- Filelist | 2 ++ runtime/doc/pi_tutor.txt | 25 ++++++++++++++++--------- runtime/doc/usr_01.txt | 6 +++--- src/Makefile | 7 +++++-- src/version.c | 2 ++ 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Filelist b/Filelist index 221ad79f44..0a1d9936a2 100644 --- a/Filelist +++ b/Filelist @@ -769,6 +769,8 @@ RT_ALL = \ runtime/tutor/tutor1 \ runtime/tutor/en/vim-01-beginner.tutor \ runtime/tutor/en/vim-01-beginner.tutor.json \ + runtime/tutor/it/vim-01-beginner.tutor \ + runtime/tutor/it/vim-01-beginner.tutor.json \ runtime/tutor/tutor.tutor \ runtime/tutor/tutor.tutor.json \ runtime/tutor/tutor.vim \ diff --git a/runtime/doc/pi_tutor.txt b/runtime/doc/pi_tutor.txt index 618fe745ac..f4f86e87bd 100644 --- a/runtime/doc/pi_tutor.txt +++ b/runtime/doc/pi_tutor.txt @@ -1,4 +1,4 @@ -*pi_tutor.txt* For Vim version 9.1. Last change: 2024 Nov 09 +*pi_tutor.txt* For Vim version 9.1. Last change: 2024 Dec 16 INTERACTIVE TUTORIALS FOR VIM *vim-tutor-mode* @@ -16,21 +16,28 @@ by double-clicking them. 1.1 Commands ------------ *:Tutor* -:Tutor {tutorial} Opens a tutorial. Command-line completion for - {tutorial} is provided, the candidates are a list of - '.tutor' files found in the 'tutor/' folder in - the 'runtimepath'. Tutorials prefixed with 'vim-' +:Tutor [tutorial] Opens a tutorial. Command-line completion for + [tutorial] is provided, the candidates are a list of + ".tutor" files found in the "tutor//" folder in + the 'runtimepath'. Tutorials prefixed with "vim-" will always be shown first. - If no {tutorial} is provided, the command starts the - 'vim-01-beginner' tutorial, which is equivalent to - Vim's `vimtutor`. + If no [tutorial] is provided, the command starts the + "vim-01-beginner" tutorial, which is equivalent to + Vim's `vimtutor`, chapter 1. + Uses the translated tutorial for the current message + language if possible (|v:lang|), e.g. to open the + chapter 1 of the Italian tutor, use: > + + :lang it_IT.utf-8 + :Tutor +< ============================================================================= 2. Creating tutorials *vim-tutor-create* Writing vim-tutor-mode tutorials is easy. For an overview of the format used, -please consult the 'tutor.tutor' file: > +please consult the "tutor.tutor" file: > :Tutor tutor < diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt index 8a513e8bb2..70a3f9bcbb 100644 --- a/runtime/doc/usr_01.txt +++ b/runtime/doc/usr_01.txt @@ -1,4 +1,4 @@ -*usr_01.txt* For Vim version 9.1. Last change: 2024 Nov 03 +*usr_01.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM USER MANUAL - by Bram Moolenaar @@ -110,8 +110,8 @@ For more info see |vimrc| and |compatible-default|. For the interactive tutor, see |vim-tutor-mode| Instead of reading the text (boring!) you can use the vimtutor to learn your -first Vim commands. This is a 30-minute tutorial that teaches the most basic -Vim functionality hands-on. +first Vim commands. This is a 30-minute tutorial provided in 2 chapters, that +teaches the most basic Vim functionality hands-on. On Unix, if Vim has been properly installed, you can start it from the shell: > diff --git a/src/Makefile b/src/Makefile index 7bb0a7ebd6..f3adaeca61 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2346,7 +2346,7 @@ installrtbase: $(HELPSOURCE)/vim.1 $(DEST_VIM) $(VIMTARGET) $(DEST_RT) \ $(DEST_AUTO) $(DEST_AUTO)/dist $(DEST_AUTO)/xml \ $(DEST_AUTO)/rust $(DEST_AUTO)/cargo \ $(DEST_IMPORT) $(DEST_IMPORT)/dist \ - $(DEST_PLUG) $(DEST_TUTOR) $(DEST_TUTOR)/en $(DEST_SPELL) $(DEST_COMP) + $(DEST_PLUG) $(DEST_TUTOR) $(DEST_TUTOR)/en $(DEST_TUTOR)/it $(DEST_SPELL) $(DEST_COMP) -$(SHELL) ./installman.sh install $(DEST_MAN) "" $(INSTALLMANARGS) # Generate the help tags with ":helptags" to handle all languages. # Move the distributed tags file aside and restore it, to avoid it being @@ -2473,10 +2473,11 @@ installgtutorbin: $(DEST_BIN) installtutor: $(DEST_RT) $(DEST_TUTOR) -$(INSTALL_DATA) $(TUTORSOURCE)/README* $(TUTORSOURCE)/tutor* $(DEST_TUTOR) - -$(INSTALL_DATA) $(TUTORSOURCE)/en/* $(DEST_TUTOR)/en/ + -$(INSTALL_DATA) $(TUTORSOURCE)/en/* $(DEST_TUTOR)/en/ $(DEST_TUTOR)/it/* $(DEST_TUTOR)/it/ -rm -f $(DEST_TUTOR)/*.info chmod $(HELPMOD) $(DEST_TUTOR)/* chmod $(DIRMOD) $(DEST_TUTOR)/en + chmod $(DIRMOD) $(DEST_TUTOR)/it # Install the spell files, if they exist. This assumes at least the English # spell file is there. @@ -2674,6 +2675,7 @@ $(DESTDIR)$(exec_prefix) $(DEST_BIN) \ $(DEST_IND) $(DEST_FTP) \ $(DEST_LANG) $(DEST_KMAP) $(DEST_COMP) $(DEST_MACRO) \ $(DEST_PACK) $(DEST_TOOLS) $(DEST_TUTOR) $(DEST_TUTOR)/en \ + $(DEST_TUTOR)/it \ $(DEST_SPELL) \ $(DEST_AUTO) $(DEST_AUTO)/dist $(DEST_AUTO)/xml \ $(DEST_AUTO)/cargo $(DEST_AUTO)/rust \ @@ -2858,6 +2860,7 @@ uninstall_runtime: -rm -rf $(DEST_MACRO) -rm -rf $(DEST_PACK) -rm -rf $(DEST_TUTOR)/en + -rm -rf $(DEST_TUTOR)/it -rm -rf $(DEST_TUTOR) -rm -rf $(DEST_SPELL) -rm -rf $(DEST_TOOLS) diff --git a/src/version.c b/src/version.c index 82d353f1d4..307848f63e 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 932, /**/ 931, /**/ From 468db1f8af178d89149b6bc01f1d0202cb86aac2 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Mon, 16 Dec 2024 20:56:56 +0100 Subject: [PATCH 117/244] patch 9.1.0933: Vim9: vim9compile.c can be further improved Problem: Vim9: vim9compile.c can be further improved Solution: further refactor the compile assignment code (Yegappan Lakshmanan) closes: #16230 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/version.c | 2 + src/vim9compile.c | 511 +++++++++++++++++++++++++++------------------- 2 files changed, 301 insertions(+), 212 deletions(-) diff --git a/src/version.c b/src/version.c index 307848f63e..1cfe99dc08 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 933, /**/ 932, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index 776e6d6b8a..b8129895db 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -2583,43 +2583,6 @@ push_default_value( return r; } -/* - * Compile an object member variable assignment in the argument passed to a - * class new() method. - * - * Instruction format: - * - * ifargisset this. = - * - * where is the object member variable index. - * - * Generates the ISN_JUMP_IF_ARG_NOT_SET instruction to skip the assignment if - * the value is passed as an argument to the new() method call. - * - * Returns OK on success. - */ - static int -compile_assign_obj_new_arg(char_u **argp, cctx_T *cctx) -{ - char_u *arg = *argp; - - arg += 11; // skip "ifargisset" - int def_idx = getdigits(&arg); - arg = skipwhite(arg); - - // Use a JUMP_IF_ARG_NOT_SET instruction to skip if the value was not - // given and the default value is "v:none". - int off = STACK_FRAME_SIZE + (cctx->ctx_ufunc->uf_va_name != NULL - ? 1 : 0); - int count = cctx->ctx_ufunc->uf_def_args.ga_len; - if (generate_JUMP_IF_ARG(cctx, ISN_JUMP_IF_ARG_NOT_SET, - def_idx - count - off) == FAIL) - return FAIL; - - *argp = arg; - return OK; -} - /* * Compile assignment context. Used when compiling an assignment statement. */ @@ -2664,6 +2627,45 @@ compile_assign_context_init(cac_T *cac, cctx_T *cctx, int cmdidx, char_u *arg) cac->cac_var_end = arg; } +/* + * Compile an object member variable assignment in the arguments passed to a + * class new() method. + * + * Instruction format: + * + * ifargisset this. = + * + * where is the index of the default argument. + * + * Generates the ISN_JUMP_IF_ARG_NOT_SET instruction to skip the assignment if + * the value is passed as an argument to the new() method call. + * + * Returns OK on success. + */ + static int +compile_assign_obj_new_arg(char_u **argp, cctx_T *cctx) +{ + char_u *arg = *argp; + + arg += 11; // skip "ifargisset" + int def_arg_idx = getdigits(&arg); + arg = skipwhite(arg); + + // Use a JUMP_IF_ARG_NOT_SET instruction to skip if the value was not + // given and the default value is "v:none". + int stack_offset = STACK_FRAME_SIZE + + (cctx->ctx_ufunc->uf_va_name != NULL ? 1 : 0); + int def_arg_count = cctx->ctx_ufunc->uf_def_args.ga_len; + int arg_offset = def_arg_idx - def_arg_count - stack_offset; + + if (generate_JUMP_IF_ARG(cctx, ISN_JUMP_IF_ARG_NOT_SET, + arg_offset) == FAIL) + return FAIL; + + *argp = arg; + return OK; +} + /* * Translate the increment (++) and decrement (--) operators to the * corresponding compound operators (+= or -=). @@ -2700,39 +2702,46 @@ compile_assign_process_operator( *retstr = NULL; if (eap->cmdidx == CMD_increment || eap->cmdidx == CMD_decrement) - { // Change an unary operator to a compound operator - if (translate_incdec_op(eap, cac) == FAIL) - return FAIL; - } - else - { - char_u *sp; + return translate_incdec_op(eap, cac); - sp = cac->cac_nextc; - cac->cac_nextc = skipwhite(cac->cac_nextc); - cac->cac_op = cac->cac_nextc; - cac->cac_oplen = assignment_len(cac->cac_nextc, heredoc); + char_u *sp = cac->cac_nextc; + cac->cac_nextc = skipwhite(cac->cac_nextc); + cac->cac_op = cac->cac_nextc; + cac->cac_oplen = assignment_len(cac->cac_nextc, heredoc); - if (cac->cac_var_count > 0 && cac->cac_oplen == 0) - { - // can be something like "[1, 2]->func()" - *retstr = arg; - return FAIL; - } + if (cac->cac_var_count > 0 && cac->cac_oplen == 0) + { + // can be something like "[1, 2]->func()" + *retstr = arg; + return FAIL; + } - // need white space before and after the operator - if (cac->cac_oplen > 0 && (!VIM_ISWHITE(*sp) - || !IS_WHITE_OR_NUL(cac->cac_op[cac->cac_oplen]))) - { - error_white_both(cac->cac_op, cac->cac_oplen); - return FAIL; - } + // need white space before and after the operator + if (cac->cac_oplen > 0 && (!VIM_ISWHITE(*sp) + || !IS_WHITE_OR_NUL(cac->cac_op[cac->cac_oplen]))) + { + error_white_both(cac->cac_op, cac->cac_oplen); + return FAIL; } return OK; } +/* + * Find the start of an assignment statement. + */ + static char_u * +compile_assign_compute_start(char_u *arg, int var_count) +{ + if (var_count > 0) + // [var1, var2] = [val1, val2] + // skip over the "[" + return skipwhite(arg + 1); + + return arg; +} + /* * Parse a heredoc assignment starting at "p". Returns a pointer to the * beginning of the heredoc content. @@ -2755,61 +2764,60 @@ parse_heredoc_assignment(exarg_T *eap, cctx_T *cctx, cac_T *cac) } /* - * Evaluate the expression for "[var, var] = expr" assignment. - * A line break may follow the assignment operator "=". + * Check the type of a RHS expression in a list assignment statement. + * The RHS expression is already compiled. So the type is on the stack. */ - static char_u * -compile_list_assignment_expr(cctx_T *cctx, cac_T *cac) + static int +compile_assign_list_check_rhs_type(cctx_T *cctx, cac_T *cac) { - char_u *wp; - - wp = cac->cac_op + cac->cac_oplen; - - if (may_get_next_line_error(wp, &cac->cac_nextc, cctx) == FAIL) - return NULL; - - if (compile_expr0(&cac->cac_nextc, cctx) == FAIL) - return NULL; - - if (cctx->ctx_skip == SKIP_YES) - // no need to parse more when skipping - return cac->cac_nextc; - type_T *stacktype; - int needed_list_len; - int did_check = FALSE; stacktype = cctx->ctx_type_stack.ga_len == 0 ? &t_void : get_type_on_stack(cctx, 0); if (stacktype->tt_type == VAR_VOID) { emsg(_(e_cannot_use_void_value)); - return NULL; + return FAIL; } if (need_type(stacktype, &t_list_any, FALSE, -1, 0, cctx, FALSE, FALSE) == FAIL) - return NULL; + return FAIL; + + if (stacktype->tt_member != NULL) + cac->cac_rhs_type = stacktype->tt_member; + + return OK; +} + +/* + * In a list assignment statement, if a constant list was used, check the + * length. Returns OK if the length check succeeds. Returns FAIL otherwise. + */ + static int +compile_assign_list_check_length(cctx_T *cctx, cac_T *cac) +{ + int needed_list_len; + int did_check = FALSE; - // If a constant list was used we can check the length right here. needed_list_len = cac->cac_semicolon - ? cac->cac_var_count - 1 - : cac->cac_var_count; + ? cac->cac_var_count - 1 + : cac->cac_var_count; if (cac->cac_instr->ga_len > 0) { isn_T *isn = ((isn_T *)cac->cac_instr->ga_data) + - cac->cac_instr->ga_len - 1; + cac->cac_instr->ga_len - 1; if (isn->isn_type == ISN_NEWLIST) { did_check = TRUE; - if (cac->cac_semicolon ? isn->isn_arg.number < - needed_list_len - : isn->isn_arg.number != needed_list_len) + if (cac->cac_semicolon ? + isn->isn_arg.number < needed_list_len + : isn->isn_arg.number != needed_list_len) { semsg(_(e_expected_nr_items_but_got_nr), needed_list_len, (int)isn->isn_arg.number); - return NULL; + return FAIL; } } } @@ -2817,8 +2825,37 @@ compile_list_assignment_expr(cctx_T *cctx, cac_T *cac) if (!did_check) generate_CHECKLEN(cctx, needed_list_len, cac->cac_semicolon); - if (stacktype->tt_member != NULL) - cac->cac_rhs_type = stacktype->tt_member; + return OK; +} + +/* + * Evaluate the expression for "[var, var] = expr" assignment. + * A line break may follow the assignment operator "=". + */ + static char_u * +compile_assign_list_expr(cctx_T *cctx, cac_T *cac) +{ + char_u *whitep; + + whitep = cac->cac_op + cac->cac_oplen; + + if (may_get_next_line_error(whitep, &cac->cac_nextc, cctx) == FAIL) + return NULL; + + // compile RHS expression + if (compile_expr0(&cac->cac_nextc, cctx) == FAIL) + return NULL; + + if (cctx->ctx_skip == SKIP_YES) + // no need to parse more when skipping + return cac->cac_nextc; + + if (compile_assign_list_check_rhs_type(cctx, cac) == FAIL) + return NULL; + + // If a constant list was used we can check the length right here. + if (compile_assign_list_check_length(cctx, cac) == FAIL) + return FAIL; return cac->cac_nextc; } @@ -2841,12 +2878,13 @@ compile_assign_compute_end( cac->cac_nextc = parse_heredoc_assignment(eap, cctx, cac); return cac->cac_nextc; } - else if (cac->cac_var_count > 0) + + if (cac->cac_var_count > 0) { // for "[var, var] = expr" evaluate the expression. The list of // variables are processed later. // A line break may follow the "=". - cac->cac_nextc = compile_list_assignment_expr(cctx, cac); + cac->cac_nextc = compile_assign_list_expr(cctx, cac); return cac->cac_nextc; } @@ -2860,7 +2898,7 @@ compile_assign_compute_end( compile_assign_single_eval_expr(cctx_T *cctx, cac_T *cac) { int ret = OK; - char_u *wp; + char_u *whitep; lhs_T *lhs = &cac->cac_lhs; // Compile the expression. @@ -2871,9 +2909,9 @@ compile_assign_single_eval_expr(cctx_T *cctx, cac_T *cac) // not available to this expression. if (lhs->lhs_new_local) --cctx->ctx_locals.ga_len; - wp = cac->cac_op + cac->cac_oplen; + whitep = cac->cac_op + cac->cac_oplen; - if (may_get_next_line_error(wp, &cac->cac_nextc, cctx) == FAIL) + if (may_get_next_line_error(whitep, &cac->cac_nextc, cctx) == FAIL) { if (lhs->lhs_new_local) ++cctx->ctx_locals.ga_len; @@ -2887,6 +2925,79 @@ compile_assign_single_eval_expr(cctx_T *cctx, cac_T *cac) return ret; } +/* + * When compiling an assignment, set the LHS type to the RHS type. + */ + static int +compile_assign_set_lhs_type_from_rhs( + cctx_T *cctx, + cac_T *cac, + lhs_T *lhs, + type_T *rhs_type) +{ + if (rhs_type->tt_type == VAR_VOID) + { + emsg(_(e_cannot_use_void_value)); + return FAIL; + } + + type_T *type; + + // An empty list or dict has a &t_unknown member, for a variable that + // implies &t_any. + if (rhs_type == &t_list_empty) + type = &t_list_any; + else if (rhs_type == &t_dict_empty) + type = &t_dict_any; + else if (rhs_type == &t_unknown) + type = &t_any; + else + { + type = rhs_type; + cac->cac_inferred_type = rhs_type; + } + + set_var_type(lhs->lhs_lvar, type, cctx); + + return OK; +} + +/* + * Returns TRUE if the "rhs_type" can be assigned to the "lhs" variable. + * Used when compiling an assignment statement. + */ + static int +compile_assign_valid_rhs_type( + cctx_T *cctx, + cac_T *cac, + lhs_T *lhs, + type_T *rhs_type) +{ + type_T *use_type = lhs->lhs_lvar->lv_type; + where_T where = WHERE_INIT; + + // Without operator check type here, otherwise below. + // Use the line number of the assignment. + SOURCING_LNUM = cac->cac_start_lnum; + if (cac->cac_var_count > 0) + { + where.wt_index = cac->cac_var_idx + 1; + where.wt_kind = WT_VARIABLE; + } + + // If assigning to a list or dict member, use the member type. + // Not for "list[:] =". + if (lhs->lhs_has_index && + !has_list_index(cac->cac_var_start + lhs->lhs_varlen, cctx)) + use_type = lhs->lhs_member_type; + + if (need_type_where(rhs_type, use_type, FALSE, -1, where, cctx, FALSE, + cac->cac_is_const) == FAIL) + return FALSE; + + return TRUE; +} + /* * Compare the LHS type with the RHS type in an assignment. */ @@ -2896,8 +3007,9 @@ compile_assign_check_type(cctx_T *cctx, cac_T *cac) lhs_T *lhs = &cac->cac_lhs; type_T *rhs_type; - rhs_type = cctx->ctx_type_stack.ga_len == 0 ? - &t_void : get_type_on_stack(cctx, 0); + rhs_type = cctx->ctx_type_stack.ga_len == 0 + ? &t_void + : get_type_on_stack(cctx, 0); cac->cac_rhs_type = rhs_type; if (check_type_is_value(rhs_type) == FAIL) @@ -2905,77 +3017,95 @@ compile_assign_check_type(cctx_T *cctx, cac_T *cac) if (lhs->lhs_lvar != NULL && (cac->cac_is_decl || !lhs->lhs_has_type)) { - if ((rhs_type->tt_type == VAR_FUNC - || rhs_type->tt_type == VAR_PARTIAL) - && !lhs->lhs_has_index - && var_wrong_func_name(lhs->lhs_name, TRUE)) - return FAIL; + if (rhs_type->tt_type == VAR_FUNC + || rhs_type->tt_type == VAR_PARTIAL) + { + // Make sure the variable name can be used as a funcref + if (!lhs->lhs_has_index + && var_wrong_func_name(lhs->lhs_name, TRUE)) + return FAIL; + } if (lhs->lhs_new_local && !lhs->lhs_has_type) { - if (rhs_type->tt_type == VAR_VOID) - { - emsg(_(e_cannot_use_void_value)); + // The LHS variable doesn't have a type. Set it to the RHS type. + if (compile_assign_set_lhs_type_from_rhs(cctx, cac, lhs, rhs_type) + == FAIL) return FAIL; - } - else - { - type_T *type; - - // An empty list or dict has a &t_unknown member, - // for a variable that implies &t_any. - if (rhs_type == &t_list_empty) - type = &t_list_any; - else if (rhs_type == &t_dict_empty) - type = &t_dict_any; - else if (rhs_type == &t_unknown) - type = &t_any; - else - { - type = rhs_type; - cac->cac_inferred_type = rhs_type; - } - set_var_type(lhs->lhs_lvar, type, cctx); - } } else if (*cac->cac_op == '=') { - type_T *use_type = lhs->lhs_lvar->lv_type; - where_T where = WHERE_INIT; - - // Without operator check type here, otherwise below. - // Use the line number of the assignment. - SOURCING_LNUM = cac->cac_start_lnum; - if (cac->cac_var_count > 0) - { - where.wt_index = cac->cac_var_idx + 1; - where.wt_kind = WT_VARIABLE; - } - // If assigning to a list or dict member, use the - // member type. Not for "list[:] =". - if (lhs->lhs_has_index && - !has_list_index(cac->cac_var_start + - lhs->lhs_varlen, cctx)) - use_type = lhs->lhs_member_type; - if (need_type_where(rhs_type, use_type, FALSE, -1, - where, cctx, FALSE, cac->cac_is_const) == FAIL) + if (!compile_assign_valid_rhs_type(cctx, cac, lhs, rhs_type)) return FAIL; } } else { + // Assigning to a register using @r = "abc" + type_T *lhs_type = lhs->lhs_member_type; - // Special case: assigning to @# can use a number or a - // string. + // Special case: assigning to @# can use a number or a string. // Also: can assign a number to a float. if ((lhs_type == &t_number_or_string || lhs_type == &t_float) - && rhs_type->tt_type == VAR_NUMBER) + && rhs_type->tt_type == VAR_NUMBER) lhs_type = &t_number; - if (*cac->cac_nextc != '=' && need_type(rhs_type, - lhs_type, FALSE, -1, 0, cctx, FALSE, FALSE) == FAIL) + + if (*cac->cac_nextc != '=') + { + if (need_type(rhs_type, lhs_type, FALSE, -1, 0, cctx, FALSE, + FALSE) == FAIL) + return FAIL; + } + } + + return OK; +} + +/* + * Compile the RHS expression in an assignment statement and generate the + * instructions. + */ + static int +compile_assign_rhs_expr(cctx_T *cctx, cac_T *cac) +{ + cac->cac_is_const = FALSE; + + // for "+=", "*=", "..=" etc. first load the current value + if (*cac->cac_op != '=' + && compile_load_lhs_with_index(&cac->cac_lhs, cac->cac_var_start, + cctx) == FAIL) + return FAIL; + + // For "var = expr" evaluate the expression. + if (cac->cac_var_count == 0) + { + int ret; + + // Compile the expression. + cac->cac_instr_count = cac->cac_instr->ga_len; + ret = compile_assign_single_eval_expr(cctx, cac); + if (ret == FAIL) return FAIL; } + else if (cac->cac_semicolon && cac->cac_var_idx == cac->cac_var_count - 1) + { + // For "[var; var] = expr" get the rest of the list + cac->cac_did_generate_slice = TRUE; + if (generate_SLICE(cctx, cac->cac_var_count - 1) == FAIL) + return FAIL; + } + else + { + // For "[var, var] = expr" get the "var_idx" item from the + // list. + int with_op = *cac->cac_op != '='; + if (generate_GETITEM(cctx, cac->cac_var_idx, with_op) == FAIL) + return FAIL; + } + + if (compile_assign_check_type(cctx, cac) == FAIL) + return FAIL; return OK; } @@ -2999,50 +3129,9 @@ compile_assign_rhs(cctx_T *cctx, cac_T *cac) return OK; } + // If RHS is specified, then generate instructions for RHS expression if (cac->cac_oplen > 0) - { - cac->cac_is_const = FALSE; - - // for "+=", "*=", "..=" etc. first load the current value - if (*cac->cac_op != '=' - && compile_load_lhs_with_index(&cac->cac_lhs, - cac->cac_var_start, - cctx) == FAIL) - return FAIL; - - // For "var = expr" evaluate the expression. - if (cac->cac_var_count == 0) - { - int ret; - - // Compile the expression. - cac->cac_instr_count = cac->cac_instr->ga_len; - ret = compile_assign_single_eval_expr(cctx, cac); - if (ret == FAIL) - return FAIL; - } - else if (cac->cac_semicolon && - cac->cac_var_idx == cac->cac_var_count - 1) - { - // For "[var; var] = expr" get the rest of the list - cac->cac_did_generate_slice = TRUE; - if (generate_SLICE(cctx, cac->cac_var_count - 1) == FAIL) - return FAIL; - } - else - { - // For "[var, var] = expr" get the "var_idx" item from the - // list. - if (generate_GETITEM(cctx, cac->cac_var_idx, - *cac->cac_op != '=') == FAIL) - return FAIL; - } - - if (compile_assign_check_type(cctx, cac) == FAIL) - return FAIL; - - return OK; - } + return compile_assign_rhs_expr(cctx, cac); if (cac->cac_cmdidx == CMD_final) { @@ -3186,6 +3275,7 @@ compile_assign_generate_store(cctx_T *cctx, cac_T *cac) } cctx->ctx_lnum = save_lnum; + return OK; } @@ -3202,6 +3292,10 @@ compile_assign_process_variables( int has_argisset_prefix, int jump_instr_idx) { + /* + * Loop over variables in "[var, var] = expr". + * For "name = expr" and "var name: type" this is done only once. + */ for (cac->cac_var_idx = 0; cac->cac_var_idx == 0 || cac->cac_var_idx < cac->cac_var_count; cac->cac_var_idx++) { @@ -3286,14 +3380,14 @@ compile_assign_process_variables( */ static char_u * compile_assignment( - char_u *arg_start, - exarg_T *eap, - cmdidx_T cmdidx, - cctx_T *cctx) + char_u *arg_start, + exarg_T *eap, + cmdidx_T cmdidx, + cctx_T *cctx) { cac_T cac; char_u *arg = arg_start; - char_u *ret = NULL; + char_u *retstr = NULL; int heredoc = FALSE; int jump_instr_idx; @@ -3313,25 +3407,18 @@ compile_assignment( if (cac.cac_nextc == NULL) return *arg == '[' ? arg : NULL; - char_u *retstr; if (compile_assign_process_operator(eap, arg, &cac, &heredoc, &retstr) == FAIL) return retstr; + // Compute the start of the assignment + cac.cac_var_start = compile_assign_compute_start(arg, cac.cac_var_count); + // Compute the end of the assignment cac.cac_var_end = compile_assign_compute_end(eap, cctx, &cac, heredoc); if (cac.cac_var_end == NULL) return NULL; - /* - * Loop over variables in "[var, var] = expr". - * For "name = expr" and "var name: type" this is done only once. - */ - if (cac.cac_var_count > 0) - cac.cac_var_start = skipwhite(arg + 1); // skip over the "[" - else - cac.cac_var_start = arg; - int has_cmd = cac.cac_var_start > eap->cmd; /* process the variable(s) */ @@ -3349,11 +3436,11 @@ compile_assignment( goto theend; } - ret = skipwhite(cac.cac_var_end); + retstr = skipwhite(cac.cac_var_end); theend: vim_free(cac.cac_lhs.lhs_name); - return ret; + return retstr; } /* From 3920bb4356aa7324a4be1071c87524a2f921d921 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Mon, 16 Dec 2024 21:10:45 +0100 Subject: [PATCH 118/244] runtime(doc): document how to minimize fold computation costs closes: #16224 Signed-off-by: Konfekt Signed-off-by: Christian Brabandt --- runtime/doc/fold.txt | 44 ++++++++++++++++++++++++++++++++++++-------- runtime/doc/tags | 1 + 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index b290492050..61f3b67f39 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 9.1. Last change: 2023 Mar 24 +*fold.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -87,9 +87,11 @@ The most efficient is to call a compiled function without arguments: > The function must use v:lnum. See |expr-option-function|. These are the conditions with which the expression is evaluated: + - The current buffer and window are set for the line. - The variable "v:lnum" is set to the line number. -- The result is used for the fold level in this way: + +The result of foldexpr then determines the fold level as follows: value meaning ~ 0 the line is not in a fold 1, 2, .. the line is in a fold with this level @@ -104,6 +106,8 @@ These are the conditions with which the expression is evaluated: "<1", "<2", .. a fold with this level ends at this line ">1", ">2", .. a fold with this level starts at this line +The result values "=", "s" and "a" are more expensive, please see |fold-expr-slow|. + It is not required to mark the start (end) of a fold with ">1" ("<1"), a fold will also start (end) when the fold level is higher (lower) than the fold level of the previous line. @@ -117,12 +121,6 @@ recognized, there is no error message and the fold level will be zero. For debugging the 'debug' option can be set to "msg", the error messages will be visible then. -Note: Since the expression has to be evaluated for every line, this fold -method can be very slow! - -Try to avoid the "=", "a" and "s" return values, since Vim often has to search -backwards for a line for which the fold level is defined. This can be slow. - If the 'foldexpr' expression starts with s: or ||, then it is replaced with the script ID (|local-function|). Examples: > set foldexpr=s:MyFoldExpr() @@ -148,6 +146,36 @@ end in that line. It may happen that folds are not updated properly. You can use |zx| or |zX| to force updating folds. +Minimizing Computational Cost *fold-expr-slow* + +Due to its computational cost, this fold method can make Vim unresponsive, +especially when the fold level of all lines have to be initially computed. +Afterwards, after each change, Vim restricts the computation of foldlevels +to those lines whose fold level was affected by it (and reuses the known +foldlevels of all the others). + +The fold expression should therefore strive to minimize the number of dependent +lines needed for the computation of a given line: For example, try to avoid the +"=", "a" and "s" return values, because these will require the evaluation of the +fold levels on previous lines until an independent fold level is found. + +If this proves difficult, the next best thing could be to cache all fold levels +in a buffer-local variable (b:foldlevels) that is only updated on |b:changedtick|: +>vim + vim9script + def MyFoldFunc(): number + if b:lasttick == b:changedtick + return b:foldlevels[v:lnum - 1] + endif + b:lasttick = b:changedtick + b:foldlevels = [] + # compute foldlevels ... + return b:foldlevels[v:lnum - 1] + enddef + set foldexpr=s:MyFoldFunc() +< +In above example further speedup was gained by using a precompiled Vim9script +function without arguments (that must still use v:lnum). See |expr-option-function|. SYNTAX *fold-syntax* diff --git a/runtime/doc/tags b/runtime/doc/tags index 0f8b2051f4..9f46c6e061 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -7218,6 +7218,7 @@ fold-create-marker fold.txt /*fold-create-marker* fold-delete-marker fold.txt /*fold-delete-marker* fold-diff fold.txt /*fold-diff* fold-expr fold.txt /*fold-expr* +fold-expr-slow fold.txt /*fold-expr-slow* fold-foldcolumn fold.txt /*fold-foldcolumn* fold-foldlevel fold.txt /*fold-foldlevel* fold-foldtext fold.txt /*fold-foldtext* From a2a2fe841ed2efdbb1f8055f752a3a4d0988ae9d Mon Sep 17 00:00:00 2001 From: Yinzuo Jiang Date: Mon, 16 Dec 2024 21:22:09 +0100 Subject: [PATCH 119/244] patch 9.1.0934: hard to view an existing buffer in the preview window Problem: hard to view an existing buffer in the preview window Solution: add the :pbuffer command (Yinzuo Jiang) Similar as `:pedit` and `:buffer` command. `:pbuffer` edits buffer [N] from the buffer list in the preview window. `:pbuffer` can also open special buffer, for example terminal buffer. closes: #16222 Signed-off-by: Yinzuo Jiang Signed-off-by: Christian Brabandt --- runtime/doc/indent.txt | 2 +- runtime/doc/index.txt | 3 +- runtime/doc/tags | 2 + runtime/doc/version9.txt | 5 +- runtime/doc/windows.txt | 11 ++++- runtime/syntax/vim.vim | 36 +++++++------- src/ex_cmdidxs.h | 24 +++++----- src/ex_cmds.h | 3 ++ src/ex_docmd.c | 46 ++++++++++++++++-- .../Test_popup_and_previewwindow_pbuffer.dump | 20 ++++++++ ...> Test_popup_and_previewwindow_pedit.dump} | 0 .../dumps/Test_pum_preview_pbuffer_1.dump | 12 +++++ .../dumps/Test_pum_preview_pbuffer_2.dump | 12 +++++ .../dumps/Test_pum_preview_pbuffer_3.dump | 12 +++++ .../dumps/Test_pum_preview_pbuffer_4.dump | 12 +++++ ...w_1.dump => Test_pum_preview_pedit_1.dump} | 0 ...w_2.dump => Test_pum_preview_pedit_2.dump} | 0 ...w_3.dump => Test_pum_preview_pedit_3.dump} | 0 ...w_4.dump => Test_pum_preview_pedit_4.dump} | 0 src/testdir/test_popup.vim | 32 +++++++++---- src/testdir/test_popupwin.vim | 36 +++++++++----- src/testdir/test_preview.vim | 47 ++++++++++++++++--- src/testdir/test_statusline.vim | 4 ++ src/testdir/test_vim9_cmd.vim | 21 +++++++-- src/testdir/test_window_cmd.vim | 1 + src/testdir/test_winfixbuf.vim | 12 +++++ src/version.c | 2 + 27 files changed, 285 insertions(+), 70 deletions(-) create mode 100644 src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump rename src/testdir/dumps/{Test_popup_and_previewwindow_01.dump => Test_popup_and_previewwindow_pedit.dump} (100%) create mode 100644 src/testdir/dumps/Test_pum_preview_pbuffer_1.dump create mode 100644 src/testdir/dumps/Test_pum_preview_pbuffer_2.dump create mode 100644 src/testdir/dumps/Test_pum_preview_pbuffer_3.dump create mode 100644 src/testdir/dumps/Test_pum_preview_pbuffer_4.dump rename src/testdir/dumps/{Test_pum_preview_1.dump => Test_pum_preview_pedit_1.dump} (100%) rename src/testdir/dumps/{Test_pum_preview_2.dump => Test_pum_preview_pedit_2.dump} (100%) rename src/testdir/dumps/{Test_pum_preview_3.dump => Test_pum_preview_pedit_3.dump} (100%) rename src/testdir/dumps/{Test_pum_preview_4.dump => Test_pum_preview_pedit_4.dump} (100%) diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt index 8f347d7d94..5f0893feec 100644 --- a/runtime/doc/indent.txt +++ b/runtime/doc/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 9.1. Last change: 2024 Nov 12 +*indent.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index c595d9d2a9..e1f68a081a 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 9.1. Last change: 2023 Jul 14 +*index.txt* For Vim version 9.1. Last change: 2024 Dec 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1529,6 +1529,7 @@ tag command action ~ |:ownsyntax| :ow[nsyntax] set new local syntax highlight for this window |:packadd| :pa[ckadd] add a plugin from 'packpath' |:packloadall| :packl[oadall] load all packages under 'packpath' +|:pbuffer| :pb[uffer] edit buffer in the preview window |:pclose| :pc[lose] close preview window |:pedit| :ped[it] edit file in the preview window |:perl| :pe[rl] execute Perl command diff --git a/runtime/doc/tags b/runtime/doc/tags index 9f46c6e061..a8b49878a3 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3026,6 +3026,8 @@ $quote eval.txt /*$quote* :packadd repeat.txt /*:packadd* :packl repeat.txt /*:packl* :packloadall repeat.txt /*:packloadall* +:pb windows.txt /*:pb* +:pbuffer windows.txt /*:pbuffer* :pc windows.txt /*:pc* :pclose windows.txt /*:pclose* :pe if_perl.txt /*:pe* diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 76911425c5..bcda3d00de 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Dec 06 +*version9.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41661,7 +41661,8 @@ Highlighting: ~ Commands: ~ |[r| and |]r| to move the cursor to previous/next rare word - +|:pbuffer| Edit buffer [N] from the buffer list in the preview + window Options: ~ diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index edb105aa52..7764072583 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 9.1. Last change: 2024 Dec 14 +*windows.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1005,6 +1005,15 @@ CTRL-W g } *CTRL-W_g}* it. Make the new Preview window (if required) N high. If N is not given, 'previewheight' is used. + *:pb* *:pbuffer* +:[N]pb[uffer][!] [+cmd] [N] + Edit buffer [N] from the buffer list in the preview window. + If [N] is not given, the current buffer remains being edited. + See |:buffer-!| for [!]. This will also edit a buffer that is + not in the buffer list, without setting the 'buflisted' flag. + The notation with single quotes does not work here, `:pbuffer + 12'345'` uses 12'345 as a buffer name. Also see |+cmd|. + *:ped* *:pedit* :ped[it][!] [++opt] [+cmd] {file} Edit {file} in the preview window. The preview window is diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index eea6e82a89..465311f464 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -2,7 +2,7 @@ " Language: Vim script " Maintainer: Hirohito Higashi " Doug Kearns -" Last Change: 2024 Oct 08 +" Last Change: 2024 Dec 15 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. @@ -30,9 +30,9 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell syn keyword vimCommand contained abo[veleft] abs[tract] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler] con[tinue] syn keyword vimCommand contained conf[irm] cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] debugg[reedy] defc[ompile] defe[r] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se] em[enu] en[dif] endfo[r] endt[ry] endw[hile] ene[w] ev[al] ex exi[t] exu[sage] f[ile] files filet[ype] filt[er] fin[d] finall[y] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep] helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] ho[rizontal] ij[ump] il[ist] imp[ort] syn keyword vimCommand contained int[ro] is[earch] isp[lit] j[oin] ju[mps] k kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile] lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove] ma[rk] mak[e] marks menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] mz[scheme] mzf[ile] -syn keyword vimCommand contained n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] -syn keyword vimCommand contained sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] -syn keyword vimCommand contained tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i +syn keyword vimCommand contained n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o] ped[it] pb[uffer] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] +syn keyword vimCommand contained sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] +syn keyword vimCommand contained tf[irst] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i " Lower priority for _new_ to distinguish constructors from the command. syn match vimCommand contained "\(\@!" @@ -43,12 +43,12 @@ syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue Di " GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod' syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns com comments cms commentstring cp compatible cpt complete cfu completefunc skipwhite nextgroup=vimSetEqual,vimSetMod syn keyword vimOption contained cia completeitemalign cot completeopt cpp completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats skipwhite nextgroup=vimSetEqual,vimSetMod -syn keyword vimOption contained fic fileignorecase ft filetype fcs fillchars fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch skipwhite nextgroup=vimSetEqual,vimSetMod -syn keyword vimOption contained imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse skipwhite nextgroup=vimSetEqual,vimSetMod -syn keyword vimOption contained mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber skipwhite nextgroup=vimSetEqual,vimSetMod -syn keyword vimOption contained remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck skipwhite nextgroup=vimSetEqual,vimSetMod -syn keyword vimOption contained spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse skipwhite nextgroup=vimSetEqual,vimSetMod -syn keyword vimOption contained tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod +syn keyword vimOption contained fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert skipwhite nextgroup=vimSetEqual,vimSetMod +syn keyword vimOption contained ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable skipwhite nextgroup=vimSetEqual,vimSetMod +syn keyword vimOption contained mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine skipwhite nextgroup=vimSetEqual,vimSetMod +syn keyword vimOption contained rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell skipwhite nextgroup=vimSetEqual,vimSetMod +syn keyword vimOption contained spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin skipwhite nextgroup=vimSetEqual,vimSetMod +syn keyword vimOption contained tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod " vimOptions: These are the turn-off setting variants {{{2 " GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR='' @@ -102,14 +102,14 @@ syn case match " Function Names {{{2 " GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR='' syn keyword vimFuncName contained abs acos add and append appendbufline argc argidx arglistid argv asin assert_beeps assert_equal assert_equalfile assert_exception assert_fails assert_false assert_inrange assert_match assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show balloon_split bindtextdomain blob2list browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status changenr char2nr charclass charcol charidx -syn keyword vimFuncName contained chdir cindent clearmatches col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbufinfo getbufline getbufoneline getbufvar getcellwidths getchangelist -syn keyword vimFuncName contained getchar getcharmod getcharpos getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv id indent index indexof input inputdialog inputlist -syn keyword vimFuncName contained inputrestore inputsave inputsecret insert instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog popup_filter_menu -syn keyword vimFuncName contained popup_filter_yesno popup_findecho popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf popup_setoptions popup_settext popup_show pow prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove rename repeat resolve -syn keyword vimFuncName contained reverse round rubyeval screenattr screenchar screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float str2list str2nr strcharlen strcharpart -syn keyword vimFuncName contained strchars strdisplaywidth strftime strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon -syn keyword vimFuncName contained test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview -syn keyword vimFuncName contained winwidth wordcount writefile xor +syn keyword vimFuncName contained chdir cindent clearmatches col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbufinfo getbufline getbufoneline getbufvar getcellpixels getcellwidths +syn keyword vimFuncName contained getchangelist getchar getcharmod getcharpos getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv id indent index indexof input inputdialog +syn keyword vimFuncName contained inputlist inputrestore inputsave inputsecret insert instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog +syn keyword vimFuncName contained popup_filter_menu popup_filter_yesno popup_findecho popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf popup_setoptions popup_settext popup_show pow prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove +syn keyword vimFuncName contained rename repeat resolve reverse round rubyeval screenattr screenchar screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float str2list +syn keyword vimFuncName contained str2nr strcharlen strcharpart strchars strdisplaywidth strftime strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput +syn keyword vimFuncName contained test_garbagecollect_now test_garbagecollect_soon test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout +syn keyword vimFuncName contained winline winnr winrestcmd winrestview winsaveview winwidth wordcount writefile xor "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 diff --git a/src/ex_cmdidxs.h b/src/ex_cmdidxs.h index 658f05e2db..0b13a6c7f6 100644 --- a/src/ex_cmdidxs.h +++ b/src/ex_cmdidxs.h @@ -21,16 +21,16 @@ static const unsigned short cmdidxs1[26] = /* n */ 308, /* o */ 328, /* p */ 340, - /* q */ 380, - /* r */ 383, - /* s */ 403, - /* t */ 473, - /* u */ 520, - /* v */ 531, - /* w */ 552, - /* x */ 566, - /* y */ 576, - /* z */ 577 + /* q */ 381, + /* r */ 384, + /* s */ 404, + /* t */ 474, + /* u */ 521, + /* v */ 532, + /* w */ 553, + /* x */ 567, + /* y */ 577, + /* z */ 578 }; /* @@ -56,7 +56,7 @@ static const unsigned char cmdidxs2[26][26] = /* m */ { 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 }, /* n */ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 10, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0 }, /* o */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 5, 0, 0, 0, 0, 0, 0, 9, 0, 11, 0, 0, 0 }, - /* p */ { 1, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 16, 17, 26, 0, 28, 0, 29, 0 }, + /* p */ { 1, 3, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 10, 0, 0, 17, 18, 27, 0, 29, 0, 30, 0 }, /* q */ { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* r */ { 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 19, 0, 0, 0, 0 }, /* s */ { 2, 6, 15, 0, 19, 23, 0, 25, 26, 0, 0, 29, 31, 35, 39, 41, 0, 50, 0, 51, 0, 64, 65, 0, 66, 0 }, @@ -69,4 +69,4 @@ static const unsigned char cmdidxs2[26][26] = /* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -static const int command_count = 594; +static const int command_count = 595; diff --git a/src/ex_cmds.h b/src/ex_cmds.h index 25f69143ed..dc5da0a1e4 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -1145,6 +1145,9 @@ EXCMD(CMD_packadd, "packadd", ex_packadd, EXCMD(CMD_packloadall, "packloadall", ex_packloadall, EX_BANG|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, ADDR_NONE), +EXCMD(CMD_pbuffer, "pbuffer", ex_pbuffer, + EX_BANG|EX_RANGE|EX_BUFNAME|EX_BUFUNL|EX_COUNT|EX_EXTRA|EX_CMDARG|EX_TRLBAR, + ADDR_BUFFERS), EXCMD(CMD_pclose, "pclose", ex_pclose, EX_BANG|EX_TRLBAR, ADDR_NONE), diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 859dc8563a..d516755c48 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -36,6 +36,7 @@ static void ex_autocmd(exarg_T *eap); static void ex_doautocmd(exarg_T *eap); static void ex_bunload(exarg_T *eap); static void ex_buffer(exarg_T *eap); +static void do_exbuffer(exarg_T *eap); static void ex_bmodified(exarg_T *eap); static void ex_bnext(exarg_T *eap); static void ex_bprevious(exarg_T *eap); @@ -101,10 +102,14 @@ static void ex_tabs(exarg_T *eap); static void ex_pclose(exarg_T *eap); static void ex_ptag(exarg_T *eap); static void ex_pedit(exarg_T *eap); +static void ex_pbuffer(exarg_T *eap); +static void prepare_preview_window(void); +static void back_to_current_window(win_T *curwin_save); #else # define ex_pclose ex_ni # define ex_ptag ex_ni # define ex_pedit ex_ni +# define ex_pbuffer ex_ni #endif static void ex_hide(exarg_T *eap); static void ex_exit(exarg_T *eap); @@ -5734,6 +5739,15 @@ ex_buffer(exarg_T *eap) { if (ERROR_IF_ANY_POPUP_WINDOW) return; + do_exbuffer(eap); +} + +/* + * ":buffer" command and alike. + */ + static void +do_exbuffer(exarg_T *eap) +{ if (*eap->arg) eap->errmsg = ex_errmsg(e_trailing_characters_str, eap->arg); else @@ -9437,17 +9451,43 @@ ex_ptag(exarg_T *eap) ex_pedit(exarg_T *eap) { win_T *curwin_save = curwin; + prepare_preview_window(); + + // Edit the file. + do_exedit(eap, NULL); + + back_to_current_window(curwin_save); +} + +/* + * ":pbuffer" + */ + static void +ex_pbuffer(exarg_T *eap) +{ + win_T *curwin_save = curwin; + prepare_preview_window(); + + // Go to the buffer. + do_exbuffer(eap); + back_to_current_window(curwin_save); +} + + static void +prepare_preview_window(void) +{ if (ERROR_IF_ANY_POPUP_WINDOW) return; // Open the preview window or popup and make it the current window. g_do_tagpreview = p_pvh; prepare_tagpreview(TRUE, TRUE, FALSE); +} - // Edit the file. - do_exedit(eap, NULL); - + static void +back_to_current_window(win_T *curwin_save) +{ if (curwin != curwin_save && win_valid(curwin_save)) { // Return cursor to where we were diff --git a/src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump b/src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump new file mode 100644 index 0000000000..0eab2a62c6 --- /dev/null +++ b/src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump @@ -0,0 +1,20 @@ +|a+0&#ffffff0|b|0| @71 +|a|b|1| @71 +|a|b|2| @71 +|a|b|3| @71 +|a|b|4| @71 +|a|b|5| @71 +|a|b|6| @71 +|a|b|7| @71 +|a|b|8| @71 +|a+0#0000001#e0e0e08|b|0| @11| +0#0000000#0000001|e+1&#ffffff0|w|]|[|+|]| @34|1|,|1| @11|T|o|p +|a+0#0000001#ffd7ff255|b|1| @11| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|2| @11| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|3| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|4| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|5| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a|b|0> @71 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1@1|,|1| @10|B|o|t +|-+2&&@1| |K|e|y|w|o|r|d| |L|o|c|a|l| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |1|0| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popup_and_previewwindow_01.dump b/src/testdir/dumps/Test_popup_and_previewwindow_pedit.dump similarity index 100% rename from src/testdir/dumps/Test_popup_and_previewwindow_01.dump rename to src/testdir/dumps/Test_popup_and_previewwindow_pedit.dump diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_1.dump b/src/testdir/dumps/Test_pum_preview_pbuffer_1.dump new file mode 100644 index 0000000000..ae02ce5a04 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_pbuffer_1.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|t|h|e|r> @65 +|â•”+0#0000001#ffd7ff255|â•@1| +0&#e0e0e08|o|t|h|e|r| @9|â•+0&#ffd7ff255@21|X| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|â•‘| +0#4040ff13#ffffff0@32 +|â•š+0#0000001#ffd7ff255|â•@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_2.dump b/src/testdir/dumps/Test_pum_preview_pbuffer_2.dump new file mode 100644 index 0000000000..e83929fc88 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_pbuffer_2.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|n|c|e> @66 +|â•”+0#0000001#ffd7ff255|â•@1| |o|t|h|e|r| @9|â•@21|X| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001#e0e0e08|o|n|c|e| @10| +0&#ffd7ff255@21|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|â•‘| +0#4040ff13#ffffff0@32 +|â•š+0#0000001#ffd7ff255|â•@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_3.dump b/src/testdir/dumps/Test_pum_preview_pbuffer_3.dump new file mode 100644 index 0000000000..fde2104ea2 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_pbuffer_3.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|n|l|y> @66 +|â•”+0#0000001#ffd7ff255|â•@1| |o|t|h|e|r| @9|â•@21|X| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001#e0e0e08|o|n|l|y| @10| +0&#ffd7ff255@21|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|â•‘| +0#4040ff13#ffffff0@32 +|â•š+0#0000001#ffd7ff255|â•@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |3| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_4.dump b/src/testdir/dumps/Test_pum_preview_pbuffer_4.dump new file mode 100644 index 0000000000..dee2b552dd --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_pbuffer_4.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|f@1> @67 +|â•”+0#0000001#ffd7ff255|â•@1| |o|t|h|e|r| @9|â•@21|X| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001#e0e0e08|o|f@1| @11| +0&#ffd7ff255@21|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|â•‘| +0#0000000#ffffff0@32 +|â•‘+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|â•‘| +0#4040ff13#ffffff0@32 +|â•š+0#0000001#ffd7ff255|â•@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |4| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_1.dump b/src/testdir/dumps/Test_pum_preview_pedit_1.dump similarity index 100% rename from src/testdir/dumps/Test_pum_preview_1.dump rename to src/testdir/dumps/Test_pum_preview_pedit_1.dump diff --git a/src/testdir/dumps/Test_pum_preview_2.dump b/src/testdir/dumps/Test_pum_preview_pedit_2.dump similarity index 100% rename from src/testdir/dumps/Test_pum_preview_2.dump rename to src/testdir/dumps/Test_pum_preview_pedit_2.dump diff --git a/src/testdir/dumps/Test_pum_preview_3.dump b/src/testdir/dumps/Test_pum_preview_pedit_3.dump similarity index 100% rename from src/testdir/dumps/Test_pum_preview_3.dump rename to src/testdir/dumps/Test_pum_preview_pedit_3.dump diff --git a/src/testdir/dumps/Test_pum_preview_4.dump b/src/testdir/dumps/Test_pum_preview_pedit_4.dump similarity index 100% rename from src/testdir/dumps/Test_pum_preview_4.dump rename to src/testdir/dumps/Test_pum_preview_pedit_4.dump diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim index d5e6e312a0..69228e1cfb 100644 --- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -748,17 +748,11 @@ func Test_popup_and_preview_autocommand() bw! endfunc -func Test_popup_and_previewwindow_dump() +func s:run_popup_and_previewwindow_dump(lines, dumpfile) CheckScreendump CheckFeature quickfix - let lines =<< trim END - set previewheight=9 - silent! pedit - call setline(1, map(repeat(["ab"], 10), "v:val .. v:key")) - exec "norm! G\\" - END - call writefile(lines, 'Xscript', 'D') + call writefile(a:lines, 'Xscript', 'D') let buf = RunVimInTerminal('-S Xscript', {}) " wait for the script to finish @@ -768,12 +762,32 @@ func Test_popup_and_previewwindow_dump() call term_sendkeys(buf, "o") call TermWait(buf, 50) call term_sendkeys(buf, "\\") - call VerifyScreenDump(buf, 'Test_popup_and_previewwindow_01', {}) + call VerifyScreenDump(buf, a:dumpfile, {}) call term_sendkeys(buf, "\u") call StopVimInTerminal(buf) endfunc +func Test_popup_and_previewwindow_dump_pedit() + let lines =<< trim END + set previewheight=9 + silent! pedit + call setline(1, map(repeat(["ab"], 10), "v:val .. v:key")) + exec "norm! G\\" + END + call s:run_popup_and_previewwindow_dump(lines, 'Test_popup_and_previewwindow_pedit') +endfunc + +func Test_popup_and_previewwindow_dump_pbuffer() + let lines =<< trim END + set previewheight=9 + silent! pbuffer + call setline(1, map(repeat(["ab"], 10), "v:val .. v:key")) + exec "norm! G\\\" + END + call s:run_popup_and_previewwindow_dump(lines, 'Test_popup_and_previewwindow_pbuffer') +endfunc + func Test_balloon_split() CheckFunction balloon_split diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index 23f318fd6e..d345b3eed6 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -1106,6 +1106,7 @@ func Test_win_execute_not_allowed() call assert_fails('call win_execute(winid, "next")', 'E994:') call assert_fails('call win_execute(winid, "rewind")', 'E994:') call assert_fails('call win_execute(winid, "pedit filename")', 'E994:') + call assert_fails('call win_execute(winid, "pbuffer filename")', 'E994:') call assert_fails('call win_execute(winid, "buf")', 'E994:') call assert_fails('call win_execute(winid, "bnext")', 'E994:') call assert_fails('call win_execute(winid, "bprev")', 'E994:') @@ -3457,7 +3458,7 @@ func Test_previewpopup() call StopVimInTerminal(buf) endfunc -func Test_previewpopup_pum() +func s:run_preview_popuppum(preview_lines, dumpfile_name) CheckScreendump CheckFeature quickfix @@ -3471,30 +3472,43 @@ func Test_previewpopup_pum() END call writefile(lines, 'XpreviewText.vim', 'D') - let lines =<< trim END - call setline(1, ['one', 'two', 'three', 'other', 'once', 'only', 'off']) - set previewpopup=height:6,width:40 - pedit XpreviewText.vim - END - call writefile(lines, 'XtestPreviewPum', 'D') + call writefile(a:preview_lines, 'XtestPreviewPum', 'D') let buf = RunVimInTerminal('-S XtestPreviewPum', #{rows: 12}) call term_sendkeys(buf, "A o\") - call VerifyScreenDump(buf, 'Test_pum_preview_1', {}) + call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_1', {}) call term_sendkeys(buf, "\") - call VerifyScreenDump(buf, 'Test_pum_preview_2', {}) + call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_2', {}) call term_sendkeys(buf, "\") - call VerifyScreenDump(buf, 'Test_pum_preview_3', {}) + call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_3', {}) call term_sendkeys(buf, "\") - call VerifyScreenDump(buf, 'Test_pum_preview_4', {}) + call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_4', {}) call term_sendkeys(buf, "\") call StopVimInTerminal(buf) endfunc +func Test_previewpopup_pum_pedit() + let lines =<< trim END + call setline(1, ['one', 'two', 'three', 'other', 'once', 'only', 'off']) + set previewpopup=height:6,width:40 + pedit XpreviewText.vim + END + call s:run_preview_popuppum(lines, 'pedit') +endfunc + +func Test_previewpopup_pum_pbuffer() + let lines =<< trim END + call setline(1, ['one', 'two', 'three', 'other', 'once', 'only', 'off']) + set previewpopup=height:6,width:40 + badd XpreviewText.vim + exe bufnr('$') . 'pbuffer' + END + call s:run_preview_popuppum(lines, 'pbuffer') +endfunc func Get_popupmenu_lines() let lines =<< trim END diff --git a/src/testdir/test_preview.vim b/src/testdir/test_preview.vim index 3d13d99ba1..0df1a90222 100644 --- a/src/testdir/test_preview.vim +++ b/src/testdir/test_preview.vim @@ -15,6 +15,20 @@ func Test_Psearch() bwipe endfunc +func s:goto_preview_and_close() + " Go to the preview window + wincmd P + call assert_equal(1, &previewwindow) + call assert_equal('preview', win_gettype()) + + " Close preview window + wincmd z + call assert_equal(1, winnr('$')) + call assert_equal(0, &previewwindow) + + call assert_fails('wincmd P', 'E441:') +endfunc + func Test_window_preview() CheckFeature quickfix @@ -23,17 +37,36 @@ func Test_window_preview() call assert_equal(2, winnr('$')) call assert_equal(0, &previewwindow) - " Go to the preview window - wincmd P - call assert_equal(1, &previewwindow) - call assert_equal('preview', win_gettype()) + call s:goto_preview_and_close() +endfunc - " Close preview window - wincmd z +func Test_window_preview_from_pbuffer() + CheckFeature quickfix + + call writefile(['/* some C code */'], 'Xpreview.c', 'D') + edit Xpreview.c + const buf_num = bufnr('%') + enew call assert_equal(1, winnr('$')) + exe 'pbuffer ' . buf_num + call assert_equal(2, winnr('$')) call assert_equal(0, &previewwindow) - call assert_fails('wincmd P', 'E441:') + call s:goto_preview_and_close() +endfunc + +func Test_window_preview_terminal() + CheckFeature quickfix + CheckFeature terminal + + term ++curwin + const buf_num = bufnr('$') + call assert_equal(1, winnr('$')) + exe 'pbuffer' . buf_num + call assert_equal(2, winnr('$')) + call assert_equal(0, &previewwindow) + + call s:goto_preview_and_close() endfunc func Test_window_preview_from_help() diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim index 22fd78cdef..73c3bee2a7 100644 --- a/src/testdir/test_statusline.vim +++ b/src/testdir/test_statusline.vim @@ -220,6 +220,10 @@ func Test_statusline() wincmd j call assert_match('^\[Preview\],PRV\s*$', s:get_statusline()) pclose + pbuffer + wincmd j + call assert_match('^\[Preview\],PRV\s*$', s:get_statusline()) + pclose " %y: Type of file in the buffer, e.g., "[vim]". See 'filetype'. " %Y: Type of file in the buffer, e.g., ",VIM". See 'filetype'. diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 51ae7e685f..900bf8ae31 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -2044,18 +2044,29 @@ def Test_lambda_crash() v9.CheckScriptFailureList(lines, ["E1356:", "E1405:"]) enddef -" Test for the 'previewpopup' option -def Test_previewpopup() - set previewpopup=height:10,width:60 - pedit Xppfile +def s:check_previewpopup(expected_title: string) var id = popup_findpreview() assert_notequal(id, 0) - assert_match('Xppfile', popup_getoptions(id).title) + assert_match(expected_title, popup_getoptions(id).title) popup_clear() bw Xppfile set previewpopup& enddef +" Test for the 'previewpopup' option +def Test_previewpopup() + set previewpopup=height:10,width:60 + pedit Xppfile + s:check_previewpopup('Xppfile') +enddef + +def Test_previewpopup_pbuffer() + set previewpopup=height:10,width:60 + edit Xppfile + pbuffer + s:check_previewpopup('') +enddef + def Test_syntax_enable_clear() syntax clear syntax enable diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim index 75b37ecdac..b6381a33b7 100644 --- a/src/testdir/test_window_cmd.vim +++ b/src/testdir/test_window_cmd.vim @@ -1258,6 +1258,7 @@ func Run_noroom_for_newwindow_test(dir_arg) " Preview window call assert_fails(dir .. 'pedit Xnorfile2', 'E36:') + call assert_fails(dir .. 'pbuffer', 'E36:') call setline(1, 'abc') call assert_fails(dir .. 'psearch abc', 'E36:') endif diff --git a/src/testdir/test_winfixbuf.vim b/src/testdir/test_winfixbuf.vim index 3cec4ed70b..2d4eaf675e 100644 --- a/src/testdir/test_winfixbuf.vim +++ b/src/testdir/test_winfixbuf.vim @@ -2545,6 +2545,18 @@ func Test_pedit() call assert_equal(l:other, bufnr()) endfunc +" Allow :pbuffer because, unlike :buffer, it uses a separate window +func Test_pbuffer() + call s:reset_all_buffers() + + let l:other = s:make_buffer_pairs() + + exe 'pbuffer ' . l:other + + execute "normal \w" + call assert_equal(l:other, bufnr()) +endfunc + " Fail :pop but :pop! is allowed func Test_pop() call s:reset_all_buffers() diff --git a/src/version.c b/src/version.c index 1cfe99dc08..f8cee6d97d 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 934, /**/ 933, /**/ From 368ef5a48c7a41af7fe2c32a5d5659e23aff63d0 Mon Sep 17 00:00:00 2001 From: Aliaksei Budavei <0x000c70@gmail.com> Date: Mon, 16 Dec 2024 21:37:54 +0100 Subject: [PATCH 120/244] patch 9.1.0935: SpotBugs compiler can be improved MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: SpotBugs compiler can be improved Solution: runtime(compiler): Improve defaults and error handling for SpotBugs; update test_compiler.vim (Aliaksei Budavei) runtime(compiler): Improve defaults and error handling for SpotBugs * Keep "spotbugs#DefaultPreCompilerTestAction()" defined but do not assign its Funcref to the "PreCompilerTestAction" key of "g:spotbugs_properties": there are no default and there can only be introduced arbitrary "*sourceDirPath" entries; therefore, this assignment is confusing at best, given that the function's implementation delegates to whatever "PreCompilerAction" is. * Allow for the possibility of relative source pathnames passed as arguments to Vim for the Javac default actions, and the necessity to have them properly reconciled when the current working directory is changed. * Do not expect users to remember or know that new source files ‘must be’ ":argadd"'d to be then known to the Javac default actions; so collect the names of Java-file buffers and Java-file Vim arguments; and let users providing the "@sources" file-lists in the "g:javac_makeprg_params" variable update these file-lists themselves. * Strive to not leave behind a fire-once Syntax ":autocmd" for a Java buffer whenever an arbitrary pre-compile action errors out. * Only attempt to run a post-compiler action in the absence of failures for a pre-compiler action. Note that warnings and failures are treated alike (?!) by the Javac compiler, so when previews are tried out with "--enable-preview", remember about passing "-Xlint:-preview" too to also let SpotBugs have a go. * Properly group conditional operators when testing for key entries in a user-defined variable. * Also test whether "javaExternal" is defined when choosing an implementation for source-file parsing. * Two commands are provided to toggle actions for buffer-local autocommands: - SpotBugsRemoveBufferAutocmd; - SpotBugsDefineBufferAutocmd. For example, try this from "~/.vim/after/ftplugin/java.vim": ------------------------------------------------------------ if exists(':SpotBugsDefineBufferAutocmd') == 2 SpotBugsDefineBufferAutocmd BufWritePost SigUSR1 endif ------------------------------------------------------------ And ":doautocmd java_spotbugs User" can be manually used at will. closes: #16140 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt --- runtime/autoload/spotbugs.vim | 162 +++++++++++--- runtime/compiler/spotbugs.vim | 153 +++++++++---- runtime/doc/quickfix.txt | 92 ++++++-- runtime/ftplugin/java.vim | 232 ++++++++++++++------ src/testdir/test_compiler.vim | 400 ++++++++++++++++++++++++++++++++-- src/version.c | 2 + 6 files changed, 871 insertions(+), 170 deletions(-) diff --git a/runtime/autoload/spotbugs.vim b/runtime/autoload/spotbugs.vim index 9161395794..e2262074ed 100644 --- a/runtime/autoload/spotbugs.vim +++ b/runtime/autoload/spotbugs.vim @@ -1,10 +1,51 @@ -" Default pre- and post-compiler actions for SpotBugs +" Default pre- and post-compiler actions and commands for SpotBugs " Maintainers: @konfekt and @zzzyxwvut -" Last Change: 2024 Nov 27 +" Last Change: 2024 Dec 08 let s:save_cpo = &cpo set cpo&vim +" Look for the setting of "g:spotbugs#state" in "ftplugin/java.vim". +let s:state = get(g:, 'spotbugs#state', {}) +let s:commands = get(s:state, 'commands', {}) +let s:compiler = get(s:state, 'compiler', '') +let s:readable = filereadable($VIMRUNTIME . '/compiler/' . s:compiler . '.vim') + +if has_key(s:commands, 'DefaultPreCompilerCommand') + let g:SpotBugsPreCompilerCommand = s:commands.DefaultPreCompilerCommand +else + + function! s:DefaultPreCompilerCommand(arguments) abort + execute 'make ' . a:arguments + cc + endfunction + + let g:SpotBugsPreCompilerCommand = function('s:DefaultPreCompilerCommand') +endif + +if has_key(s:commands, 'DefaultPreCompilerTestCommand') + let g:SpotBugsPreCompilerTestCommand = s:commands.DefaultPreCompilerTestCommand +else + + function! s:DefaultPreCompilerTestCommand(arguments) abort + execute 'make ' . a:arguments + cc + endfunction + + let g:SpotBugsPreCompilerTestCommand = function('s:DefaultPreCompilerTestCommand') +endif + +if has_key(s:commands, 'DefaultPostCompilerCommand') + let g:SpotBugsPostCompilerCommand = s:commands.DefaultPostCompilerCommand +else + + function! s:DefaultPostCompilerCommand(arguments) abort + execute 'make ' . a:arguments + endfunction + + let g:SpotBugsPostCompilerCommand = function('s:DefaultPostCompilerCommand') +endif + if v:version > 900 function! spotbugs#DeleteClassFiles() abort @@ -127,25 +168,21 @@ endif function! spotbugs#DefaultPostCompilerAction() abort " Since v7.4.191. - make %:S + call call(g:SpotBugsPostCompilerCommand, ['%:S']) endfunction -" Look for "spotbugs#compiler" in "ftplugin/java.vim". -let s:compiler = exists('spotbugs#compiler') ? spotbugs#compiler : '' -let s:readable = filereadable($VIMRUNTIME . '/compiler/' . s:compiler . '.vim') - if s:readable && s:compiler ==# 'maven' && executable('mvn') function! spotbugs#DefaultPreCompilerAction() abort call spotbugs#DeleteClassFiles() compiler maven - make compile + call call(g:SpotBugsPreCompilerCommand, ['compile']) endfunction function! spotbugs#DefaultPreCompilerTestAction() abort call spotbugs#DeleteClassFiles() compiler maven - make test-compile + call call(g:SpotBugsPreCompilerTestCommand, ['test-compile']) endfunction function! spotbugs#DefaultProperties() abort @@ -156,10 +193,10 @@ if s:readable && s:compiler ==# 'maven' && executable('mvn') \ function('spotbugs#DefaultPreCompilerTestAction'), \ 'PostCompilerAction': \ function('spotbugs#DefaultPostCompilerAction'), - \ 'sourceDirPath': 'src/main/java', - \ 'classDirPath': 'target/classes', - \ 'testSourceDirPath': 'src/test/java', - \ 'testClassDirPath': 'target/test-classes', + \ 'sourceDirPath': ['src/main/java'], + \ 'classDirPath': ['target/classes'], + \ 'testSourceDirPath': ['src/test/java'], + \ 'testClassDirPath': ['target/test-classes'], \ } endfunction @@ -169,13 +206,13 @@ elseif s:readable && s:compiler ==# 'ant' && executable('ant') function! spotbugs#DefaultPreCompilerAction() abort call spotbugs#DeleteClassFiles() compiler ant - make compile + call call(g:SpotBugsPreCompilerCommand, ['compile']) endfunction function! spotbugs#DefaultPreCompilerTestAction() abort call spotbugs#DeleteClassFiles() compiler ant - make compile-test + call call(g:SpotBugsPreCompilerTestCommand, ['compile-test']) endfunction function! spotbugs#DefaultProperties() abort @@ -186,28 +223,55 @@ elseif s:readable && s:compiler ==# 'ant' && executable('ant') \ function('spotbugs#DefaultPreCompilerTestAction'), \ 'PostCompilerAction': \ function('spotbugs#DefaultPostCompilerAction'), - \ 'sourceDirPath': 'src', - \ 'classDirPath': 'build/classes', - \ 'testSourceDirPath': 'test', - \ 'testClassDirPath': 'build/test/classes', + \ 'sourceDirPath': ['src'], + \ 'classDirPath': ['build/classes'], + \ 'testSourceDirPath': ['test'], + \ 'testClassDirPath': ['build/test/classes'], \ } endfunction unlet s:readable s:compiler elseif s:readable && s:compiler ==# 'javac' && executable('javac') + let s:filename = tempname() function! spotbugs#DefaultPreCompilerAction() abort call spotbugs#DeleteClassFiles() compiler javac if get(b:, 'javac_makeprg_params', get(g:, 'javac_makeprg_params', '')) =~ '\s@\S' - " Read options and filenames from @options [@sources ...]. - make + " Only read options and filenames from @options [@sources ...] and do + " not update these files when filelists change. + call call(g:SpotBugsPreCompilerCommand, ['']) else - " Let Javac figure out what files to compile. - execute 'make ' . join(map(filter(copy(v:argv), - \ "v:val =~# '\\.java\\=$'"), - \ 'shellescape(v:val)'), ' ') + " Collect filenames so that Javac can figure out what to compile. + let filelist = [] + + for arg_num in range(argc(-1)) + let arg_name = argv(arg_num) + + if arg_name =~# '\.java\=$' + call add(filelist, fnamemodify(arg_name, ':p:S')) + endif + endfor + + for buf_num in range(1, bufnr('$')) + if !buflisted(buf_num) + continue + endif + + let buf_name = bufname(buf_num) + + if buf_name =~# '\.java\=$' + let buf_name = fnamemodify(buf_name, ':p:S') + + if index(filelist, buf_name) < 0 + call add(filelist, buf_name) + endif + endif + endfor + + noautocmd call writefile(filelist, s:filename) + call call(g:SpotBugsPreCompilerCommand, [shellescape('@' . s:filename)]) endif endfunction @@ -219,14 +283,13 @@ elseif s:readable && s:compiler ==# 'javac' && executable('javac') return { \ 'PreCompilerAction': \ function('spotbugs#DefaultPreCompilerAction'), - \ 'PreCompilerTestAction': - \ function('spotbugs#DefaultPreCompilerTestAction'), \ 'PostCompilerAction': \ function('spotbugs#DefaultPostCompilerAction'), \ } endfunction - unlet s:readable s:compiler + unlet s:readable s:compiler g:SpotBugsPreCompilerTestCommand + delfunction! s:DefaultPreCompilerTestCommand else function! spotbugs#DefaultPreCompilerAction() abort @@ -241,10 +304,49 @@ else return {} endfunction - unlet s:readable + " XXX: Keep "s:compiler" around for "spotbugs#DefaultPreCompilerAction()", + " "s:DefaultPostCompilerCommand" -- "spotbugs#DefaultPostCompilerAction()". + unlet s:readable g:SpotBugsPreCompilerCommand g:SpotBugsPreCompilerTestCommand + delfunction! s:DefaultPreCompilerCommand + delfunction! s:DefaultPreCompilerTestCommand endif +function! s:DefineBufferAutocmd(event, ...) abort + if !exists('#java_spotbugs#User') + return 1 + endif + + for l:event in insert(copy(a:000), a:event) + if l:event != 'User' + execute printf('silent! autocmd! java_spotbugs %s ', l:event) + execute printf('autocmd java_spotbugs %s doautocmd User', l:event) + endif + endfor + + return 0 +endfunction + +function! s:RemoveBufferAutocmd(event, ...) abort + if !exists('#java_spotbugs') + return 1 + endif + + for l:event in insert(copy(a:000), a:event) + if l:event != 'User' + execute printf('silent! autocmd! java_spotbugs %s ', l:event) + endif + endfor + + return 0 +endfunction + +" Documented in ":help compiler-spotbugs". +command! -bar -nargs=+ -complete=event SpotBugsDefineBufferAutocmd + \ call s:DefineBufferAutocmd() +command! -bar -nargs=+ -complete=event SpotBugsRemoveBufferAutocmd + \ call s:RemoveBufferAutocmd() + let &cpo = s:save_cpo -unlet s:save_cpo +unlet s:commands s:state s:save_cpo " vim: set foldmethod=syntax shiftwidth=2 expandtab: diff --git a/runtime/compiler/spotbugs.vim b/runtime/compiler/spotbugs.vim index 72a5084976..10d164b6af 100644 --- a/runtime/compiler/spotbugs.vim +++ b/runtime/compiler/spotbugs.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Spotbugs (Java static checker; needs javac compiled classes) " Maintainer: @konfekt and @zzzyxwvut -" Last Change: 2024 Nov 27 +" Last Change: 2024 Dec 14 if exists('g:current_compiler') || bufname() !~# '\.java\=$' || wordcount().chars < 9 finish @@ -24,8 +24,9 @@ let s:type_names = '\C\<\%(\.\@1 +"b:" or "g:spotbugs_makeprg_params" variable. For example: >vim let b:spotbugs_makeprg_params = "-longBugCodes -effort:max -low" @@ -1359,22 +1359,25 @@ By default, the class files are searched in the directory where the source files are placed. However, typical Java projects use distinct directories for source files and class files. To make both known to SpotBugs, assign their paths (distinct and relative to their common root directory) to the -following properties (using the example of a common Maven project): > +following properties (using the example of a common Maven project): >vim let g:spotbugs_properties = { - \ 'sourceDirPath': 'src/main/java', - \ 'classDirPath': 'target/classes', - \ 'testSourceDirPath': 'src/test/java', - \ 'testClassDirPath': 'target/test-classes', + \ 'sourceDirPath': ['src/main/java'], + \ 'classDirPath': ['target/classes'], + \ 'testSourceDirPath': ['src/test/java'], + \ 'testClassDirPath': ['target/test-classes'], \ } +Note that source and class path entries are expected to come in pairs: define +both "sourceDirPath" and "classDirPath" when you are considering at least one, +and apply the same logic to "testSourceDirPath" and "testClassDirPath". Note that values for the path keys describe only for SpotBugs where to look for files; refer to the documentation for particular compiler plugins for more information. The default pre- and post-compiler actions are provided for Ant, Maven, and Javac compiler plugins and can be selected by assigning the name of a compiler -plugin to the "compiler" key: > +plugin (`ant`, `maven`, or `javac`) to the "compiler" key: >vim let g:spotbugs_properties = { \ 'compiler': 'maven', @@ -1384,7 +1387,7 @@ This single setting is essentially equivalent to all the settings below, with the exception made for the "PreCompilerAction" and "PreCompilerTestAction" values: their listed |Funcref|s will obtain no-op implementations whereas the implicit Funcrefs of the "compiler" key will obtain the requested defaults if -available. > +available. >vim let g:spotbugs_properties = { \ 'PreCompilerAction': @@ -1393,10 +1396,10 @@ available. > \ function('spotbugs#DefaultPreCompilerTestAction'), \ 'PostCompilerAction': \ function('spotbugs#DefaultPostCompilerAction'), - \ 'sourceDirPath': 'src/main/java', - \ 'classDirPath': 'target/classes', - \ 'testSourceDirPath': 'src/test/java', - \ 'testClassDirPath': 'target/test-classes', + \ 'sourceDirPath': ['src/main/java'], + \ 'classDirPath': ['target/classes'], + \ 'testSourceDirPath': ['src/test/java'], + \ 'testClassDirPath': ['target/test-classes'], \ } With default actions, the compiler of choice will attempt to rebuild the class @@ -1404,23 +1407,42 @@ files for the buffer (and possibly for the whole project) as soon as a Java syntax file is loaded; then, `spotbugs` will attempt to analyze the quality of the compilation unit of the buffer. -When default actions are not suited to a desired workflow, consider writing -arbitrary functions yourself and matching their |Funcref|s to the supported +Vim commands proficient in 'makeprg' [0] can be composed with default actions. +Begin by considering which of the supported keys, "DefaultPreCompilerCommand", +"DefaultPreCompilerTestCommand", or "DefaultPostCompilerCommand", you need to +write an implementation for, observing that each of these keys corresponds to +a particular "*Action" key. Follow it by defining a new function that always +declares an only parameter of type string and puts to use a command equivalent +of |:make|, and assigning its |Funcref| to the selected key. For example: +>vim + function! GenericPostCompilerCommand(arguments) abort + execute 'make ' . a:arguments + endfunction + + let g:spotbugs_properties = { + \ 'DefaultPostCompilerCommand': + \ function('GenericPostCompilerCommand'), + \ } + +When default actions are not suited to a desired workflow, proceed by writing +arbitrary functions yourself and matching their Funcrefs to the supported keys: "PreCompilerAction", "PreCompilerTestAction", and "PostCompilerAction". The next example re-implements the default pre-compiler actions for a Maven -project and requests other default Maven settings with the "compiler" entry: > - +project and requests other default Maven settings with the "compiler" entry: +>vim function! MavenPreCompilerAction() abort call spotbugs#DeleteClassFiles() compiler maven make compile + cc endfunction function! MavenPreCompilerTestAction() abort call spotbugs#DeleteClassFiles() compiler maven make test-compile + cc endfunction let g:spotbugs_properties = { @@ -1433,14 +1455,46 @@ project and requests other default Maven settings with the "compiler" entry: > Note that all entered custom settings will take precedence over the matching default settings in "g:spotbugs_properties". +Note that it is necessary to notify the plugin of the result of a pre-compiler +action before further work can be undertaken. Using |:cc| after |:make| (or +|:ll| after |:lmake|) as the last command of an action is the supported means +of such communication. + +Two commands, "SpotBugsRemoveBufferAutocmd" and "SpotBugsDefineBufferAutocmd", +are provided to toggle actions for buffer-local autocommands. For example, to +also run actions on any |BufWritePost| and |SigUSR1| event, add these lines to +`~/.vim/after/ftplugin/java.vim`: >vim + + if exists(':SpotBugsDefineBufferAutocmd') == 2 + SpotBugsDefineBufferAutocmd BufWritePost SigUSR1 + endif + +Otherwise, you can turn to `:doautocmd java_spotbugs User` at any time. The "g:spotbugs_properties" variable is consulted by the Java filetype plugin (|ft-java-plugin|) to arrange for the described automation, and, therefore, it must be defined before |FileType| events can take place for the buffers loaded with Java source files. It could, for example, be set in a project-local -|vimrc| loaded by [0]. +|vimrc| loaded by [1]. + +Both "g:spotbugs_properties" and "b:spotbugs_properties" are recognized and +must be modifiable (|:unlockvar|). The "*Command" entries are always treated +as global functions to be shared among all Java buffers. + +The SpotBugs Java library and, by extension, its distributed shell scripts do +not support in the `-textui` mode listed pathnames with directory filenames +that contain blank characters [2]. To work around this limitation, consider +making a symbolic link to such a directory from a directory that does not have +blank characters in its name and passing this information to SpotBugs: >vim + + let g:spotbugs_alternative_path = { + \ 'fromPath': 'path/to/dir_without_blanks', + \ 'toPath': 'path/to/dir with blanks', + \ } -[0] https://github.com/MarcWeber/vim-addon-local-vimrc/ +[0] https://github.com/Konfekt/vim-compilers +[1] https://github.com/MarcWeber/vim-addon-local-vimrc +[2] https://github.com/spotbugs/spotbugs/issues/909 GNU MAKE *compiler-make* diff --git a/runtime/ftplugin/java.vim b/runtime/ftplugin/java.vim index 6e12fe2fe5..0fa773335d 100644 --- a/runtime/ftplugin/java.vim +++ b/runtime/ftplugin/java.vim @@ -3,7 +3,7 @@ " Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com> " Former Maintainer: Dan Sharp " Repository: https://github.com/zzzyxwvut/java-vim.git -" Last Change: 2024 Nov 24 +" Last Change: 2024 Dec 16 " 2024 Jan 14 by Vim Project (browsefilter) " 2024 May 23 by Riley Bruins ('commentstring') @@ -90,63 +90,155 @@ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") endif endif -" The support for pre- and post-compiler actions for SpotBugs. -if exists("g:spotbugs_properties") && has_key(g:spotbugs_properties, 'compiler') - try - let spotbugs#compiler = g:spotbugs_properties.compiler - let g:spotbugs_properties = extend( - \ spotbugs#DefaultProperties(), - \ g:spotbugs_properties, - \ 'force') - catch - echomsg v:errmsg - finally - call remove(g:spotbugs_properties, 'compiler') - endtry -endif +"""" Support pre- and post-compiler actions for SpotBugs. +if (!empty(get(g:, 'spotbugs_properties', {})) || + \ !empty(get(b:, 'spotbugs_properties', {}))) && + \ filereadable($VIMRUNTIME . '/compiler/spotbugs.vim') + + function! s:SpotBugsGetProperty(name, default) abort + return get( + \ {s:spotbugs_properties_scope}spotbugs_properties, + \ a:name, + \ a:default) + endfunction + + function! s:SpotBugsHasProperty(name) abort + return has_key( + \ {s:spotbugs_properties_scope}spotbugs_properties, + \ a:name) + endfunction + + function! s:SpotBugsGetProperties() abort + return {s:spotbugs_properties_scope}spotbugs_properties + endfunction + + " Work around ":bar"s and ":autocmd"s. + function! s:ExecuteActionOnce(cleanup_cmd, action_cmd) abort + try + execute a:cleanup_cmd + finally + execute a:action_cmd + endtry + endfunction + + if exists("b:spotbugs_properties") + let s:spotbugs_properties_scope = 'b:' + + " Merge global entries, if any, in buffer-local entries, favouring + " defined buffer-local ones. + call extend( + \ b:spotbugs_properties, + \ get(g:, 'spotbugs_properties', {}), + \ 'keep') + elseif exists("g:spotbugs_properties") + let s:spotbugs_properties_scope = 'g:' + endif + + let s:commands = {} + + for s:name in ['DefaultPreCompilerCommand', + \ 'DefaultPreCompilerTestCommand', + \ 'DefaultPostCompilerCommand'] + if s:SpotBugsHasProperty(s:name) + let s:commands[s:name] = remove( + \ s:SpotBugsGetProperties(), + \ s:name) + endif + endfor + + if s:SpotBugsHasProperty('compiler') + " XXX: Postpone loading the script until all state, if any, has been + " collected. + if !empty(s:commands) + let g:spotbugs#state = { + \ 'compiler': remove(s:SpotBugsGetProperties(), 'compiler'), + \ 'commands': copy(s:commands), + \ } + else + let g:spotbugs#state = { + \ 'compiler': remove(s:SpotBugsGetProperties(), 'compiler'), + \ } + endif + + " Merge default entries in global (or buffer-local) entries, favouring + " defined global (or buffer-local) ones. + call extend( + \ {s:spotbugs_properties_scope}spotbugs_properties, + \ spotbugs#DefaultProperties(), + \ 'keep') + elseif !empty(s:commands) + " XXX: Postpone loading the script until all state, if any, has been + " collected. + let g:spotbugs#state = {'commands': copy(s:commands)} + endif -if exists("g:spotbugs_properties") && - \ filereadable($VIMRUNTIME . '/compiler/spotbugs.vim') + unlet s:commands s:name let s:request = 0 - if has_key(g:spotbugs_properties, 'PreCompilerAction') - let s:dispatcher = 'call g:spotbugs_properties.PreCompilerAction() | ' - let s:request += 1 + if s:SpotBugsHasProperty('PostCompilerAction') + let s:request += 4 endif - if has_key(g:spotbugs_properties, 'PreCompilerTestAction') - let s:dispatcher = 'call g:spotbugs_properties.PreCompilerTestAction() | ' + if s:SpotBugsHasProperty('PreCompilerTestAction') + let s:dispatcher = printf('call call(%s, [])', + \ string(s:SpotBugsGetProperties().PreCompilerTestAction)) let s:request += 2 endif - if has_key(g:spotbugs_properties, 'PostCompilerAction') - let s:request += 4 + if s:SpotBugsHasProperty('PreCompilerAction') + let s:dispatcher = printf('call call(%s, [])', + \ string(s:SpotBugsGetProperties().PreCompilerAction)) + let s:request += 1 endif + " Adapt the tests for "s:FindClassFiles()" from "compiler/spotbugs.vim". if (s:request == 3 || s:request == 7) && - \ has_key(g:spotbugs_properties, 'sourceDirPath') && - \ has_key(g:spotbugs_properties, 'testSourceDirPath') - function! s:DispatchAction(path_action_pairs) abort + \ (!empty(s:SpotBugsGetProperty('sourceDirPath', [])) && + \ !empty(s:SpotBugsGetProperty('classDirPath', [])) && + \ !empty(s:SpotBugsGetProperty('testSourceDirPath', [])) && + \ !empty(s:SpotBugsGetProperty('testClassDirPath', []))) + function! s:DispatchAction(paths_action_pairs) abort let name = expand('%:p') - for [path, Action] in a:path_action_pairs - if name =~# (path . '.\{-}\.java\=$') - call Action() - break - endif + for [paths, Action] in a:paths_action_pairs + for path in paths + if name =~# (path . '.\{-}\.java\=$') + call Action() + return + endif + endfor endfor endfunction - let s:dispatcher = printf('call s:DispatchAction(%s) | ', - \ string([[g:spotbugs_properties.sourceDirPath, - \ g:spotbugs_properties.PreCompilerAction], - \ [g:spotbugs_properties.testSourceDirPath, - \ g:spotbugs_properties.PreCompilerTestAction]])) + let s:dir_cnt = min([ + \ len(s:SpotBugsGetProperties().sourceDirPath), + \ len(s:SpotBugsGetProperties().classDirPath)]) + let s:test_dir_cnt = min([ + \ len(s:SpotBugsGetProperties().testSourceDirPath), + \ len(s:SpotBugsGetProperties().testClassDirPath)]) + + " Do not break up path pairs with filtering! + let s:dispatcher = printf('call s:DispatchAction(%s)', + \ string([[s:SpotBugsGetProperties().sourceDirPath[0 : s:dir_cnt - 1], + \ s:SpotBugsGetProperties().PreCompilerAction], + \ [s:SpotBugsGetProperties().testSourceDirPath[0 : s:test_dir_cnt - 1], + \ s:SpotBugsGetProperties().PreCompilerTestAction]])) + unlet s:test_dir_cnt s:dir_cnt + endif + + if exists("s:dispatcher") + function! s:ExecuteActions(pre_action, post_action) abort + try + execute a:pre_action + catch /\ + silent! autocmd! java_spotbugs User silent! autocmd! java_spotbugs Syntax for s:action in s:actions - execute printf('autocmd java_spotbugs %s %s', + if has_key(s:action, 'once') + execute printf('autocmd java_spotbugs %s ' . + \ 'call s:ExecuteActionOnce(%s, %s)', \ s:action.event, - \ s:action.cmd . (has_key(s:action, 'once') - \ ? printf(' | autocmd! java_spotbugs %s ', - \ s:action.event) - \ : '')) + \ string(printf('autocmd! java_spotbugs %s ', + \ s:action.event)), + \ string(s:action.cmd)) + else + execute printf('autocmd java_spotbugs %s %s', + \ s:action.event, + \ s:action.cmd) + endif endfor unlet! s:action s:actions s:idx s:dispatcher endif - unlet s:request + delfunction s:SpotBugsGetProperties + delfunction s:SpotBugsHasProperty + delfunction s:SpotBugsGetProperty + unlet! s:request s:spotbugs_properties_scope endif function! JavaFileTypeCleanUp() abort setlocal suffixes< suffixesadd< formatoptions< comments< commentstring< path< includeexpr< unlet! b:browsefilter - " The concatenated removals may be misparsed as a BufWritePost autocmd. - silent! autocmd! java_spotbugs BufWritePost + " The concatenated removals may be misparsed as a User autocmd. + silent! autocmd! java_spotbugs User silent! autocmd! java_spotbugs Syntax endfunction @@ -232,14 +338,16 @@ if exists("s:zip_func_upgradable") endif if exists("*s:DispatchAction") - def! s:DispatchAction(path_action_pairs: list>) + def! s:DispatchAction(paths_action_pairs: list>) const name: string = expand('%:p') - for [path: string, Action: func: any] in path_action_pairs - if name =~# (path .. '.\{-}\.java\=$') - Action() - break - endif + for [paths: list, Action: func: any] in paths_action_pairs + for path in paths + if name =~# (path .. '.\{-}\.java\=$') + Action() + return + endif + endfor endfor enddef endif diff --git a/src/testdir/test_compiler.vim b/src/testdir/test_compiler.vim index 71afe5c696..14a1fa6a14 100644 --- a/src/testdir/test_compiler.vim +++ b/src/testdir/test_compiler.vim @@ -15,6 +15,8 @@ func Test_compiler() set noshellslash e Xfoo.pl + " Play nice with other tests. + defer setqflist([]) compiler perl call assert_equal('perl', b:current_compiler) call assert_fails('let g:current_compiler', 'E121:') @@ -97,6 +99,7 @@ func s:SpotBugsParseFilterMakePrg(dirname, makeprg) endif let offset += 1 + strlen('-sourcepath') let result.sourcepath = matchstr(strpart(a:makeprg, offset), '.\{-}\ze[ \t]') + let offset += 1 + strlen(result.sourcepath) " Get the class file arguments, dropping the pathname prefix. let offset = stridx(a:makeprg, a:dirname, offset) @@ -146,7 +149,8 @@ func Test_compiler_spotbugs_makeprg() " THE EXPECTED RESULTS. let results = {} let results['Xspotbugs/src/tests/ðŒ‚1.java'] = { - \ 'sourcepath': '%:p:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/ðŒ‚1.java', + \ ':p:h:S')}, \ 'classfiles': sort([ \ 'Xspotbugs/tests/ðŒ‚1$1.class', \ 'Xspotbugs/tests/ðŒ‚1$1ðŒ‰ðŒ‰1.class', @@ -159,11 +163,12 @@ func Test_compiler_spotbugs_makeprg() \ } " No class file for an empty source file even with "-Xpkginfo:always". let results['Xspotbugs/src/tests/package-info.java'] = { - \ 'sourcepath': '', + \ 'Sourcepath': {-> ''}, \ 'classfiles': [], \ } let results['Xspotbugs/src/tests/α/ðŒ‚1.java'] = { - \ 'sourcepath': '%:p:h:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/ðŒ‚1.java', + \ ':p:h:h:S')}, \ 'classfiles': sort([ \ 'Xspotbugs/tests/α/ðŒ‚1$1.class', \ 'Xspotbugs/tests/α/ðŒ‚1$1ðŒ‰ðŒ‰1.class', @@ -175,11 +180,13 @@ func Test_compiler_spotbugs_makeprg() \ 'Xspotbugs/tests/α/ðŒ‚2.class']), \ } let results['Xspotbugs/src/tests/α/package-info.java'] = { - \ 'sourcepath': '%:p:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/package-info.java', + \ ':p:h:S')}, \ 'classfiles': ['Xspotbugs/tests/α/package-info.class'], \ } let results['Xspotbugs/src/tests/α/β/ðŒ‚1.java'] = { - \ 'sourcepath': '%:p:h:h:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/β/ðŒ‚1.java', + \ ':p:h:h:h:S')}, \ 'classfiles': sort([ \ 'Xspotbugs/tests/α/β/ðŒ‚1$1.class', \ 'Xspotbugs/tests/α/β/ðŒ‚1$1ðŒ‰ðŒ‰1.class', @@ -191,11 +198,13 @@ func Test_compiler_spotbugs_makeprg() \ 'Xspotbugs/tests/α/β/ðŒ‚2.class']), \ } let results['Xspotbugs/src/tests/α/β/package-info.java'] = { - \ 'sourcepath': '%:p:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/β/package-info.java', + \ ':p:h:S')}, \ 'classfiles': ['Xspotbugs/tests/α/β/package-info.class'], \ } let results['Xspotbugs/src/tests/α/β/γ/ðŒ‚1.java'] = { - \ 'sourcepath': '%:p:h:h:h:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/β/γ/ðŒ‚1.java', + \ ':p:h:h:h:h:S')}, \ 'classfiles': sort([ \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1$1.class', \ 'Xspotbugs/tests/α/β/γ/ðŒ‚1$1ðŒ‰ðŒ‰1.class', @@ -207,11 +216,13 @@ func Test_compiler_spotbugs_makeprg() \ 'Xspotbugs/tests/α/β/γ/ðŒ‚2.class']), \ } let results['Xspotbugs/src/tests/α/β/γ/package-info.java'] = { - \ 'sourcepath': '%:p:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/β/γ/package-info.java', + \ ':p:h:S')}, \ 'classfiles': ['Xspotbugs/tests/α/β/γ/package-info.class'], \ } let results['Xspotbugs/src/tests/α/β/γ/δ/ðŒ‚1.java'] = { - \ 'sourcepath': '%:p:h:h:h:h:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/β/γ/δ/ðŒ‚1.java', + \ ':p:h:h:h:h:h:S')}, \ 'classfiles': sort([ \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1$1.class', \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚1$1ðŒ‰ðŒ‰1.class', @@ -223,14 +234,15 @@ func Test_compiler_spotbugs_makeprg() \ 'Xspotbugs/tests/α/β/γ/δ/ðŒ‚2.class']), \ } let results['Xspotbugs/src/tests/α/β/γ/δ/package-info.java'] = { - \ 'sourcepath': '%:p:h:S', + \ 'Sourcepath': {-> fnamemodify('Xspotbugs/src/tests/α/β/γ/δ/package-info.java', + \ ':p:h:S')}, \ 'classfiles': ['Xspotbugs/tests/α/β/γ/δ/package-info.class'], \ } " MAKE CLASS FILES DISCOVERABLE! let g:spotbugs_properties = { - \ 'sourceDirPath': 'src/tests', - \ 'classDirPath': 'tests', + \ 'sourceDirPath': ['src/tests'], + \ 'classDirPath': ['tests'], \ } call assert_true(has_key(s:SpotBugsParseFilterMakePrg('Xspotbugs', ''), 'sourcepath')) @@ -255,20 +267,22 @@ func Test_compiler_spotbugs_makeprg() let package_file = src_dir .. 'package-info.java' call writefile([package], src_dir .. 'package-info.java') - for s in ['on', 'off'] + " Note that using "off" for the first _outer_ iteration is preferable + " because only then "hlexists()" may be 0 (see "compiler/spotbugs.vim"). + for s in ['off', 'on'] execute 'syntax ' .. s execute 'edit ' .. type_file compiler spotbugs let result = s:SpotBugsParseFilterMakePrg('Xspotbugs', &l:makeprg) - call assert_equal(results[type_file].sourcepath, result.sourcepath) + call assert_equal(results[type_file].Sourcepath(), result.sourcepath) call assert_equal(results[type_file].classfiles, result.classfiles) bwipeout execute 'edit ' .. package_file compiler spotbugs let result = s:SpotBugsParseFilterMakePrg('Xspotbugs', &l:makeprg) - call assert_equal(results[package_file].sourcepath, result.sourcepath) + call assert_equal(results[package_file].Sourcepath(), result.sourcepath) call assert_equal(results[package_file].classfiles, result.classfiles) bwipeout endfor @@ -277,4 +291,360 @@ func Test_compiler_spotbugs_makeprg() let &shellslash = save_shellslash endfunc +func s:SpotBugsBeforeFileTypeTryPluginAndClearCache(state) + " Ponder over "extend(spotbugs#DefaultProperties(), g:spotbugs_properties)" + " in "ftplugin/java.vim". + let g:spotbugs#state = a:state + runtime autoload/spotbugs.vim +endfunc + +func Test_compiler_spotbugs_properties() + let save_shellslash = &shellslash + set shellslash + setlocal makeprg= + filetype plugin on + + call assert_true(mkdir('Xspotbugs/src', 'pR')) + call assert_true(mkdir('Xspotbugs/tests', 'pR')) + let type_file = 'Xspotbugs/src/ðŒ„.java' + let test_file = 'Xspotbugs/tests/ðŒ„$.java' + call writefile(['enum ðŒ„{}'], type_file) + call writefile(['class ðŒ„${}'], test_file) + + " TEST INTEGRATION WITH A BOGUS COMPILER PLUGIN. + if !filereadable($VIMRUNTIME .. '/compiler/foo.vim') && !executable('foo') + let g:spotbugs_properties = {'compiler': 'foo'} + " XXX: In case this "if" block is no longer first. + call s:SpotBugsBeforeFileTypeTryPluginAndClearCache({ + \ 'compiler': g:spotbugs_properties.compiler, + \ }) + execute 'edit ' .. type_file + call assert_equal('java', &l:filetype) + " This variable will indefinitely keep the compiler name. + call assert_equal('foo', g:spotbugs#state.compiler) + " The "compiler" entry should be gone after FileType and default entries + " should only appear for a supported compiler. + call assert_false(has_key(g:spotbugs_properties, 'compiler')) + call assert_true(empty(g:spotbugs_properties)) + " Query default implementations. + call assert_true(exists('*spotbugs#DefaultProperties')) + call assert_true(exists('*spotbugs#DefaultPreCompilerAction')) + call assert_true(exists('*spotbugs#DefaultPreCompilerTestAction')) + call assert_true(empty(spotbugs#DefaultProperties())) + " Get a ":message". + redir => out + call spotbugs#DefaultPreCompilerAction() + redir END + call assert_equal('Not supported: "foo"', out[stridx(out, 'Not') :]) + " Get a ":message". + redir => out + call spotbugs#DefaultPreCompilerTestAction() + redir END + call assert_equal('Not supported: "foo"', out[stridx(out, 'Not') :]) + " No ":autocmd"s without one of "PreCompiler*Action", "PostCompilerAction". + call assert_false(exists('#java_spotbugs')) + bwipeout + endif + + let s:spotbugs_results = { + \ 'preActionDone': 0, + \ 'preTestActionDone': 0, + \ 'preTestLocalActionDone': 0, + \ 'postActionDone': 0, + \ 'preCommandArguments': '', + \ 'preTestCommandArguments': '', + \ 'postCommandArguments': '', + \ } + defer execute('unlet s:spotbugs_results') + + func! g:SpotBugsPreAction() abort + let s:spotbugs_results.preActionDone = 1 + " XXX: Notify the spotbugs compiler about success or failure. + cc + endfunc + defer execute('delfunction g:SpotBugsPreAction') + + func! g:SpotBugsPreTestAction() abort + let s:spotbugs_results.preTestActionDone = 1 + " XXX: Let see compilation fail. + throw 'Oops' + endfunc + defer execute('delfunction g:SpotBugsPreTestAction') + + func! g:SpotBugsPreTestLocalAction() abort + let s:spotbugs_results.preTestLocalActionDone = 1 + " XXX: Notify the spotbugs compiler about success or failure. + cc + endfunc + defer execute('delfunction g:SpotBugsPreTestLocalAction') + + func! g:SpotBugsPostAction() abort + let s:spotbugs_results.postActionDone = 1 + endfunc + defer execute('delfunction g:SpotBugsPostAction') + + func! g:SpotBugsPreCommand(arguments) abort + let s:spotbugs_results.preActionDone = 1 + let s:spotbugs_results.preCommandArguments = a:arguments + " XXX: Notify the spotbugs compiler about success or failure. + cc + endfunc + defer execute('delfunction g:SpotBugsPreCommand') + + func! g:SpotBugsPreTestCommand(arguments) abort + let s:spotbugs_results.preTestActionDone = 1 + let s:spotbugs_results.preTestCommandArguments = a:arguments + " XXX: Notify the spotbugs compiler about success or failure. + cc + endfunc + defer execute('delfunction g:SpotBugsPreTestCommand') + + func! g:SpotBugsPostCommand(arguments) abort + let s:spotbugs_results.postActionDone = 1 + let s:spotbugs_results.postCommandArguments = a:arguments + endfunc + defer execute('delfunction g:SpotBugsPostCommand') + + " TEST INTEGRATION WITH A SUPPORTED COMPILER PLUGIN. + if filereadable($VIMRUNTIME .. '/compiler/maven.vim') + if !executable('mvn') + if has('win32') + " This is what ":help executable()" suggests. + call writefile([], 'Xspotbugs/mvn.exe') + else + let $PATH = 'Xspotbugs:' .. $PATH + call writefile([], 'Xspotbugs/mvn') + call setfperm('Xspotbugs/mvn', 'rwx------') + endif + endif + + let g:spotbugs_properties = { + \ 'compiler': 'maven', + \ 'PreCompilerAction': function('g:SpotBugsPreAction'), + \ 'PreCompilerTestAction': function('g:SpotBugsPreTestAction'), + \ 'PostCompilerAction': function('g:SpotBugsPostAction'), + \ } + " XXX: In case this is a runner-up ":edit". + call s:SpotBugsBeforeFileTypeTryPluginAndClearCache({ + \ 'compiler': g:spotbugs_properties.compiler, + \ }) + execute 'edit ' .. type_file + call assert_equal('java', &l:filetype) + call assert_equal('maven', g:spotbugs#state.compiler) + call assert_false(has_key(g:spotbugs_properties, 'compiler')) + call assert_false(empty(g:spotbugs_properties)) + " Query default implementations. + call assert_true(exists('*spotbugs#DefaultProperties')) + call assert_equal(sort([ + \ 'PreCompilerAction', + \ 'PreCompilerTestAction', + \ 'PostCompilerAction', + \ 'sourceDirPath', + \ 'classDirPath', + \ 'testSourceDirPath', + \ 'testClassDirPath', + \ ]), + \ sort(keys(spotbugs#DefaultProperties()))) + " Some ":autocmd"s with one of "PreCompiler*Action", "PostCompilerAction". + call assert_true(exists('#java_spotbugs')) + call assert_true(exists('#java_spotbugs#Syntax')) + call assert_true(exists('#java_spotbugs#User')) + call assert_equal(2, exists(':SpotBugsDefineBufferAutocmd')) + SpotBugsDefineBufferAutocmd SigUSR1 User SigUSR1 User SigUSR1 User + call assert_true(exists('#java_spotbugs#SigUSR1')) + call assert_true(exists('#java_spotbugs#Syntax')) + call assert_true(exists('#java_spotbugs#User')) + call assert_equal(2, exists(':SpotBugsRemoveBufferAutocmd')) + SpotBugsRemoveBufferAutocmd SigUSR1 User SigUSR1 User UserGettingBored + call assert_false(exists('#java_spotbugs#SigUSR1')) + call assert_true(exists('#java_spotbugs#Syntax')) + call assert_true(exists('#java_spotbugs#User')) + + let s:spotbugs_results.preActionDone = 0 + let s:spotbugs_results.preTestActionDone = 0 + let s:spotbugs_results.postActionDone = 0 + + doautocmd java_spotbugs Syntax + call assert_false(exists('#java_spotbugs#Syntax')) + + " No match: "type_file !~# 'src/main/java'". + call assert_false(s:spotbugs_results.preActionDone) + " No match: "type_file !~# 'src/test/java'". + call assert_false(s:spotbugs_results.preTestActionDone) + " No pre-match, no post-action. + call assert_false(s:spotbugs_results.postActionDone) + " Without a match, confirm that ":compiler spotbugs" has NOT run. + call assert_true(empty(&l:makeprg)) + + let s:spotbugs_results.preActionDone = 0 + let s:spotbugs_results.preTestActionDone = 0 + let s:spotbugs_results.postActionDone = 0 + " Update path entries. (Note that we cannot use just "src" because there + " is another "src" directory nearer the filesystem root directory, i.e. + " "vim/vim/src/testdir/Xspotbugs/src", and "s:DispatchAction()" (see + " "ftplugin/java.vim") will match "vim/vim/src/testdir/Xspotbugs/tests" + " against "src".) + let g:spotbugs_properties.sourceDirPath = ['Xspotbugs/src'] + let g:spotbugs_properties.classDirPath = ['Xspotbugs/src'] + let g:spotbugs_properties.testSourceDirPath = ['tests'] + let g:spotbugs_properties.testClassDirPath = ['tests'] + + doautocmd java_spotbugs User + " No match: "type_file !~# 'src/main/java'" (with old "*DirPath" values + " cached). + call assert_false(s:spotbugs_results.preActionDone) + " No match: "type_file !~# 'src/test/java'" (with old "*DirPath" values + " cached). + call assert_false(s:spotbugs_results.preTestActionDone) + " No pre-match, no post-action. + call assert_false(s:spotbugs_results.postActionDone) + " Without a match, confirm that ":compiler spotbugs" has NOT run. + call assert_true(empty(&l:makeprg)) + + let s:spotbugs_results.preActionDone = 0 + let s:spotbugs_results.preTestActionDone = 0 + let s:spotbugs_results.postActionDone = 0 + " XXX: Re-build ":autocmd"s from scratch with new values applied. + doautocmd FileType + + call assert_true(exists('b:spotbugs_syntax_once')) + doautocmd java_spotbugs User + " A match: "type_file =~# 'Xspotbugs/src'" (with new "*DirPath" values + " cached). + call assert_true(s:spotbugs_results.preActionDone) + " No match: "type_file !~# 'tests'" (with new "*DirPath" values cached). + call assert_false(s:spotbugs_results.preTestActionDone) + " For a pre-match, a post-action. + call assert_true(s:spotbugs_results.postActionDone) + + " With a match, confirm that ":compiler spotbugs" has run. + if has('win32') + call assert_match('^spotbugs\.bat\s', &l:makeprg) + else + call assert_match('^spotbugs\s', &l:makeprg) + endif + + bwipeout + setlocal makeprg= + let s:spotbugs_results.preActionDone = 0 + let s:spotbugs_results.preTestActionDone = 0 + let s:spotbugs_results.preTestLocalActionDone = 0 + let s:spotbugs_results.postActionDone = 0 + + execute 'edit ' .. test_file + " Prepare a buffer-local, incomplete variant of properties, relying on + " "ftplugin/java.vim" to take care of merging in unique entries, if any, + " from "g:spotbugs_properties". + let b:spotbugs_properties = { + \ 'PreCompilerTestAction': function('g:SpotBugsPreTestLocalAction'), + \ } + call assert_equal('java', &l:filetype) + call assert_true(exists('#java_spotbugs')) + call assert_true(exists('#java_spotbugs#Syntax')) + call assert_true(exists('#java_spotbugs#User')) + call assert_fails('doautocmd java_spotbugs Syntax', 'Oops') + call assert_false(exists('#java_spotbugs#Syntax')) + " No match: "test_file !~# 'Xspotbugs/src'". + call assert_false(s:spotbugs_results.preActionDone) + " A match: "test_file =~# 'tests'". + call assert_true(s:spotbugs_results.preTestActionDone) + call assert_false(s:spotbugs_results.preTestLocalActionDone) + " No action after pre-failure (the thrown "Oops" doesn't qualify for ":cc"). + call assert_false(s:spotbugs_results.postActionDone) + " No ":compiler spotbugs" will be run after pre-failure. + call assert_true(empty(&l:makeprg)) + + let s:spotbugs_results.preActionDone = 0 + let s:spotbugs_results.preTestActionDone = 0 + let s:spotbugs_results.preTestLocalActionDone = 0 + let s:spotbugs_results.postActionDone = 0 + " XXX: Re-build ":autocmd"s from scratch with buffer-local values applied. + doautocmd FileType + + call assert_true(exists('b:spotbugs_syntax_once')) + doautocmd java_spotbugs User + " No match: "test_file !~# 'Xspotbugs/src'". + call assert_false(s:spotbugs_results.preActionDone) + " A match: "test_file =~# 'tests'". + call assert_true(s:spotbugs_results.preTestLocalActionDone) + call assert_false(s:spotbugs_results.preTestActionDone) + " For a pre-match, a post-action. + call assert_true(s:spotbugs_results.postActionDone) + + " With a match, confirm that ":compiler spotbugs" has run. + if has('win32') + call assert_match('^spotbugs\.bat\s', &l:makeprg) + else + call assert_match('^spotbugs\s', &l:makeprg) + endif + + setlocal makeprg= + let s:spotbugs_results.preActionDone = 0 + let s:spotbugs_results.preTestActionDone = 0 + let s:spotbugs_results.preTestLocalActionDone = 0 + let s:spotbugs_results.postActionDone = 0 + let s:spotbugs_results.preCommandArguments = '' + let s:spotbugs_results.preTestCommandArguments = '' + let s:spotbugs_results.postCommandArguments = '' + " XXX: Compose the assigned "*Command"s with the default Maven "*Action"s. + let b:spotbugs_properties = { + \ 'compiler': 'maven', + \ 'DefaultPreCompilerTestCommand': function('g:SpotBugsPreTestCommand'), + \ 'DefaultPreCompilerCommand': function('g:SpotBugsPreCommand'), + \ 'DefaultPostCompilerCommand': function('g:SpotBugsPostCommand'), + \ 'sourceDirPath': ['Xspotbugs/src'], + \ 'classDirPath': ['Xspotbugs/src'], + \ 'testSourceDirPath': ['tests'], + \ 'testClassDirPath': ['tests'], + \ } + unlet g:spotbugs_properties + " XXX: Re-build ":autocmd"s from scratch with buffer-local values applied. + call s:SpotBugsBeforeFileTypeTryPluginAndClearCache({ + \ 'compiler': b:spotbugs_properties.compiler, + \ 'commands': { + \ 'DefaultPreCompilerTestCommand': + \ b:spotbugs_properties.DefaultPreCompilerTestCommand, + \ 'DefaultPreCompilerCommand': + \ b:spotbugs_properties.DefaultPreCompilerCommand, + \ 'DefaultPostCompilerCommand': + \ b:spotbugs_properties.DefaultPostCompilerCommand, + \ }, + \ }) + doautocmd FileType + + call assert_equal('maven', g:spotbugs#state.compiler) + call assert_equal(sort([ + \ 'DefaultPreCompilerTestCommand', + \ 'DefaultPreCompilerCommand', + \ 'DefaultPostCompilerCommand', + \ ]), + \ sort(keys(g:spotbugs#state.commands))) + call assert_true(exists('b:spotbugs_syntax_once')) + doautocmd java_spotbugs User + " No match: "test_file !~# 'Xspotbugs/src'". + call assert_false(s:spotbugs_results.preActionDone) + call assert_true(empty(s:spotbugs_results.preCommandArguments)) + " A match: "test_file =~# 'tests'". + call assert_true(s:spotbugs_results.preTestActionDone) + call assert_equal('test-compile', s:spotbugs_results.preTestCommandArguments) + " For a pre-match, a post-action. + call assert_true(s:spotbugs_results.postActionDone) + call assert_equal('%:S', s:spotbugs_results.postCommandArguments) + + " With a match, confirm that ":compiler spotbugs" has run. + if has('win32') + call assert_match('^spotbugs\.bat\s', &l:makeprg) + else + call assert_match('^spotbugs\s', &l:makeprg) + endif + + bwipeout + setlocal makeprg= + endif + + filetype plugin off + setlocal makeprg= + let &shellslash = save_shellslash +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index f8cee6d97d..a5db0d490c 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 935, /**/ 934, /**/ From 6a38aff218f5b99a1aed7edaa357df24b9092734 Mon Sep 17 00:00:00 2001 From: glepnir Date: Mon, 16 Dec 2024 21:56:16 +0100 Subject: [PATCH 121/244] patch 9.1.0936: cannot highlight completed text Problem: cannot highlight completed text Solution: (optionally) highlight auto-completed text using the ComplMatchIns highlight group (glepnir) closes: #16173 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- runtime/doc/fold.txt | 2 +- runtime/doc/syntax.txt | 4 +- runtime/doc/tags | 1 + runtime/doc/todo.txt | 5 +- runtime/doc/version9.txt | 1 + src/Makefile | 2 +- src/drawline.c | 13 ++++- src/highlight.c | 1 + src/insexpand.c | 53 ++++++++++++++++----- src/proto/insexpand.pro | 1 + src/testdir/dumps/Test_pum_matchins_01.dump | 20 ++++++++ src/testdir/dumps/Test_pum_matchins_02.dump | 20 ++++++++ src/testdir/dumps/Test_pum_matchins_03.dump | 20 ++++++++ src/testdir/dumps/Test_pum_matchins_04.dump | 20 ++++++++ src/testdir/dumps/Test_pum_matchins_05.dump | 20 ++++++++ src/testdir/test_popup.vim | 45 +++++++++++++++++ src/version.c | 2 + 17 files changed, 208 insertions(+), 22 deletions(-) create mode 100644 src/testdir/dumps/Test_pum_matchins_01.dump create mode 100644 src/testdir/dumps/Test_pum_matchins_02.dump create mode 100644 src/testdir/dumps/Test_pum_matchins_03.dump create mode 100644 src/testdir/dumps/Test_pum_matchins_04.dump create mode 100644 src/testdir/dumps/Test_pum_matchins_05.dump diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index 61f3b67f39..cf9208936f 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -160,7 +160,7 @@ lines needed for the computation of a given line: For example, try to avoid the fold levels on previous lines until an independent fold level is found. If this proves difficult, the next best thing could be to cache all fold levels -in a buffer-local variable (b:foldlevels) that is only updated on |b:changedtick|: +in a buffer-local variable (b:foldlevels) that is only updated on |b:changedtick|: >vim vim9script def MyFoldFunc(): number diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index eb6c3b2336..7640ee1838 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2024 Dec 12 +*syntax.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5857,6 +5857,8 @@ PmenuThumb Popup menu: Thumb of the scrollbar. PmenuMatch Popup menu: Matched text in normal item. *hl-PmenuMatchSel* PmenuMatchSel Popup menu: Matched text in selected item. + *hl-ComplMatchIns* +ComplMatchIns Matched text of the currently inserted completion. *hl-PopupNotification* PopupNotification Popup window created with |popup_notification()|. If not diff --git a/runtime/doc/tags b/runtime/doc/tags index a8b49878a3..56004e9c63 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -8136,6 +8136,7 @@ hit-return message.txt /*hit-return* hitest.vim syntax.txt /*hitest.vim* hjkl usr_02.txt /*hjkl* hl-ColorColumn syntax.txt /*hl-ColorColumn* +hl-ComplMatchIns syntax.txt /*hl-ComplMatchIns* hl-Conceal syntax.txt /*hl-Conceal* hl-CurSearch syntax.txt /*hl-CurSearch* hl-Cursor syntax.txt /*hl-Cursor* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index b1318cf9e1..342332ec29 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.1. Last change: 2024 Dec 04 +*todo.txt* For Vim version 9.1. Last change: 2024 Dec 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1093,9 +1093,6 @@ Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313) MS-Windows: buffer completion doesn't work when using backslash (or slash) for a path separator. (xtal8, #2201) -Would be nice for Insert mode completion to highlight the text that was added -(and may change when picking another completion). - Test more runtime files. Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029) diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index bcda3d00de..8993e3c666 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -41653,6 +41653,7 @@ Autocommands: ~ Highlighting: ~ +|hl-ComplMatchIns| matched text of the currently inserted completion. |hl-MsgArea| highlighting of the Command-line and messages area |hl-PmenuMatch| Popup menu: highlighting of matched text |hl-PmenuMatchSel| Popup menu: highlighting of matched text in selected diff --git a/src/Makefile b/src/Makefile index f3adaeca61..b677ebc3c3 100644 --- a/src/Makefile +++ b/src/Makefile @@ -359,7 +359,7 @@ CClink = $(CC) #CONF_OPT_GUI = --enable-gui=motif --with-motif-lib="-static -lXm -shared" # Uncomment this line to run an individual test with gvim. -#GUI_TESTARG = GUI_FLAG=-g +#GUI_TESTARG = GUI_FLAG=-g # DARWIN - detecting Mac OS X # Uncomment this line when you want to compile a Unix version of Vim on diff --git a/src/drawline.c b/src/drawline.c index b49e653133..ec9133103d 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -1139,6 +1139,7 @@ win_line( long vcol_prev = -1; // "wlv.vcol" of previous character char_u *line; // current line char_u *ptr; // current position in "line" + int in_curline = wp == curwin && lnum == curwin->w_cursor.lnum; #ifdef FEAT_PROP_POPUP char_u *p_extra_free2 = NULL; // another p_extra to be freed @@ -1172,6 +1173,7 @@ win_line( // highlighting int area_attr = 0; // attributes desired by highlighting int search_attr = 0; // attributes desired by 'hlsearch' + int ins_match_attr = 0; // attributes desired by PmenuMatch #ifdef FEAT_SYN_HL int vcol_save_attr = 0; // saved attr for 'cursorcolumn' int syntax_attr = 0; // attributes desired by syntax @@ -1415,8 +1417,7 @@ win_line( } // Check if the character under the cursor should not be inverted - if (!highlight_match && lnum == curwin->w_cursor.lnum - && wp == curwin + if (!highlight_match && in_curline #ifdef FEAT_GUI && !gui.in_use #endif @@ -3939,6 +3940,14 @@ win_line( if (wlv.draw_state == WL_LINE) vcol_prev = wlv.vcol; + if (wlv.draw_state == WL_LINE + && (State & MODE_INSERT) && in_curline && ins_compl_active()) + { + ins_match_attr = ins_compl_col_range_attr(wlv.col); + if (ins_match_attr > 0) + wlv.char_attr = hl_combine_attr(wlv.char_attr, ins_match_attr); + } + // Store character to be displayed. // Skip characters that are left of the screen for 'nowrap'. if (wlv.draw_state < WL_LINE || skip_cells <= 0) diff --git a/src/highlight.c b/src/highlight.c index 1a4c76d943..a4b2d48d22 100644 --- a/src/highlight.c +++ b/src/highlight.c @@ -262,6 +262,7 @@ static char *(highlight_init_both[]) = { "default link PmenuMatchSel PmenuSel", "default link PmenuExtra Pmenu", "default link PmenuExtraSel PmenuSel", + "default link ComplMatchIns Normal", CENT("Normal cterm=NONE", "Normal gui=NONE"), NULL }; diff --git a/src/insexpand.c b/src/insexpand.c index d3a6300a35..700ed5478f 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -173,6 +173,7 @@ static pos_T compl_startpos; static int compl_length = 0; static colnr_T compl_col = 0; // column where the text starts // that is being completed +static colnr_T compl_ins_end_col = 0; static string_T compl_orig_text = {NULL, 0}; // text as it was before // completion started static int compl_cont_mode = 0; @@ -198,6 +199,11 @@ static int compl_selected_item = -1; static int *compl_fuzzy_scores; +// "compl_match_array" points the currently displayed list of entries in the +// popup menu. It is NULL when there is no popup menu. +static pumitem_T *compl_match_array = NULL; +static int compl_match_arraysize; + static int ins_compl_add(char_u *str, int len, char_u *fname, char_u **cptext, typval_T *user_data, int cdir, int flags, int adup, int *user_hl); static void ins_compl_longest_match(compl_T *match); static void ins_compl_del_pum(void); @@ -897,6 +903,32 @@ ins_compl_equal(compl_T *match, char_u *str, int len) return STRNCMP(match->cp_str.string, str, (size_t)len) == 0; } +/* + * when len is -1 mean use whole length of p otherwise part of p + */ + static void +ins_compl_insert_bytes(char_u *p, int len) +{ + if (len == -1) + len = (int)STRLEN(p); + ins_bytes_len(p, len); + compl_ins_end_col = curwin->w_cursor.col - 1; +} + +/* + * Checks if the column is within the currently inserted completion text + * column range. If it is, it returns a special highlight attribute. + * -1 mean normal item. + */ + int +ins_compl_col_range_attr(int col) +{ + if (col >= compl_col && col < compl_ins_end_col) + return syn_name2attr((char_u *)"ComplMatchIns"); + + return -1; +} + /* * Reduce the longest common string for match "match". */ @@ -917,7 +949,7 @@ ins_compl_longest_match(compl_T *match) compl_leader.length = match->cp_str.length; had_match = (curwin->w_cursor.col > compl_col); ins_compl_delete(); - ins_bytes(compl_leader.string + get_compl_len()); + ins_compl_insert_bytes(compl_leader.string + get_compl_len(), -1); ins_redraw(FALSE); // When the match isn't there (to avoid matching itself) remove it @@ -967,7 +999,7 @@ ins_compl_longest_match(compl_T *match) had_match = (curwin->w_cursor.col > compl_col); ins_compl_delete(); - ins_bytes(compl_leader.string + get_compl_len()); + ins_compl_insert_bytes(compl_leader.string + get_compl_len(), -1); ins_redraw(FALSE); // When the match isn't there (to avoid matching itself) remove it @@ -1060,12 +1092,6 @@ get_cot_flags(void) return curbuf->b_cot_flags != 0 ? curbuf->b_cot_flags : cot_flags; } - -// "compl_match_array" points the currently displayed list of entries in the -// popup menu. It is NULL when there is no popup menu. -static pumitem_T *compl_match_array = NULL; -static int compl_match_arraysize; - /* * Update the screen and when there is any scrolling remove the popup menu. */ @@ -1817,6 +1843,7 @@ ins_compl_clear(void) compl_cont_status = 0; compl_started = FALSE; compl_matches = 0; + compl_ins_end_col = 0; VIM_CLEAR_STRING(compl_pattern); VIM_CLEAR_STRING(compl_leader); edit_submode_extra = NULL; @@ -1965,7 +1992,7 @@ ins_compl_new_leader(void) { ins_compl_del_pum(); ins_compl_delete(); - ins_bytes(compl_leader.string + get_compl_len()); + ins_compl_insert_bytes(compl_leader.string + get_compl_len(), -1); compl_used_match = FALSE; if (compl_started) @@ -2410,7 +2437,7 @@ ins_compl_stop(int c, int prev_mode, int retval) int compl_len = get_compl_len(); if ((int)plen > compl_len) - ins_bytes_len(p + compl_len, (int)(plen - compl_len)); + ins_compl_insert_bytes(p + compl_len, (int)(plen - compl_len)); } retval = TRUE; } @@ -4260,7 +4287,7 @@ ins_compl_insert(int in_compl_func) // Make sure we don't go over the end of the string, this can happen with // illegal bytes. if (compl_len < (int)compl_shown_match->cp_str.length) - ins_bytes(compl_shown_match->cp_str.string + compl_len); + ins_compl_insert_bytes(compl_shown_match->cp_str.string + compl_len, -1); if (match_at_original_text(compl_shown_match)) compl_used_match = FALSE; else @@ -4537,7 +4564,7 @@ ins_compl_next( // Insert the text of the new completion, or the compl_leader. if (compl_no_insert && !started) { - ins_bytes(compl_orig_text.string + get_compl_len()); + ins_compl_insert_bytes(compl_orig_text.string + get_compl_len(), -1); compl_used_match = FALSE; } else if (insert_match) @@ -4545,7 +4572,7 @@ ins_compl_next( if (!compl_get_longest || compl_used_match) ins_compl_insert(in_compl_func); else - ins_bytes(compl_leader.string + get_compl_len()); + ins_compl_insert_bytes(compl_leader.string + get_compl_len(), -1); } else compl_used_match = FALSE; diff --git a/src/proto/insexpand.pro b/src/proto/insexpand.pro index 4feab85854..2e769b89f8 100644 --- a/src/proto/insexpand.pro +++ b/src/proto/insexpand.pro @@ -60,5 +60,6 @@ void ins_compl_delete(void); void ins_compl_insert(int in_compl_func); void ins_compl_check_keys(int frequency, int in_compl_func); int ins_complete(int c, int enable_pum); +int ins_compl_col_range_attr(int col); void free_insexpand_stuff(void); /* vim: set ft=c : */ diff --git a/src/testdir/dumps/Test_pum_matchins_01.dump b/src/testdir/dumps/Test_pum_matchins_01.dump new file mode 100644 index 0000000000..efaa1eb0cf --- /dev/null +++ b/src/testdir/dumps/Test_pum_matchins_01.dump @@ -0,0 +1,20 @@ +|f+0#ff404010#ffffff0|o@1> +0#0000000&@71 +|f+0#0000001#e0e0e08|o@1| @11| +0#4040ff13#ffffff0@59 +|b+0#0000001#ffd7ff255|a|r| @11| +0#4040ff13#ffffff0@59 +|ä½ *0#0000001#ffd7ff255|好| +&@10| +0#4040ff13#ffffff0@59 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |3| +0#0000000&@34 diff --git a/src/testdir/dumps/Test_pum_matchins_02.dump b/src/testdir/dumps/Test_pum_matchins_02.dump new file mode 100644 index 0000000000..a3d9be31ce --- /dev/null +++ b/src/testdir/dumps/Test_pum_matchins_02.dump @@ -0,0 +1,20 @@ +|b+0#ff404010#ffffff0|a|r> +0#0000000&@71 +|f+0#0000001#ffd7ff255|o@1| @11| +0#4040ff13#ffffff0@59 +|b+0#0000001#e0e0e08|a|r| @11| +0#4040ff13#ffffff0@59 +|ä½ *0#0000001#ffd7ff255|好| +&@10| +0#4040ff13#ffffff0@59 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |3| +0#0000000&@34 diff --git a/src/testdir/dumps/Test_pum_matchins_03.dump b/src/testdir/dumps/Test_pum_matchins_03.dump new file mode 100644 index 0000000000..d1686b7e00 --- /dev/null +++ b/src/testdir/dumps/Test_pum_matchins_03.dump @@ -0,0 +1,20 @@ +|ä½ *0#ff404010#ffffff0|好> +0#0000000&@70 +|f+0#0000001#ffd7ff255|o@1| @11| +0#4040ff13#ffffff0@59 +|b+0#0000001#ffd7ff255|a|r| @11| +0#4040ff13#ffffff0@59 +|ä½ *0#0000001#e0e0e08|好| +&@10| +0#4040ff13#ffffff0@59 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |3| |o|f| |3| +0#0000000&@34 diff --git a/src/testdir/dumps/Test_pum_matchins_04.dump b/src/testdir/dumps/Test_pum_matchins_04.dump new file mode 100644 index 0000000000..0a324ef170 --- /dev/null +++ b/src/testdir/dumps/Test_pum_matchins_04.dump @@ -0,0 +1,20 @@ +|f+0&#ffffff0|o@1> @71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|4| @10|A|l@1| diff --git a/src/testdir/dumps/Test_pum_matchins_05.dump b/src/testdir/dumps/Test_pum_matchins_05.dump new file mode 100644 index 0000000000..a799fcd756 --- /dev/null +++ b/src/testdir/dumps/Test_pum_matchins_05.dump @@ -0,0 +1,20 @@ +|f+0&#ffffff0|o@1| > @70 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|5| @10|A|l@1| diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim index 69228e1cfb..bd369574f1 100644 --- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -1712,4 +1712,49 @@ func Test_pum_keep_select() call StopVimInTerminal(buf) endfunc +func Test_pum_matchins_higlight() + CheckScreendump + let lines =<< trim END + func Omni_test(findstart, base) + if a:findstart + return col(".") + endif + return [#{word: "foo"}, #{word: "bar"}, #{word: "你好"}] + endfunc + set omnifunc=Omni_test + hi ComplMatchIns ctermfg=red + END + call writefile(lines, 'Xscript', 'D') + let buf = RunVimInTerminal('-S Xscript', {}) + + call TermWait(buf) + call term_sendkeys(buf, "S\\") + call VerifyScreenDump(buf, 'Test_pum_matchins_01', {}) + call term_sendkeys(buf, "\\") + + call TermWait(buf) + call term_sendkeys(buf, "S\\\") + call VerifyScreenDump(buf, 'Test_pum_matchins_02', {}) + call term_sendkeys(buf, "\\") + + call TermWait(buf) + call term_sendkeys(buf, "S\\\\") + call VerifyScreenDump(buf, 'Test_pum_matchins_03', {}) + call term_sendkeys(buf, "\\") + + " restore after accept + call TermWait(buf) + call term_sendkeys(buf, "S\\\") + call VerifyScreenDump(buf, 'Test_pum_matchins_04', {}) + call term_sendkeys(buf, "\\") + + " restore after cancel completion + call TermWait(buf) + call term_sendkeys(buf, "S\\\") + call VerifyScreenDump(buf, 'Test_pum_matchins_05', {}) + call term_sendkeys(buf, "\\") + + call StopVimInTerminal(buf) +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index a5db0d490c..eb37def787 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 936, /**/ 935, /**/ From 381ff7726efee9a0a7c2f79e01340fa972cafdfd Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Mon, 16 Dec 2024 22:28:28 +0100 Subject: [PATCH 122/244] patch 9.1.0937: test_undolist() is flaky Problem: test_undolist() is flaky Solution: allow to match one additional optional whitespace char Signed-off-by: Christian Brabandt --- src/testdir/test_undo.vim | 3 ++- src/version.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_undo.vim b/src/testdir/test_undo.vim index 75ee4a5db3..844ba77ea5 100644 --- a/src/testdir/test_undo.vim +++ b/src/testdir/test_undo.vim @@ -282,7 +282,8 @@ func Test_undolist() w Xundolist.txt defer delete('Xundolist.txt') let lastline = execute('undolist')->split("\n")[-1] - call assert_match("ago 1", lastline) + call assert_match('seconds\? ago \?1', lastline) + endif bw! endfunc diff --git a/src/version.c b/src/version.c index eb37def787..b52eaaedaf 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 937, /**/ 936, /**/ From bb955894734b287abfadd3a25786a42038d18d61 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Mon, 16 Dec 2024 22:49:15 +0100 Subject: [PATCH 123/244] patch 9.1.0938: exclusive selection not respected when re-selecting block mode Problem: exclusive selection not respected when re-selecting block mode (Matt Ellis) Solution: advance selection by another character when using selection=exclusive and visual block mode fixes: #16202 closes: #16219 Signed-off-by: Christian Brabandt --- src/normal.c | 2 ++ src/testdir/test_visual.vim | 46 +++++++++++++++++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 50 insertions(+) diff --git a/src/normal.c b/src/normal.c index 87e2cd4750..6cf2b9d2f3 100644 --- a/src/normal.c +++ b/src/normal.c @@ -5518,6 +5518,8 @@ nv_visual(cmdarg_T *cap) update_curswant_force(); curwin->w_curswant += resel_VIsual_vcol * cap->count0 - 1; curwin->w_cursor.lnum = lnum; + if (*p_sel == 'e') + ++curwin->w_curswant; coladvance(curwin->w_curswant); } else diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim index 3750ebf6b9..0be73ecc13 100644 --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -2714,4 +2714,50 @@ func Test_visual_block_cursor_insert_enter() bwipe! endfunc +func Test_visual_block_exclusive_selection() + new + set selection=exclusive + call setline(1, ['asöd asdf', 'asdf asdf', 'as€d asdf', 'asdf asdf']) + call cursor(1, 1) + exe ":norm! \eh3j~" + call assert_equal(['ASÖd asdf', 'ASDf asdf', 'AS€d asdf', 'ASDf asdf'], getline(1, '$')) + exe ":norm! 1v~" + call assert_equal(['asöd asdf', 'asdf asdf', 'as€d asdf', 'asdf asdf'], getline(1, '$')) + bwipe! + set selection&vim +endfunc + +func Test_visual_block_exclusive_selection_adjusted() + new + " Test that the end-position of the visual selection is adjusted for exclusive selection + set selection=exclusive + call setline(1, ['asöd asdf ', 'asdf asdf ', 'as€d asdf ', 'asdf asdf ']) + call cursor(1, 1) + " inclusive motion + exe ":norm! \e3jy" + call assert_equal([0, 4, 5, 0], getpos("'>")) + " exclusive motion + exe ":norm! \ta3jy" + call assert_equal([0, 4, 6, 0], getpos("'>")) + " another inclusive motion + exe ":norm! \g_3jy" + call assert_equal([0, 4, 10, 0], getpos("'>")) + + " Reset selection option to Vim default + set selection&vim + call cursor(1, 1) + + " inclusive motion + exe ":norm! \e3jy" + call assert_equal([0, 4, 4, 0], getpos("'>")) + " exclusive motion + exe ":norm! \ta3jy" + call assert_equal([0, 4, 5, 0], getpos("'>")) + " another inclusive motion + exe ":norm! \g_3jy" + call assert_equal([0, 4, 9, 0], getpos("'>")) + bwipe! + set selection&vim +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index b52eaaedaf..1bf116308c 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 938, /**/ 937, /**/ From 3353833f891cd4a79f57a0e88dc68543a05d11ce Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 17 Dec 2024 20:16:58 +0100 Subject: [PATCH 124/244] patch 9.1.0939: make installtutor fails Problem: make installtutor fails (Antonio Giovanni Colombo, after v9.1.0932) Solution: Fix Makefile rule Signed-off-by: Christian Brabandt --- src/Makefile | 3 ++- src/version.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index b677ebc3c3..f5d01cf082 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2473,7 +2473,8 @@ installgtutorbin: $(DEST_BIN) installtutor: $(DEST_RT) $(DEST_TUTOR) -$(INSTALL_DATA) $(TUTORSOURCE)/README* $(TUTORSOURCE)/tutor* $(DEST_TUTOR) - -$(INSTALL_DATA) $(TUTORSOURCE)/en/* $(DEST_TUTOR)/en/ $(DEST_TUTOR)/it/* $(DEST_TUTOR)/it/ + -$(INSTALL_DATA) $(TUTORSOURCE)/en/* $(DEST_TUTOR)/en/ + -$(INSTALL_DATA) $(TUTORSOURCE)/it/* $(DEST_TUTOR)/it/ -rm -f $(DEST_TUTOR)/*.info chmod $(HELPMOD) $(DEST_TUTOR)/* chmod $(DIRMOD) $(DEST_TUTOR)/en diff --git a/src/version.c b/src/version.c index 1bf116308c..bee9e95b85 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 939, /**/ 938, /**/ From 9c3330de283b6ffd9ce033b665585f18cf0b972a Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Tue, 17 Dec 2024 20:24:24 +0100 Subject: [PATCH 125/244] runtime(doc): fix some small errors Signed-off-by: Christian Brabandt --- runtime/doc/motion.txt | 6 +++--- runtime/doc/pi_tutor.txt | 4 ++-- runtime/doc/usr_01.txt | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index e5b8151d0e..510d800dc3 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 9.1. Last change: 2024 Dec 16 +*motion.txt* For Vim version 9.1. Last change: 2024 Dec 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -125,8 +125,8 @@ Note that when using ":" any motion becomes characterwise exclusive. *inclusive-motion-selection-exclusive* When 'selection' is "exclusive", |Visual| mode is active and an inclusive motion has been used, the cursor position will be adjusted by another -character to the right, so that visual selction includes the expected text and -can be acted upon. +character to the right, so that the visual selection includes the expected +text and can be acted upon. *forced-motion* FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE diff --git a/runtime/doc/pi_tutor.txt b/runtime/doc/pi_tutor.txt index f4f86e87bd..590d2e4b4b 100644 --- a/runtime/doc/pi_tutor.txt +++ b/runtime/doc/pi_tutor.txt @@ -1,4 +1,4 @@ -*pi_tutor.txt* For Vim version 9.1. Last change: 2024 Dec 16 +*pi_tutor.txt* For Vim version 9.1. Last change: 2024 Dec 17 INTERACTIVE TUTORIALS FOR VIM *vim-tutor-mode* @@ -30,7 +30,7 @@ by double-clicking them. language if possible (|v:lang|), e.g. to open the chapter 1 of the Italian tutor, use: > - :lang it_IT.utf-8 + :lang it_IT.UTF-8 :Tutor < ============================================================================= diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt index 70a3f9bcbb..556774e142 100644 --- a/runtime/doc/usr_01.txt +++ b/runtime/doc/usr_01.txt @@ -1,4 +1,4 @@ -*usr_01.txt* For Vim version 9.1. Last change: 2024 Dec 16 +*usr_01.txt* For Vim version 9.1. Last change: 2024 Dec 17 VIM USER MANUAL - by Bram Moolenaar @@ -117,8 +117,9 @@ On Unix, if Vim has been properly installed, you can start it from the shell: > vimtutor -On MS-Windows you can find it in the Program/Vim menu. Or execute -vimtutor.bat in the $VIMRUNTIME directory. +On MS-Windows you can find it in the "Program/Vim 9.1" menu. Or execute +vimtutor.bat from the installation directory (You can use `:echo $VIMRUNTIME` +from within Vim to find this directory). This will make a copy of chapter 1 tutor file, so that you can edit it without the risk of damaging the original. To continue with chapter 2, you can use From 6c3027744e71937b24829135ba072090d7d52bc3 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 17 Dec 2024 20:26:45 +0100 Subject: [PATCH 126/244] patch 9.1.0940: Wrong cursor shape with "gq" and 'indentexpr' executes :normal Problem: Wrong cursor shape with "gq" and 'indentexpr' executes :normal Solution: Update cursor and mouse shape after restoring old_State. (zeertzjq) closes: #16241 Signed-off-by: zeertzjq Signed-off-by: Christian Brabandt Solution: Update cursor and mouse shape after restoring old_State. --- src/testdir/test_indent.vim | 49 +++++++++++++++++++++++++++++++++++++ src/textformat.c | 11 +++++++++ src/version.c | 2 ++ 3 files changed, 62 insertions(+) diff --git a/src/testdir/test_indent.vim b/src/testdir/test_indent.vim index a7e9f425c9..0cead5fb19 100644 --- a/src/testdir/test_indent.vim +++ b/src/testdir/test_indent.vim @@ -1,5 +1,8 @@ " Test for various indent options +source shared.vim +source check.vim + func Test_preserveindent() new " Test for autoindent copying indent from the previous line @@ -300,4 +303,50 @@ func Test_indent_overflow_count2() close! endfunc +" Test that mouse shape is restored to Normal mode after using "gq" when +" 'indentexpr' executes :normal. +func Test_indent_norm_with_gq() + CheckFeature mouseshape + CheckCanRunGui + + let lines =<< trim END + func Indent() + exe "normal! \" + return 0 + endfunc + + setlocal indentexpr=Indent() + END + call writefile(lines, 'Xindentexpr.vim', 'D') + + let lines =<< trim END + vim9script + var mouse_shapes = [] + + setline(1, [repeat('a', 80), repeat('b', 80)]) + + feedkeys('ggVG') + timer_start(50, (_) => { + mouse_shapes += [getmouseshape()] + timer_start(50, (_) => { + feedkeys('gq') + timer_start(50, (_) => { + mouse_shapes += [getmouseshape()] + timer_start(50, (_) => { + writefile(mouse_shapes, 'Xmouseshapes') + quit! + }) + }) + }) + }) + END + call writefile(lines, 'Xmouseshape.vim', 'D') + + call RunVim([], [], "-g -S Xindentexpr.vim -S Xmouseshape.vim") + call WaitForAssert({-> assert_equal(['rightup-arrow', 'arrow'], + \ readfile('Xmouseshapes'))}, 300) + + call delete('Xmouseshapes') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/textformat.c b/src/textformat.c index d380899c8f..77e3eefafd 100644 --- a/src/textformat.c +++ b/src/textformat.c @@ -1163,13 +1163,24 @@ format_lines( State = MODE_INSERT; // for open_line() smd_save = p_smd; p_smd = FALSE; + insertchar(NUL, INSCHAR_FORMAT + (do_comments ? INSCHAR_DO_COM : 0) + (do_comments && do_comments_list ? INSCHAR_COM_LIST : 0) + (avoid_fex ? INSCHAR_NO_FEX : 0), second_indent); + State = old_State; p_smd = smd_save; + // Cursor and mouse shape shapes may have been updated (e.g. by + // :normal) in insertchar(), so they need to be updated here. +#ifdef CURSOR_SHAPE + ui_cursor_shape(); +#endif +#ifdef FEAT_MOUSESHAPE + update_mouseshape(-1); +#endif + second_indent = -1; // at end of par.: need to set indent of next par. need_set_indent = is_end_par; diff --git a/src/version.c b/src/version.c index bee9e95b85..6a5e976b00 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 940, /**/ 939, /**/ From 98874dca6d0b60ccd6fc3a140b3ec1cc3e560f95 Mon Sep 17 00:00:00 2001 From: Fredrik Date: Tue, 17 Dec 2024 20:31:37 +0100 Subject: [PATCH 127/244] translation(sv): Fix typo in Swedish translation - "kind file" not as opposed to unkind, but two separate columns - also regenerate sv.po fixes: #16237 closes: #16240 Signed-off-by: Fredrik Signed-off-by: Christian Brabandt --- src/po/sv.po | 16856 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 12591 insertions(+), 4265 deletions(-) diff --git a/src/po/sv.po b/src/po/sv.po index d5296dba9d..592517943a 100644 --- a/src/po/sv.po +++ b/src/po/sv.po @@ -5,543 +5,589 @@ msgid "" msgstr "" "Project-Id-Version: Vim 7.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-05-09 14:27+0200\n" +"POT-Creation-Date: 2024-12-17 20:32+0100\n" "PO-Revision-Date: 2007-05-09 14:52\n" "Last-Translator: Johan Svedberg \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -msgid "E82: Cannot allocate any buffer, exiting..." -msgstr "E82: Kan inte allokera någon buffert, avslutar..." - -msgid "E83: Cannot allocate buffer, using other one..." -msgstr "E83: Kan inte allokera buffert, använder en annan..." - -msgid "E515: No buffers were unloaded" -msgstr "E515: Inga buffertar blev urladdade" +#: ../alloc.c:94 ../alloc.c:109 +msgid "ERROR: " +msgstr "FEL: " -msgid "E516: No buffers were deleted" -msgstr "E516: Inga buffertar blev borttagna" +#: ../alloc.c:113 +#, c-format +msgid "" +"\n" +"[bytes] total alloc-freed %lu-%lu, in use %lu, peak use %lu\n" +msgstr "" +"\n" +"[byte] sammanlagd allok-frigjord %lu-%lu, i användning %lu, toppanvändning " +"%lu\n" -msgid "E517: No buffers were wiped out" -msgstr "E517: Inga buffertar blev utraderade" +#: ../alloc.c:115 +#, c-format +msgid "" +"[calls] total re/malloc()'s %lu, total free()'s %lu\n" +"\n" +msgstr "" +"[anrop] sammanlagda om/malloc()'s %lu, sammanlagda free()'s %lu\n" +"\n" -msgid "1 buffer unloaded" -msgstr "1 buffert laddades ur" +#: ../autocmd.c:300 +msgid "--Deleted--" +msgstr "--Borttagen--" +#: ../autocmd.c:510 #, c-format -msgid "%d buffers unloaded" -msgstr "%d buffertar laddades ur" +msgid "auto-removing autocommand: %s " +msgstr "tar bort autokommando automatiskt: %s " -msgid "1 buffer deleted" -msgstr "1 buffert borttagen" +#: ../autocmd.c:574 +msgid "W19: Deleting augroup that is still in use" +msgstr "" -#, c-format -msgid "%d buffers deleted" -msgstr "%d buffertar borttagna" +#. Highlight title +#: ../autocmd.c:1092 +msgid "" +"\n" +"--- Autocommands ---" +msgstr "" +"\n" +"--- Autokommandon ---" -msgid "1 buffer wiped out" -msgstr "1 buffert utraderad" +#: ../autocmd.c:1496 +#, fuzzy, c-format +msgid "No matching autocommands: %s" +msgstr "Inga matchande autokommandon" +#: ../autocmd.c:2637 #, c-format -msgid "%d buffers wiped out" -msgstr "%d buffertar utraderade" - -msgid "E84: No modified buffer found" -msgstr "E84: Ingen modifierad buffert hittad" +msgid "%s Autocommands for \"%s\"" +msgstr "%s Autokommandon för \"%s\"" -#. back where we started, didn't find anything. -msgid "E85: There is no listed buffer" -msgstr "E85: Det finns inga listade buffertar" +#: ../autocmd.c:2645 +#, c-format +msgid "Executing %s" +msgstr "Kör %s" +#: ../autocmd.c:2730 #, c-format -msgid "E86: Buffer %ld does not exist" -msgstr "E86: Buffert %ld existerar inte" +msgid "autocommand %s" +msgstr "autokommando %s" -msgid "E87: Cannot go beyond last buffer" -msgstr "E87: Kan inte gå bortom sista buffert" +#: ../blob.c:501 ../list.c:2674 +#, fuzzy +msgid "add() argument" +msgstr "-c argument" -msgid "E88: Cannot go before first buffer" -msgstr "E88: Kan inte gå före första buffert" +#: ../blob.c:694 ../list.c:2922 +#, fuzzy +msgid "insert() argument" +msgstr "-c argument" -#, c-format -msgid "E89: No write since last change for buffer %ld (add ! to override)" -msgstr "" -"E89: Ingen skrivning sedan senaste ändring för buffert %ld (lägg till ! för " -"att tvinga)" +#: ../buffer.c:65 +msgid "[Location List]" +msgstr "[Positionslista]" -msgid "E90: Cannot unload last buffer" -msgstr "E90: Kan inte ladda ur senaste buffert" +#: ../buffer.c:66 +msgid "[Quickfix List]" +msgstr "[Quickfix-lista]" +#: ../buffer.c:1797 +#, fuzzy, c-format +msgid "%d buffer unloaded" +msgid_plural "%d buffers unloaded" +msgstr[0] "%d buffertar laddades ur" +msgstr[1] "%d buffertar laddades ur" + +#: ../buffer.c:1800 +#, fuzzy, c-format +msgid "%d buffer deleted" +msgid_plural "%d buffers deleted" +msgstr[0] "%d buffertar borttagna" +msgstr[1] "%d buffertar borttagna" + +#: ../buffer.c:1803 +#, fuzzy, c-format +msgid "%d buffer wiped out" +msgid_plural "%d buffers wiped out" +msgstr[0] "%d buffertar utraderade" +msgstr[1] "%d buffertar utraderade" + +#: ../buffer.c:2311 msgid "W14: Warning: List of file names overflow" msgstr "W14: Varning: Lista över filnamn flödar över" -#, c-format -msgid "E92: Buffer %ld not found" -msgstr "E92: Buffer %ld hittades inte" - -#, c-format -msgid "E93: More than one match for %s" -msgstr "E93: Fler än en träff för %s" - -#, c-format -msgid "E94: No matching buffer for %s" -msgstr "E94: Ingen matchande buffert för %s" - +#: ../buffer.c:3462 #, c-format msgid "line %ld" msgstr "rad %ld" -msgid "E95: Buffer with this name already exists" -msgstr "E95: Buffer med det här namnet existerar redan" - +#: ../buffer.c:3881 msgid " [Modified]" msgstr " [Modifierad]" +#: ../buffer.c:3883 msgid "[Not edited]" msgstr "[Inte redigerad]" -msgid "[New file]" -msgstr "[Ny fil]" - +#: ../buffer.c:3886 msgid "[Read errors]" msgstr "[Läsfel]" +#: ../buffer.c:3887 ../buffer.c:4882 ../drawscreen.c:499 ../fileio.c:2508 +#: ../netbeans.c:3422 +msgid "[RO]" +msgstr "[EL]" + +#: ../buffer.c:3888 ../fileio.c:2508 ../netbeans.c:3422 msgid "[readonly]" msgstr "[skrivskyddad]" -#, c-format -msgid "1 line --%d%%--" -msgstr "1 rad --%d%%--" - -#, c-format -msgid "%ld lines --%d%%--" -msgstr "%ld rader --%d%%--" +#: ../buffer.c:3905 +#, fuzzy, c-format +msgid "%ld line --%d%%--" +msgid_plural "%ld lines --%d%%--" +msgstr[0] "%ld rader --%d%%--" +msgstr[1] "%ld rader --%d%%--" +#: ../buffer.c:3911 #, c-format msgid "line %ld of %ld --%d%%-- col " msgstr "rad %ld av %ld --%d%%-- kol " +#: ../buffer.c:4020 ../buffer.c:6004 ../memline.c:2274 msgid "[No Name]" msgstr "[Inget Namn]" #. must be a help buffer +#: ../buffer.c:4073 msgid "help" msgstr "hjälp" +#: ../buffer.c:4890 ../drawscreen.c:482 msgid "[Help]" msgstr "[Hjälp]" +#: ../buffer.c:4922 ../drawscreen.c:488 msgid "[Preview]" msgstr "[Förhandsvisning]" +#: ../buffer.c:5295 msgid "All" msgstr "Alla" +#: ../buffer.c:5295 msgid "Bot" msgstr "Bott" +#: ../buffer.c:5298 msgid "Top" msgstr "Topp" +#. localized percentage value +#: ../buffer.c:5315 #, c-format -msgid "" -"\n" -"# Buffer list:\n" +msgid "%d%%" msgstr "" -"\n" -"# Buffertlista:\n" - -msgid "[Location List]" -msgstr "[Positionslista]" -msgid "[Quickfix List]" -msgstr "[Quickfix-lista]" +#: ../buffer.c:5336 +#, fuzzy, c-format +msgid " (%d of %d)" +msgstr "(%d av %d)%s%s: " -msgid "" -"\n" -"--- Signs ---" -msgstr "" -"\n" -"--- Tecken ---" +#: ../buffer.c:5337 +#, fuzzy, c-format +msgid " ((%d) of %d)" +msgstr "(%d av %d)%s%s: " -#, c-format -msgid "Signs for %s:" -msgstr "Tecken för %s:" +#: ../buffer.c:5338 +#, fuzzy, c-format +msgid " (file %d of %d)" +msgstr " Kopia %d av %d" -#, c-format -msgid " line=%ld id=%d name=%s" -msgstr " line=%ld id=%d namn=%s" +#: ../buffer.c:5339 +#, fuzzy, c-format +msgid " (file (%d) of %d)" +msgstr " Kopia %d av %d" -#, c-format -msgid "E96: Can not diff more than %ld buffers" -msgstr "E96: Kan inte skilja fler än %ld buffertar" +#: ../buffer.c:5980 +#, fuzzy +msgid "[Command Line]" +msgstr "Kommandorad" -msgid "E97: Cannot create diffs" -msgstr "E97: Kan inte skapa skiljare" +#: ../buffer.c:5983 +msgid "[Prompt]" +msgstr "" -msgid "Patch file" -msgstr "Patchfil" +#: ../buffer.c:5987 +msgid "[Popup]" +msgstr "" -msgid "E98: Cannot read diff output" -msgstr "E98: Kan inte läsa skiljeutdata" +#: ../buffer.c:5989 +msgid "[Scratch]" +msgstr "" -msgid "E99: Current buffer is not in diff mode" -msgstr "E99: Aktuell buffert är inte i skiljeläge" +#. don't overwrite messages here +#. must give this prompt +#. don't use emsg() here, don't want to flush the buffers +#: ../bufwrite.c:535 +msgid "WARNING: The file has been changed since reading it!!!" +msgstr "VARNING: Filen har ändrats sedan den lästes in!!!" -msgid "E793: No other buffer in diff mode is modifiable" -msgstr "E793: Ingen annan buffert i skiljeläge är ändringsbar" +#: ../bufwrite.c:537 +msgid "Do you really want to write to it" +msgstr "Vill du verkligen skriva till den" -msgid "E100: No other buffer in diff mode" -msgstr "E100: Ingen annan buffert i skiljeläge" +#: ../bufwrite.c:607 +msgid "[New]" +msgstr "[Ny]" -msgid "E101: More than two buffers in diff mode, don't know which one to use" -msgstr "" -"E101: Fler än två buffertar i skiljeläge, vet inte vilken som ska användas" +#: ../bufwrite.c:607 +msgid "[New File]" +msgstr "[Ny fil]" -#, c-format -msgid "E102: Can't find buffer \"%s\"" -msgstr "E102: Kan inte hitta buffert \"%s\"" +#: ../bufwrite.c:2389 +msgid " CONVERSION ERROR" +msgstr " KONVERTERINGSFEL" -#, c-format -msgid "E103: Buffer \"%s\" is not in diff mode" -msgstr "E103: Buffert \"%s\" är inte i skiljeläge" +#: ../bufwrite.c:2392 +#, fuzzy, c-format +msgid " in line %ld;" +msgstr "rad %ld" -msgid "E787: Buffer changed unexpectedly" -msgstr "E787: Buffert ändrades oväntat" +#: ../bufwrite.c:2397 ../fileio.c:2528 +msgid "[NOT converted]" +msgstr "[INTE konverterad]" -msgid "E104: Escape not allowed in digraph" -msgstr "E104: Escape inte tillåtet i digraf" +#: ../bufwrite.c:2402 ../fileio.c:2533 +msgid "[converted]" +msgstr "[konverterad]" -msgid "E544: Keymap file not found" -msgstr "E544: Keymap-fil hittades inte" +#: ../bufwrite.c:2407 +msgid "[Device]" +msgstr "[Enhet]" -msgid "E105: Using :loadkeymap not in a sourced file" -msgstr "E105: Användning av :loadkeymap utanför en körd fil" +#: ../bufwrite.c:2434 +msgid " [a]" +msgstr " [l]" -msgid "E791: Empty keymap entry" -msgstr "E791: Tomt tangentbords-post" +#: ../bufwrite.c:2434 +msgid " appended" +msgstr " lade till" -msgid " Keyword completion (^N^P)" -msgstr " Nyckelordskomplettering (^N^P)" +#: ../bufwrite.c:2436 +msgid " [w]" +msgstr " [s]" -#. ctrl_x_mode == 0, ^P/^N compl. -msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" -msgstr " ^X-läge (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" +#: ../bufwrite.c:2436 +msgid " written" +msgstr " skriven" -msgid " Whole line completion (^L^N^P)" -msgstr " Helradskomplettering (^L^N^P)" +#: ../bufwrite.c:2574 +msgid "" +"\n" +"WARNING: Original file may be lost or damaged\n" +msgstr "" +"\n" +"VARNING: Orginalfilen kan vara förlorad eller skadad\n" -msgid " File name completion (^F^N^P)" -msgstr " Filnamnskomplettering (^F^N^P)" +#: ../bufwrite.c:2576 +msgid "don't quit the editor until the file is successfully written!" +msgstr "avsluta inte redigeraren innan filen är framgångsrikt skriven" -msgid " Tag completion (^]^N^P)" -msgstr " Taggkomplettering (^]^N^P)" +#: ../change.c:29 +msgid "W10: Warning: Changing a readonly file" +msgstr "W10: Varning: Ändrar en skrivskyddad fil" -msgid " Path pattern completion (^N^P)" -msgstr " Sökvägsmönsterkomplettering (^N^P)" +#: ../clientserver.c:390 +msgid "No display" +msgstr "Ingen display" -msgid " Definition completion (^D^N^P)" -msgstr " Definitionskomplettering (^D^N^P)" +#. Failed to send, abort. +#: ../clientserver.c:405 +msgid ": Send failed.\n" +msgstr ": Överföring misslyckades.\n" -msgid " Dictionary completion (^K^N^P)" -msgstr " Ordbokskomplettering (^K^N^P)" +#. Let vim start normally. +#: ../clientserver.c:411 +msgid ": Send failed. Trying to execute locally\n" +msgstr ": Överföring misslyckades. Försöker att köra lokalt\n" -msgid " Thesaurus completion (^T^N^P)" -msgstr " Tesaurkomplettering (^T^N^P)" +#: ../clientserver.c:447 ../clientserver.c:471 +#, c-format +msgid "%d of %d edited" +msgstr "%d av %d redigerade" -msgid " Command-line completion (^V^N^P)" -msgstr " Kommandoradskomplettering (^V^N^P)" +#: ../clientserver.c:494 +msgid "No display: Send expression failed.\n" +msgstr "Ingen display: Överföringsuttryck misslyckades.\n" -msgid " User defined completion (^U^N^P)" -msgstr " Användardefinierad komplettering (^U^N^P)" +#: ../clientserver.c:505 +msgid ": Send expression failed.\n" +msgstr ": Överföringsuttryck misslyckades.\n" -msgid " Omni completion (^O^N^P)" -msgstr " Omnikomplettering (^O^N^P)" +#: ../clipboard.c:1883 +msgid "Used CUT_BUFFER0 instead of empty selection" +msgstr "Använd CUT_BUFFER0 istället för tomt val" -msgid " Spelling suggestion (^S^N^P)" -msgstr " Stavningsförslag (^S^N^P)" +#: ../cmdexpand.c:1300 +msgid "tagname" +msgstr "taggnamn" -msgid " Keyword Local completion (^N^P)" -msgstr " Lokal nyckelordskomplettering (^N^P)" +#: ../cmdexpand.c:1303 +msgid " kind file\n" +msgstr " typ fil\n" -msgid "Hit end of paragraph" -msgstr "Stötte på slutet på stycket" +#: ../cmdhist.c:732 +msgid "'history' option is zero" +msgstr "'history'-flagga är noll" -msgid "'dictionary' option is empty" -msgstr "'dictionary'-flagga är tom" +#: ../crypt.c:802 +msgid "Warning: Using a weak encryption method; see :help 'cm'" +msgstr "" -msgid "'thesaurus' option is empty" -msgstr "'thesaurus'-flagga är tom" +#: ../crypt.c:822 +msgid "Note: Encryption of swapfile not supported, disabling swap file" +msgstr "" -#, c-format -msgid "Scanning dictionary: %s" -msgstr "Söker igenom ordbok: %s" +#: ../crypt.c:853 +msgid "Enter encryption key: " +msgstr "Ange krypteringsnyckel: " -msgid " (insert) Scroll (^E/^Y)" -msgstr " (infoga) Rulla (^E/^Y)" - -msgid " (replace) Scroll (^E/^Y)" -msgstr " (ersätt) Rulla (^E/^Y)" - -#, c-format -msgid "Scanning: %s" -msgstr "Söker igenom: %s" - -#, c-format -msgid "Scanning tags." -msgstr "Söker igenom taggar." - -msgid " Adding" -msgstr " Lägger till" - -#. showmode might reset the internal line pointers, so it must -#. * be called before line = ml_get(), or when this address is no -#. * longer needed. -- Acevedo. -#. -msgid "-- Searching..." -msgstr "-- Söker..." - -msgid "Back at original" -msgstr "Tillbaka på orginalet" +#: ../crypt.c:854 +msgid "Enter same key again: " +msgstr "Ange samma nyckel igen: " -msgid "Word from other line" -msgstr "Ord från annan rad" +#: ../crypt.c:865 +msgid "Keys don't match!" +msgstr "Nycklar matchar inte!" -msgid "The only match" -msgstr "Den enda träffen" +#: ../crypt.c:907 +msgid "[crypted]" +msgstr "[krypterad]" +#: ../crypt.c:1331 #, c-format -msgid "match %d of %d" -msgstr "träff %d av %d" +msgid "xchacha20v2: using custom opslimit \"%llu\" for Key derivation." +msgstr "" +#: ../crypt.c:1333 #, c-format -msgid "match %d" -msgstr "träff %d" - -msgid "E18: Unexpected characters in :let" -msgstr "E18: Oväntade tecken i :let" +msgid "xchacha20v2: using default opslimit \"%llu\" for Key derivation." +msgstr "" +#: ../crypt.c:1335 #, c-format -# TODO: Capitalise first word of message? -msgid "E684: List index out of range: %ld" -msgstr "E684: listindex utanför område: %ld" +msgid "xchacha20v2: using custom memlimit \"%lu\" for Key derivation." +msgstr "" +#: ../crypt.c:1337 #, c-format -msgid "E121: Undefined variable: %s" -msgstr "E121: Odefinierad variabel: %s" - -msgid "E111: Missing ']'" -msgstr "E111: Saknar ']'" +msgid "xchacha20v2: using default memlimit \"%lu\" for Key derivation." +msgstr "" +#: ../crypt.c:1339 #, c-format -msgid "E686: Argument of %s must be a List" -msgstr "E686: Argument av %s måste vara en List" +msgid "xchacha20v2: using custom algorithm \"%d\" for Key derivation." +msgstr "" +#: ../crypt.c:1341 #, c-format -msgid "E712: Argument of %s must be a List or Dictionary" -msgstr "E712: Argument av %s måste vara en Lista eller Tabell" - -msgid "E713: Cannot use empty key for Dictionary" -msgstr "E713: Kan inte använda tom nyckel för Tabell" +msgid "xchacha20v2: using default algorithm \"%d\" for Key derivation." +msgstr "" -msgid "E714: List required" -msgstr "E714: Lista krävs" +#: ../debugger.c:96 +msgid "Entering Debug mode. Type \"cont\" to continue." +msgstr "Går in i felsökningsläge. Skriv \"cont\" för att fortsätta." -msgid "E715: Dictionary required" -msgstr "E715: Tabell krävs" +#: ../debugger.c:99 +#, fuzzy, c-format +msgid "Oldval = \"%s\"" +msgstr "dlfel = \"%s\"" +#: ../debugger.c:104 #, c-format -msgid "E118: Too many arguments for function: %s" -msgstr "E118: För många argument till funktion: %s" +msgid "Newval = \"%s\"" +msgstr "" +#: ../debugger.c:112 ../debugger.c:398 ../ex_docmd.c:613 #, c-format -msgid "E716: Key not present in Dictionary: %s" -msgstr "E716: Tangent finns inte i Tabell: %s" +msgid "line %ld: %s" +msgstr "rad %ld: %s" +#: ../debugger.c:114 ../debugger.c:400 #, c-format -msgid "E122: Function %s already exists, add ! to replace it" -msgstr "E122: Funktionen %s existerar redan, lägg till ! för att ersätta den" - -msgid "E717: Dictionary entry already exists" -msgstr "E717: Tabell-post existerar redan" - -msgid "E718: Funcref required" -msgstr "E718: Funcref krävs" - -msgid "E719: Cannot use [:] with a Dictionary" -msgstr "E719: Kan inte använda [:] med en Tabell" +msgid "cmd: %s" +msgstr "kommando: %s" -#, c-format -msgid "E734: Wrong variable type for %s=" -msgstr "E734: Fel variabeltyp för %s=" +#: ../debugger.c:349 +#, fuzzy +msgid "frame is zero" +msgstr "E726: Kliv är noll" +#: ../debugger.c:359 #, c-format -msgid "E130: Unknown function: %s" -msgstr "E130: Okänd funktion: %s" +msgid "frame at highest level: %d" +msgstr "" +#: ../debugger.c:453 #, c-format -msgid "E461: Illegal variable name: %s" -msgstr "E461: Otillåtet variabelnamn: %s" - -msgid "E687: Less targets than List items" -msgstr "E687: Färre mål än List-poster" - -msgid "E688: More targets than List items" -msgstr "E688: Fler mål än List-poster" +msgid "Breakpoint in \"%s%s\" line %ld" +msgstr "Brytpunkt i \"%s%s\" rad %ld" -msgid "Double ; in list of variables" -msgstr "Double ; i listan med variabler" +#: ../debugger.c:898 +msgid "No breakpoints defined" +msgstr "Inga brytpunkter definierade" +#: ../debugger.c:908 #, c-format -msgid "E738: Can't list variables for %s" -msgstr "E738: Kan inte lista variabler för %s" - -msgid "E689: Can only index a List or Dictionary" -msgstr "E689: Kan bara indexera en Lista eller Tabell" - -msgid "E708: [:] must come last" -msgstr "E708: [:] måste komma sist" - -msgid "E709: [:] requires a List value" -msgstr "E709: [:] kräver ett List-värde" - -msgid "E710: List value has more items than target" -msgstr "E710: List-värde har mer föremål än mål" - -msgid "E711: List value has not enough items" -msgstr "E711: List-värde har inte tillräckligt med föremål" - -msgid "E690: Missing \"in\" after :for" -msgstr "E690: Saknar \"in\" efter :for" +msgid "%3d %s %s line %ld" +msgstr "%3d %s %s rad %ld" +#: ../debugger.c:914 #, c-format -msgid "E107: Missing parentheses: %s" -msgstr "E107: Saknar hakparantes: %s" +msgid "%3d expr %s" +msgstr "" + +#: ../dict.c:1134 ../list.c:2890 +#, fuzzy +msgid "extend() argument" +msgstr "--cmd argument" +#: ../diff.c:783 #, c-format -msgid "E108: No such variable: \"%s\"" -msgstr "E108: Ingen sådan variabel: \"%s\"" +msgid "Not enough memory to use internal diff for buffer \"%s\"" +msgstr "" -# TODO: Capitalise first word of message? -msgid "E743: Variable nested too deep for (un)lock" -msgstr "E743: variabel nästlade för djupt för (un)lock" +#: ../diff.c:1262 +msgid "Patch file" +msgstr "Patchfil" -msgid "E109: Missing ':' after '?'" -msgstr "E109: Saknar ':' efter '?'" +#: ../digraph.c:1803 +msgid "Custom" +msgstr "" -msgid "E691: Can only compare List with List" -msgstr "E691: Kan bara jämföra Lista med Lista" +#: ../digraph.c:1911 +msgid "Latin supplement" +msgstr "" -msgid "E692: Invalid operation for List" -msgstr "E692: Ogiltig operation för Lista" +#: ../digraph.c:1912 +msgid "Greek and Coptic" +msgstr "" -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: Kan bara jämföra Tabell med Tabell" +#: ../digraph.c:1913 +msgid "Cyrillic" +msgstr "" -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: Ogiltig operation för Tabell" +#: ../digraph.c:1914 +#, fuzzy +msgid "Hebrew" +msgstr " Hebreiska" -msgid "E693: Can only compare Funcref with Funcref" -msgstr "E693: Kan bara jämföra Funcref med Funcref" +#: ../digraph.c:1915 +#, fuzzy +msgid "Arabic" +msgstr " Arabiska" -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: Ogiltig operation för Funcrefs" +#: ../digraph.c:1916 +msgid "Latin extended" +msgstr "" -msgid "E110: Missing ')'" -msgstr "E110: Saknar ')'" +#: ../digraph.c:1917 +msgid "Greek extended" +msgstr "" -msgid "E695: Cannot index a Funcref" -msgstr "E695: Kan inte indexera en Funcref" +#: ../digraph.c:1918 +msgid "Punctuation" +msgstr "" -#, c-format -msgid "E112: Option name missing: %s" -msgstr "E112: Flaggnamn saknas: %s" +#: ../digraph.c:1919 +msgid "Super- and subscripts" +msgstr "" -#, c-format -msgid "E113: Unknown option: %s" -msgstr "E113: Okänd flagga: %s" +#: ../digraph.c:1920 +msgid "Currency" +msgstr "" -#, c-format -msgid "E114: Missing quote: %s" -msgstr "E114: Saknar citattecken: %s" +#: ../digraph.c:1921 ../digraph.c:1926 ../digraph.c:1936 +msgid "Other" +msgstr "" -#, c-format -msgid "E115: Missing quote: %s" -msgstr "E115: Saknar citattecken: %s" +#: ../digraph.c:1922 +msgid "Roman numbers" +msgstr "" -#, c-format -msgid "E696: Missing comma in List: %s" -msgstr "E696: Saknar komma i Lista: %s" +#: ../digraph.c:1923 +msgid "Arrows" +msgstr "" -#, c-format -msgid "E697: Missing end of List ']': %s" -msgstr "E697: Saknar slut på Lista ']': %s" +#: ../digraph.c:1924 +msgid "Mathematical operators" +msgstr "" -#, c-format -msgid "E720: Missing colon in Dictionary: %s" -msgstr "E720: Saknar kolon i Tabell: %s" +#: ../digraph.c:1925 +msgid "Technical" +msgstr "" -#, c-format -msgid "E721: Duplicate key in Dictionary: \"%s\"" -msgstr "E721: Duplicerad nyckel i Tabell: \"%s\"" +#: ../digraph.c:1927 +msgid "Box drawing" +msgstr "" -#, c-format -msgid "E722: Missing comma in Dictionary: %s" -msgstr "E722: Saknar komma i Tabell: %s" +#: ../digraph.c:1928 +msgid "Block elements" +msgstr "" -#, c-format -msgid "E723: Missing end of Dictionary '}': %s" -msgstr "E723: Saknar slut på Tabell '}': %s" +#: ../digraph.c:1929 +msgid "Geometric shapes" +msgstr "" -# TODO: Capitalise first word of message? -msgid "E724: Variable nested too deep for displaying" -msgstr "E724: variabel nästlad för djupt för att visas" +#: ../digraph.c:1930 +msgid "Symbols" +msgstr "" -#, c-format -msgid "E117: Unknown function: %s" -msgstr "E117: Okänd funktion: %s" +#: ../digraph.c:1931 +msgid "Dingbats" +msgstr "" -#, c-format -msgid "E119: Not enough arguments for function: %s" -msgstr "E119: För få argument till funktion: %s" +#: ../digraph.c:1932 +msgid "CJK symbols and punctuation" +msgstr "" -#, c-format -msgid "E120: Using not in a script context: %s" -msgstr "E120: Använder inte i ett skriptsammanhang: %s" +#: ../digraph.c:1933 +msgid "Hiragana" +msgstr "" -#, c-format -msgid "E725: Calling dict function without Dictionary: %s" -msgstr "E725: Anropar tabell-funktion utan Tabell: %s" +#: ../digraph.c:1934 +msgid "Katakana" +msgstr "" -msgid "E699: Too many arguments" -msgstr "E699: För många argument" +#: ../digraph.c:1935 +msgid "Bopomofo" +msgstr "" -msgid "E785: complete() can only be used in Insert mode" -msgstr "E785: complete() kan bara användas i infogningsläge" +#: ../eval.c:7606 +msgid "" +"\n" +"\tLast set from " +msgstr "" +"\n" +"\tSenast satt från " #. #. * Yes this is ugly, I don't particularly like it either. But doing it #. * this way has the compelling advantage that translations need not to #. * be touched at all. See below what 'ok' and 'ync' are used for. #. +#: ../evalfunc.c:3817 ../gui.c:5046 ../gui_gtk.c:1670 ../os_mswin.c:635 msgid "&Ok" msgstr "&Ok" -#, c-format -msgid "E737: Key already exists: %s" -msgstr "E737: Tangenten finns redan: %s" - -#, c-format -msgid "+-%s%3ld lines: " -msgstr "+-%s%3ld rader: " - -#, c-format -msgid "E700: Unknown function: %s" -msgstr "E700: Okänd funktion: %s" - +#: ../evalfunc.c:7925 msgid "" "&OK\n" "&Cancel" @@ -549,5647 +595,13927 @@ msgstr "" "&OK\n" "&Avbryt" +#: ../evalfunc.c:8009 msgid "called inputrestore() more often than inputsave()" msgstr "anropade inputrestore() oftare än inputsave()" -msgid "E786: Range not allowed" -msgstr "E786: Område otillåtet" +#: ../ex_cmds.c:78 +#, fuzzy, c-format +msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s" +msgstr "<%s>%s%s %d, Hex %02x, Oktalt %03o" -msgid "E701: Invalid type for len()" -msgstr "E701: Ogiltig typ för len()" +#: ../ex_cmds.c:83 +#, c-format +msgid "<%s>%s%s %d, Hex %02x, Octal %03o" +msgstr "<%s>%s%s %d, Hex %02x, Oktalt %03o" -msgid "E726: Stride is zero" -msgstr "E726: Kliv är noll" +#: ../ex_cmds.c:110 +#, fuzzy, c-format +msgid "> %d, Hex %04x, Oct %o, Digr %s" +msgstr "> %d, Hex %04x, Oktalt %o" -msgid "E727: Start past end" -msgstr "E727: Start efter slut" - -msgid "" -msgstr "" - -msgid "E240: No connection to Vim server" -msgstr "E240: Ingen anslutning till Vim-server" +#: ../ex_cmds.c:111 +#, fuzzy, c-format +msgid "> %d, Hex %08x, Oct %o, Digr %s" +msgstr "> %d, Hex %08x, Oktalt %o" +#: ../ex_cmds.c:116 #, c-format -msgid "E241: Unable to send to %s" -msgstr "E241: Kunde inte sända till %s" - -msgid "E277: Unable to read a server reply" -msgstr "E277: Kunde inte läsa ett serversvar" - -msgid "E655: Too many symbolic links (cycle?)" -msgstr "E655: För många symboliska länkar (slinga?)" - -msgid "E258: Unable to send to client" -msgstr "E258: Kunde inte sända till klient" - -msgid "E702: Sort compare function failed" -msgstr "E702: Jämförelsefunktionen för sortering misslyckades" - -msgid "(Invalid)" -msgstr "(Ogiltig)" - -msgid "E677: Error writing temp file" -msgstr "E677: Fel vid skrivning av temporär fil" - -msgid "E703: Using a Funcref as a Number" -msgstr "E703: Använder en Funcref som en siffra" +msgid "> %d, Hex %04x, Octal %o" +msgstr "> %d, Hex %04x, Oktalt %o" -msgid "E745: Using a List as a Number" -msgstr "E745: Använder en Lista som en siffra" +#: ../ex_cmds.c:117 +#, c-format +msgid "> %d, Hex %08x, Octal %o" +msgstr "> %d, Hex %08x, Oktalt %o" -msgid "E728: Using a Dictionary as a Number" -msgstr "E728: Använder en Tabell som en siffra" +#: ../ex_cmds.c:768 +#, fuzzy, c-format +msgid "%ld line moved" +msgid_plural "%ld lines moved" +msgstr[0] "%ld rader flyttade" +msgstr[1] "%ld rader flyttade" -msgid "E729: using Funcref as a String" -msgstr "E729: använder Funcref som en Sträng" +#: ../ex_cmds.c:1319 +#, c-format +msgid "%ld lines filtered" +msgstr "%ld rader filtrerade" -msgid "E730: using List as a String" -msgstr "E730: använder Lista som en Sträng" +#: ../ex_cmds.c:1426 +msgid "[No write since last change]\n" +msgstr "[Ingen skrivning sedan senaste ändring]\n" -msgid "E731: using Dictionary as a String" -msgstr "E731: använder Tabell som en Sträng" +#: ../ex_cmds.c:1935 ../ex_cmds2.c:143 +msgid "Save As" +msgstr "Spara som" -#, c-format -msgid "E704: Funcref variable name must start with a capital: %s" -msgstr "E704: Variabelnamn för Funcref måste börja med en versal: %s" +#: ../ex_cmds.c:2012 +msgid "Write partial file?" +msgstr "Skriv ofullständig fil?" +#: ../ex_cmds.c:2167 #, c-format -msgid "E705: Variable name conflicts with existing function: %s" -msgstr "E705: Variabelnamn konflikterar med existerande funktion %s" +msgid "Overwrite existing file \"%s\"?" +msgstr "Skriv över befintlig fil \"%s\"?" +#: ../ex_cmds.c:2219 #, c-format -msgid "E706: Variable type mismatch for: %s" -msgstr "E706: Variabeltyp matchar inte för: %s" +msgid "Swap file \"%s\" exists, overwrite anyway?" +msgstr "Växlingsfil \"%s\" existerar, skriv över ändå?" +#: ../ex_cmds.c:2378 #, c-format -msgid "E795: Cannot delete variable %s" -msgstr "E795: Kan inte ta bort variabel %s" +msgid "" +"'readonly' option is set for \"%s\".\n" +"Do you wish to write anyway?" +msgstr "" +"'readonly' flaggan är satt för \"%s\".\n" +"Önskar du att skriva ändå?" +#: ../ex_cmds.c:2381 #, c-format -msgid "E741: Value is locked: %s" -msgstr "E741: Värde är låst: %s" +msgid "" +"File permissions of \"%s\" are read-only.\n" +"It may still be possible to write it.\n" +"Do you wish to try?" +msgstr "" -msgid "Unknown" -msgstr "Okänd" +#: ../ex_cmds.c:2595 +msgid "Edit File" +msgstr "Redigera fil" +#: ../ex_cmds.c:4461 #, c-format -msgid "E742: Cannot change value of %s" -msgstr "E742: Kan inte ändra värde av %s" +msgid "replace with %s (y/n/a/q/l/^E/^Y)?" +msgstr "ersätt med %s (y/n/a/q/l/^E/^Y)?" -# TODO: Capitalise first word of message? -msgid "E698: Variable nested too deep for making a copy" -msgstr "E698: variabel nästlad för djupt för att skapa en kopia" +#: ../ex_cmds.c:5063 +msgid "(Interrupted) " +msgstr "(Avbruten) " +#: ../ex_cmds.c:5068 +#, fuzzy, c-format +msgid "%ld match on %ld line" +msgid_plural "%ld matches on %ld line" +msgstr[0] " på %ld rader" +msgstr[1] " på %ld rader" + +#: ../ex_cmds.c:5070 +#, fuzzy, c-format +msgid "%ld substitution on %ld line" +msgid_plural "%ld substitutions on %ld line" +msgstr[0] "%ld ersättningar" +msgstr[1] "%ld ersättningar" + +#: ../ex_cmds.c:5073 +#, fuzzy, c-format +msgid "%ld match on %ld lines" +msgid_plural "%ld matches on %ld lines" +msgstr[0] " på %ld rader" +msgstr[1] " på %ld rader" + +#: ../ex_cmds.c:5075 +#, fuzzy, c-format +msgid "%ld substitution on %ld lines" +msgid_plural "%ld substitutions on %ld lines" +msgstr[0] "%ld ersättningar" +msgstr[1] "%ld ersättningar" + +#: ../ex_cmds.c:5248 #, c-format -msgid "E124: Missing '(': %s" -msgstr "E124: Saknar '(': %s" +msgid "Pattern found in every line: %s" +msgstr "Mönster funnet i varje rad: %s" -#, c-format -msgid "E125: Illegal argument: %s" -msgstr "E125: Otillåtet argument: %s" +#: ../ex_cmds.c:5255 +#, fuzzy, c-format +msgid "Pattern not found: %s" +msgstr "Mönster hittades inte" -msgid "E126: Missing :endfunction" -msgstr "E126: Saknar :endfunction" +#: ../ex_cmds.c:5659 +#, fuzzy +msgid "No old files" +msgstr "Inga inkluderade filer" +#: ../ex_cmds2.c:168 #, c-format -msgid "E746: Function name does not match script file name: %s" -msgstr "E746: Funktionsnamn matchar inte skriptfilnamn: %s" +msgid "Save changes to \"%s\"?" +msgstr "Spara ändringar till \"%s\"?" -msgid "E129: Function name required" -msgstr "E129: Funktionsnamn krävs" +#: ../ex_cmds2.c:461 +msgid "Warning: Entered other buffer unexpectedly (check autocommands)" +msgstr "Varning: Gick in i andra buffertar oväntat (kontrollera autokommandon)" +#: ../ex_cmds2.c:957 #, c-format -msgid "E128: Function name must start with a capital or contain a colon: %s" +msgid "W20: Required python version 2.x not supported, ignoring file: %s" msgstr "" -"E128: Funktionsnamn måste börja med en versal eller innehålla ett kolon: %s" +#: ../ex_cmds2.c:969 #, c-format -msgid "E131: Cannot delete function %s: It is in use" -msgstr "E131: Kan inte ta bort funktion %s: Den används" - -msgid "E132: Function call depth is higher than 'maxfuncdepth'" -msgstr "E132: Djupet på funktionsanropet är högre än 'maxfuncdepth'" +msgid "W21: Required python version 3.x not supported, ignoring file: %s" +msgstr "" -#, c-format -msgid "calling %s" -msgstr "anropar %s" +#: ../ex_docmd.c:535 +msgid "Entering Ex mode. Type \"visual\" to go to Normal mode." +msgstr "Går in i Ex-läge. Skriv \"visual\" för att gå till Normal-läge." -#, c-format -msgid "%s aborted" -msgstr "%s avbröts" +#: ../ex_docmd.c:611 +#, fuzzy, c-format +msgid "Executing: %s" +msgstr "Kör %s" -#, c-format -msgid "%s returning #%ld" -msgstr "%s returnerar #%ld" +#: ../ex_docmd.c:1348 +msgid "End of sourced file" +msgstr "Slut på läst fil" -#, c-format -msgid "%s returning %s" -msgstr "%s returnerar %s" +#: ../ex_docmd.c:1349 +msgid "End of function" +msgstr "Slut på funktion" -#, c-format -msgid "continuing in %s" -msgstr "fortsätter i %s" +#: ../ex_docmd.c:2206 +msgid "Backwards range given, OK to swap" +msgstr "Bakåtområde givet, OK att växla" -msgid "E133: :return not inside a function" -msgstr "E133: :return inte inom en funktion" +#: ../ex_docmd.c:5948 +#, fuzzy, c-format +msgid "%d more file to edit. Quit anyway?" +msgid_plural "%d more files to edit. Quit anyway?" +msgstr[0] "%d filer till att redigera. Avsluta ändå?" +msgstr[1] "%d filer till att redigera. Avsluta ändå?" -#, c-format -msgid "" -"\n" -"# global variables:\n" -msgstr "" -"\n" -"# globala variabler:\n" +#: ../ex_docmd.c:6003 ../globals.h:1701 +#, fuzzy +msgid "unknown" +msgstr "Okänd" -msgid "" -"\n" -"\tLast set from " -msgstr "" -"\n" -"\tSenast satt från " +#: ../ex_docmd.c:6023 +msgid "Greetings, Vim user!" +msgstr "Välkommen, Vim-användare!" -msgid "Entering Debug mode. Type \"cont\" to continue." -msgstr "Går in i felsökningsläge. Skriv \"cont\" för att fortsätta." +#: ../ex_docmd.c:6499 +msgid "Already only one tab page" +msgstr "Redan bara en flik" -#, c-format -msgid "line %ld: %s" -msgstr "rad %ld: %s" +#: ../ex_docmd.c:7232 +#, fuzzy +msgid "Edit File in new tab page" +msgstr "Redigera fil i nytt fönster" -#, c-format -msgid "cmd: %s" -msgstr "kommando: %s" +#: ../ex_docmd.c:7233 +msgid "Edit File in new window" +msgstr "Redigera fil i nytt fönster" +#: ../ex_docmd.c:7384 #, c-format -msgid "Breakpoint in \"%s%s\" line %ld" -msgstr "Brytpunkt i \"%s%s\" rad %ld" +msgid "Tab page %d" +msgstr "Flik %d" -#, c-format -msgid "E161: Breakpoint not found: %s" -msgstr "E161: Brytpunkt hittades inte: %s" +#: ../ex_docmd.c:7791 +msgid "No swap file" +msgstr "Ingen växlingsfil" -msgid "No breakpoints defined" -msgstr "Inga brytpunkter definierade" +#: ../ex_docmd.c:7895 +msgid "Append File" +msgstr "Lägg till fil" +#: ../ex_docmd.c:8404 #, c-format -msgid "%3d %s %s line %ld" -msgstr "%3d %s %s rad %ld" - -msgid "E750: First use :profile start " -msgstr "E750: Använd :profile start först" - -msgid "Save As" -msgstr "Spara som" +msgid "Window position: X %d, Y %d" +msgstr "Fönsterposition: X %d, Y %d" -#, c-format -msgid "Save changes to \"%s\"?" -msgstr "Spara ändringar till \"%s\"?" +#: ../ex_docmd.c:8783 +msgid "Save Redirection" +msgstr "Spara omdirigering" +#: ../ex_docmd.c:10090 msgid "Untitled" msgstr "Namnlös" +#. always scroll up, don't overwrite +#: ../ex_eval.c:577 #, c-format -msgid "E162: No write since last change for buffer \"%s\"" -msgstr "E162: Ingen skrivning sedan senaste ändring för buffert \"%s\"" - -msgid "Warning: Entered other buffer unexpectedly (check autocommands)" -msgstr "Varning: Gick in i andra buffertar oväntat (kontrollera autokommandon)" - -msgid "E163: There is only one file to edit" -msgstr "E163: Det finns bara en fil att redigera" - -msgid "E164: Cannot go before first file" -msgstr "E164: Kan inte gå före första filen" - -msgid "E165: Cannot go beyond last file" -msgstr "E165: Kan inte gå bortom sista filen" +msgid "Exception thrown: %s" +msgstr "Undantag kastade: %s" +#: ../ex_eval.c:631 #, c-format -# TODO: Capitalise first word of message? -msgid "E666: Compiler not supported: %s" -msgstr "E666: kompilator stöds inte: %s" +msgid "Exception finished: %s" +msgstr "Undantag färdiga: %s" +#: ../ex_eval.c:632 #, c-format -msgid "Searching for \"%s\" in \"%s\"" -msgstr "Söker efter \"%s\" i \"%s\"" +msgid "Exception discarded: %s" +msgstr "Undantag förkastade: %s" +#: ../ex_eval.c:677 ../ex_eval.c:728 #, c-format -msgid "Searching for \"%s\"" -msgstr "Söker efter \"%s\"" +msgid "%s, line %ld" +msgstr "%s, rad %ld" +#. always scroll up, don't overwrite +#: ../ex_eval.c:699 #, c-format -msgid "not found in 'runtimepath': \"%s\"" -msgstr "hittades inte i 'runtimepath': \"%s\"" - -msgid "Source Vim script" -msgstr "Läs Vim-skript" +msgid "Exception caught: %s" +msgstr "Undantag fångade: %s" +#: ../ex_eval.c:817 #, c-format -msgid "Cannot source a directory: \"%s\"" -msgstr "Kan inte läsa en katalog: \"%s\"" +msgid "%s made pending" +msgstr "%s gjordes avvaktande" +#: ../ex_eval.c:820 #, c-format -msgid "could not source \"%s\"" -msgstr "kunde inte läsa \"%s\"" +msgid "%s resumed" +msgstr "%s återupptagen" +#: ../ex_eval.c:824 #, c-format -msgid "line %ld: could not source \"%s\"" -msgstr "rad %ld: kunde inte läsa \"%s\"" +msgid "%s discarded" +msgstr "%s förkastad" -#, c-format -msgid "sourcing \"%s\"" -msgstr "läser \"%s\"" +#: ../ex_eval.c:850 +msgid "Exception" +msgstr "Undantag" -#, c-format -msgid "line %ld: sourcing \"%s\"" -msgstr "rad %ld: läser \"%s\"" +#: ../ex_eval.c:856 +msgid "Error and interrupt" +msgstr "Fel och avbrytet" -#, c-format -msgid "finished sourcing %s" -msgstr "läste klart %s" +#: ../ex_eval.c:858 ../gui.c:5045 ../gui_xmdlg.c:685 ../gui_xmdlg.c:804 +#: ../os_mswin.c:634 +msgid "Error" +msgstr "Fel" -msgid "modeline" -msgstr "lägesrad" +#. if (pending & CSTP_INTERRUPT) +#: ../ex_eval.c:860 +msgid "Interrupt" +msgstr "Avbryt" -msgid "--cmd argument" -msgstr "--cmd argument" +#: ../fileio.c:220 ../errors.h:1272 +msgid "is a directory" +msgstr "är en katalog" -msgid "-c argument" -msgstr "-c argument" +#: ../fileio.c:344 +msgid "Illegal file name" +msgstr "Otillåtet filnamn" -msgid "environment variable" -msgstr "miljövariabel" +#: ../fileio.c:386 +msgid "is not a file" +msgstr "är inte en fil" -msgid "error handler" -msgstr "felhanterare" +#: ../fileio.c:399 +msgid "is a device (disabled with 'opendevice' option)" +msgstr "är en enhet (inaktiverad med 'opendevice'-flagga)" -msgid "W15: Warning: Wrong line separator, ^M may be missing" -msgstr "W15: Varning: Fel radavskiljare, ^M kan saknas" +#: ../fileio.c:555 +msgid "[New DIRECTORY]" +msgstr "[Ny KATALOG]" -msgid "E167: :scriptencoding used outside of a sourced file" -msgstr "E167: :scriptencoding används utanför en körd fil" +#: ../fileio.c:579 ../fileio.c:582 +msgid "[File too big]" +msgstr "[Fil för stor]" -msgid "E168: :finish used outside of a sourced file" -msgstr "E168: :finish används utanför en körd fil" +#: ../fileio.c:584 +msgid "[Permission Denied]" +msgstr "[Tillåtelse nekas]" -#, c-format -msgid "Current %slanguage: \"%s\"" -msgstr "Aktuellt %sspråk: \"%s\"" +#: ../fileio.c:773 +msgid "Vim: Reading from stdin...\n" +msgstr "Vim: Läser från standard in...\n" -#, c-format -msgid "E197: Cannot set language to \"%s\"" -msgstr "E197: Kan inte sätta språk till \"%s\"" +#. make a copy, gui_write() may try to change it +#: ../fileio.c:780 +msgid "Reading from stdin..." +msgstr "Läser från standard in..." -#, c-format -msgid "<%s>%s%s %d, Hex %02x, Octal %03o" -msgstr "<%s>%s%s %d, Hex %02x, Oktalt %03o" +#: ../fileio.c:2490 +msgid "[fifo]" +msgstr "[fifo]" -#, c-format -msgid "> %d, Hex %04x, Octal %o" -msgstr "> %d, Hex %04x, Oktalt %o" +#: ../fileio.c:2495 +msgid "[socket]" +msgstr "[uttag]" -#, c-format -msgid "> %d, Hex %08x, Octal %o" -msgstr "> %d, Hex %08x, Oktalt %o" +#: ../fileio.c:2501 +#, fuzzy +msgid "[character special]" +msgstr "%ld tecken" -msgid "E134: Move lines into themselves" -msgstr "E134: Flytta rader in i dem själva" +#: ../fileio.c:2518 +msgid "[CR missing]" +msgstr "[CR saknas]" -msgid "1 line moved" -msgstr "1 rad flyttad" +#: ../fileio.c:2523 +msgid "[long lines split]" +msgstr "[långa rader delade]" +#: ../fileio.c:2546 #, c-format -msgid "%ld lines moved" -msgstr "%ld rader flyttade" +msgid "[CONVERSION ERROR in line %ld]" +msgstr "[KONVERTERINGSFEL på rad %ld]" +#: ../fileio.c:2552 #, c-format -msgid "%ld lines filtered" -msgstr "%ld rader filtrerade" +msgid "[ILLEGAL BYTE in line %ld]" +msgstr "[OTILLÅTEN BIT på rad %ld]" -msgid "E135: *Filter* Autocommands must not change current buffer" -msgstr "E135: *Filter*-Autokommandon får inte ändra aktuell buffert" +#: ../fileio.c:2557 +msgid "[READ ERRORS]" +msgstr "[LÄSFEL]" -msgid "[No write since last change]\n" -msgstr "[Ingen skrivning sedan senaste ändring]\n" +#: ../fileio.c:2902 +msgid "Can't find temp file for conversion" +msgstr "Kan inte hitta temporär fil för konvertering" -#, c-format -msgid "%sviminfo: %s in line: " -msgstr "%sviminfo: %s på rad: " +#: ../fileio.c:2909 +msgid "Conversion with 'charconvert' failed" +msgstr "Konvertering med 'charconvert' misslyckades" -msgid "E136: viminfo: Too many errors, skipping rest of file" -msgstr "E136: viminfo: För många fel, hoppar över resten av filen" +#: ../fileio.c:2912 +msgid "can't read output of 'charconvert'" +msgstr "kan inte läsa utdata av 'charconvert'" -#, c-format -msgid "Reading viminfo file \"%s\"%s%s%s" -msgstr "Läser viminfo-fil \"%s\"%s%s%s" +#: ../fileio.c:3137 +msgid "[dos]" +msgstr "[dos]" -msgid " info" -msgstr " info" +#: ../fileio.c:3137 +msgid "[dos format]" +msgstr "[dos-format]" -msgid " marks" -msgstr " märken" +#: ../fileio.c:3143 +msgid "[mac]" +msgstr "[mac]" -msgid " FAILED" -msgstr " MISSLYCKADES" +#: ../fileio.c:3143 +msgid "[mac format]" +msgstr "[mac-format]" -#. avoid a wait_return for this message, it's annoying -#, c-format -msgid "E137: Viminfo file is not writable: %s" -msgstr "E137: Viminfo-fil är inte skrivbar: %s" +#: ../fileio.c:3149 +msgid "[unix]" +msgstr "[unix]" -#, c-format -msgid "E138: Can't write viminfo file %s!" -msgstr "E138: Kan inte skriva viminfo-fil %s!" +#: ../fileio.c:3149 +msgid "[unix format]" +msgstr "[unix-format]" -#, c-format -msgid "Writing viminfo file \"%s\"" -msgstr "Skriver viminfo-fil \"%s\"" +#: ../fileio.c:3176 +#, fuzzy, c-format +msgid "%ld line, " +msgid_plural "%ld lines, " +msgstr[0] "%ld rader, " +msgstr[1] "%ld rader, " -#. Write the info: +#: ../fileio.c:3179 #, c-format -msgid "# This viminfo file was generated by Vim %s.\n" -msgstr "# Den här viminfo-filen genererades av Vim %s.\n" +msgid "%lld byte" +msgid_plural "%lld bytes" +msgstr[0] "" +msgstr[1] "" + +#: ../fileio.c:3190 ../netbeans.c:3427 +msgid "[noeol]" +msgstr "[inget radslut]" + +#: ../fileio.c:3190 ../netbeans.c:3428 +msgid "[Incomplete last line]" +msgstr "[Ofullständig sistarad]" +#: ../fileio.c:4308 #, c-format msgid "" -"# You may edit it if you're careful!\n" -"\n" +"W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as " +"well" msgstr "" -"# Du får redigera den om du är försiktig!\n" -"\n" - -#, c-format -msgid "# Value of 'encoding' when this file was written\n" -msgstr "# Värde av 'encoding' när den här filen blev skriven\n" - -msgid "Illegal starting char" -msgstr "Otillåtet starttecken" - -msgid "Write partial file?" -msgstr "Skriv ofullständig fil?" +"W12: Varning: Filen \"%s\" har ändrats och bufferten ändrades i Vim också" -msgid "E140: Use ! to write partial buffer" -msgstr "E140: Använd ! för att skriva ofullständig buffert" +#: ../fileio.c:4309 +msgid "See \":help W12\" for more info." +msgstr "Se \":help W12\" för mer info." +#: ../fileio.c:4313 #, c-format -msgid "Overwrite existing file \"%s\"?" -msgstr "Skriv över befintlig fil \"%s\"?" +msgid "W11: Warning: File \"%s\" has changed since editing started" +msgstr "W11: Varning: Filen \"%s\" har ändrats sedan redigeringen började" -#, c-format -msgid "Swap file \"%s\" exists, overwrite anyway?" -msgstr "Växlingsfil \"%s\" existerar, skriv över ändå?" +#: ../fileio.c:4314 +msgid "See \":help W11\" for more info." +msgstr "Se \":help W11\" för mer info." +#: ../fileio.c:4318 #, c-format -msgid "E768: Swap file exists: %s (:silent! overrides)" -msgstr "E768: Växlingsfil existerar: %s (:silent! tvingar)" +msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" +msgstr "" +"W16: Varning: Rättigheterna på filen \"%s\" har ändrats sedan redigeringen " +"började" + +#: ../fileio.c:4319 +msgid "See \":help W16\" for more info." +msgstr "Se \":help W16\" för mer info." +#: ../fileio.c:4337 #, c-format -msgid "E141: No file name for buffer %ld" -msgstr "E141: Inget filnamn för buffert %ld" +msgid "W13: Warning: File \"%s\" has been created after editing started" +msgstr "W13: Varning: Filen \"%s\" har skapats efter redigeringen började" -msgid "E142: File not written: Writing is disabled by 'write' option" -msgstr "E142: Filen skrevs inte: Skrivning är inaktiverat med 'write'-flaggan" +#: ../fileio.c:4366 +msgid "Warning" +msgstr "Varning" -#, c-format +#: ../fileio.c:4368 msgid "" -"'readonly' option is set for \"%s\".\n" -"Do you wish to write anyway?" +"&OK\n" +"&Load File\n" +"Load File &and Options" msgstr "" -"'readonly' flaggan är satt för \"%s\".\n" -"Önskar du att skriva ändå?" - -msgid "Edit File" -msgstr "Redigera fil" - -#, c-format -msgid "E143: Autocommands unexpectedly deleted new buffer %s" -msgstr "E143: Autokommandon tog oväntat bort ny buffert %s" -# TODO: Capitalise first word of message? -msgid "E144: Non-numeric argument to :z" -msgstr "E144: ickenumeriskt argument till :z" +#: ../filepath.c:1842 ../filepath.c:2373 ../terminal.c:5219 +msgid "" +msgstr "" -msgid "E145: Shell commands not allowed in rvim" -msgstr "E145: Skalkommandon inte tillåtna i rvim" +#: ../filepath.c:2336 +msgid "writefile() first argument must be a List or a Blob" +msgstr "" -msgid "E146: Regular expressions can't be delimited by letters" -msgstr "E146: Reguljära uttryck kan inte vara åtskilda av bokstäver" +#: ../filepath.c:2449 +msgid "Select Directory dialog" +msgstr "Välj katalog-dialog" -#, c-format -msgid "replace with %s (y/n/a/q/l/^E/^Y)?" -msgstr "ersätt med %s (y/n/a/q/l/^E/^Y)?" +#: ../filepath.c:2451 +msgid "Save File dialog" +msgstr "Spara fil-dialog" -msgid "(Interrupted) " -msgstr "(Avbruten) " +#: ../filepath.c:2453 +msgid "Open File dialog" +msgstr "Öppna fil-dialog" -msgid "1 match" -msgstr "1 träff" +#: ../filepath.c:4145 +#, fuzzy +msgid "no matches" +msgstr "%ld träffar" -msgid "1 substitution" -msgstr "1 ersättning" +#: ../fold.c:2020 +#, fuzzy, c-format +msgid "+--%3ld line folded " +msgid_plural "+--%3ld lines folded " +msgstr[0] "+--%3ld rader vikta " +msgstr[1] "+--%3ld rader vikta " -#, c-format -msgid "%ld matches" -msgstr "%ld träffar" +#: ../fold.c:3789 +#, fuzzy, c-format +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld rader: " +msgstr[1] "+-%s%3ld rader: " -#, c-format -msgid "%ld substitutions" -msgstr "%ld ersättningar" +#: ../gc.c:242 +msgid "Not enough memory to set references, garbage collection aborted!" +msgstr "" -msgid " on 1 line" -msgstr " på 1 rad" +#: ../gui.c:5293 +msgid "No match at cursor, finding next" +msgstr "Ingen matchning vid markör, söker nästa" -#, c-format -msgid " on %ld lines" -msgstr " på %ld rader" +#: ../gui_gtk.c:1294 ../gui_gtk.c:1298 +#, fuzzy +msgid "_Save" +msgstr "Spara som" -msgid "E147: Cannot do :global recursive" -msgstr "E147: Kan inte göra :global rekursivt" +#: ../gui_gtk.c:1294 ../gui_gtk.c:1298 +msgid "_Open" +msgstr "" -msgid "E148: Regular expression missing from global" -msgstr "E148: Reguljärt uttryck saknas från global" +#: ../gui_gtk.c:1294 ../gui_gtk.c:1297 ../gui_gtk.c:1441 +#, fuzzy +msgid "_Cancel" +msgstr "Avbryt" -#, c-format -msgid "Pattern found in every line: %s" -msgstr "Mönster funnet i varje rad: %s" +#: ../gui_gtk.c:1442 +#, fuzzy +msgid "_OK" +msgstr "OK" -#, c-format +#: ../gui_gtk.c:1671 ../message.c:4564 msgid "" -"\n" -"# Last Substitute String:\n" -"$" +"&Yes\n" +"&No\n" +"&Cancel" msgstr "" -"\n" -"# Senaste ersättningssträng:\n" -"$" +"&Ja\n" +"&Nej\n" +"&Avbryt" -msgid "E478: Don't panic!" -msgstr "E478: Få inte panik!" +#: ../gui_gtk.c:1698 ../gui_gtk.c:1702 ../gui_xmdlg.c:927 +msgid "OK" +msgstr "OK" -#, c-format -msgid "E661: Sorry, no '%s' help for %s" -msgstr "E661: Tyvärr, ingen \"%s\"-hjälp för %s" +#: ../gui_gtk.c:1699 ../gui_gtk.c:1703 +msgid "Yes" +msgstr "" -#, c-format -msgid "E149: Sorry, no help for %s" -msgstr "E149: Tyvärr, ingen hjälp för %s" +#: ../gui_gtk.c:1700 ../gui_gtk.c:1704 +msgid "No" +msgstr "" -#, c-format -msgid "Sorry, help file \"%s\" not found" -msgstr "Tyvärr, hjälpfil \"%s\" hittades inte" +#: ../gui_gtk.c:1701 ../gui_gtk.c:1705 ../gui_xmdlg.c:936 +msgid "Cancel" +msgstr "Avbryt" -#, c-format -msgid "E150: Not a directory: %s" -msgstr "E150: Inte en katalog: %s" +#: ../gui_gtk.c:1905 +msgid "Input _Methods" +msgstr "Inmatnings_metoder" -#, c-format -msgid "E152: Cannot open %s for writing" +#: ../gui_gtk.c:2268 ../gui_motif.c:3552 +msgid "VIM - Search and Replace..." +msgstr "VIM - Sök och ersätt..." + +#: ../gui_gtk.c:2273 ../gui_motif.c:3554 +msgid "VIM - Search..." +msgstr "VIM - Sök..." + +#: ../gui_gtk.c:2308 ../gui_motif.c:3663 +msgid "Find what:" +msgstr "Hitta vad:" + +#: ../gui_gtk.c:2353 ../gui_motif.c:3696 +msgid "Replace with:" +msgstr "Ersätt med:" + +#. whole word only button +#: ../gui_gtk.c:2412 ../gui_motif.c:3816 +msgid "Match whole word only" +msgstr "Matcha endast hela ord" + +#. match case button +#: ../gui_gtk.c:2431 ../gui_motif.c:3828 +msgid "Match case" +msgstr "Skilj på stora/små bokstäver" + +#: ../gui_gtk.c:2449 ../gui_motif.c:3767 +msgid "Direction" +msgstr "Riktning" + +#. 'Up' and 'Down' buttons +#: ../gui_gtk.c:2474 ../gui_motif.c:3780 +msgid "Up" +msgstr "Upp" + +#: ../gui_gtk.c:2478 ../gui_motif.c:3789 +msgid "Down" +msgstr "Ned" + +#: ../gui_gtk.c:2494 ../gui_gtk.c:2496 +msgid "Find Next" +msgstr "Hitta nästa" + +#: ../gui_gtk.c:2513 ../gui_gtk.c:2515 +msgid "Replace" +msgstr "Ersätt" + +#: ../gui_gtk.c:2526 ../gui_gtk.c:2528 +msgid "Replace All" +msgstr "Ersätt alla" + +#: ../gui_gtk.c:2540 +#, fuzzy +msgid "_Close" +msgstr "Stäng" + +#: ../gui_gtk_x11.c:2537 +msgid "Vim: Received \"die\" request from session manager\n" +msgstr "Vim: Tog emot \"die\"-begäran från sessionshanteraren\n" + +#: ../gui_gtk_x11.c:3402 ../gui_w32.c:2960 +msgid "Close tab" +msgstr "Stäng flik" + +#: ../gui_gtk_x11.c:3403 ../gui_w32.c:2962 +msgid "New tab" +msgstr "Ny flik" + +#: ../gui_gtk_x11.c:3404 +msgid "Open Tab..." +msgstr "Öppna flik..." + +#: ../gui_gtk_x11.c:4370 +msgid "Vim: Main window unexpectedly destroyed\n" +msgstr "Vim: Huvudfönster oväntat förstört\n" + +#: ../gui_motif.c:2263 +msgid "&Filter" +msgstr "&Filter" + +#: ../gui_motif.c:2264 ../gui_motif.c:3631 +msgid "&Cancel" +msgstr "&Avbryt" + +#: ../gui_motif.c:2265 +msgid "Directories" +msgstr "Kataloger" + +#: ../gui_motif.c:2266 +msgid "Filter" +msgstr "Filter" + +#: ../gui_motif.c:2267 +msgid "&Help" +msgstr "&Hjälp" + +#: ../gui_motif.c:2268 +msgid "Files" +msgstr "Filer" + +#: ../gui_motif.c:2269 +msgid "&OK" +msgstr "&OK" + +#: ../gui_motif.c:2270 +msgid "Selection" +msgstr "Val" + +#: ../gui_motif.c:2491 +msgid "Vim dialog" +msgstr "Vim-dialog" + +#: ../gui_motif.c:3583 +msgid "Find &Next" +msgstr "Hitta &nästa" + +#: ../gui_motif.c:3598 +msgid "&Replace" +msgstr "&Ersätt" + +#: ../gui_motif.c:3609 +msgid "Replace &All" +msgstr "Ersätt &alla" + +#: ../gui_motif.c:3620 +msgid "&Undo" +msgstr "&Ångra" + +#: ../gui_w32.c:2964 +msgid "Open tab..." +msgstr "Öppna flik..." + +#: ../gui_w32.c:3213 +#, fuzzy +msgid "Find string" +msgstr "Hitta nästa" + +#: ../gui_w32.c:3237 +#, fuzzy +msgid "Find & Replace" +msgstr "&Ersätt" + +#. We fake this: Use a filter that doesn't select anything and a default +#. file name that won't be used. +#: ../gui_w32.c:4182 +msgid "Not Used" +msgstr "Inte använd" + +#: ../gui_w32.c:4183 +msgid "Directory\t*.nothing\n" +msgstr "Katalog\t*.nothing\n" + +#: ../gui_x11.c:2075 +#, fuzzy, c-format +msgid "Font0: %s" +msgstr "Typsnitt0: %s\n" + +#: ../gui_x11.c:2076 +#, fuzzy, c-format +msgid "Font%d: %s" +msgstr "Typsnitt0: %s\n" + +#: ../gui_x11.c:2077 +#, fuzzy, c-format +msgid "Font%d width is not twice that of font0" +msgstr "Typsnitt%ld är inte dubbelt så bred som font0\n" + +#: ../gui_x11.c:2078 +#, fuzzy, c-format +msgid "Font0 width: %d" +msgstr "Typsnitt0 bredd: %ld\n" + +#: ../gui_x11.c:2080 +#, fuzzy, c-format +msgid "Font%d width: %d" +msgstr "Typsnitt0 bredd: %ld\n" + +#: ../gui_xmdlg.c:686 ../gui_xmdlg.c:805 +msgid "Invalid font specification" +msgstr "Ogiltig typsnittsuppsättning" + +#: ../gui_xmdlg.c:687 ../gui_xmdlg.c:806 +msgid "&Dismiss" +msgstr "&Förkasta" + +#: ../gui_xmdlg.c:696 +msgid "no specific match" +msgstr "ingen specifik matchning" + +#: ../gui_xmdlg.c:905 +msgid "Vim - Font Selector" +msgstr "Vim - Typsnittsväljare" + +#: ../gui_xmdlg.c:974 +msgid "Name:" +msgstr "Namn:" + +#. create toggle button +#: ../gui_xmdlg.c:1014 +msgid "Show size in Points" +msgstr "Visa storlek i punkter" + +#: ../gui_xmdlg.c:1032 +msgid "Encoding:" +msgstr "Teckenkodning:" + +#: ../gui_xmdlg.c:1078 +msgid "Font:" +msgstr "Typsnitt:" + +#: ../gui_xmdlg.c:1111 +msgid "Style:" +msgstr "Stil:" + +#: ../gui_xmdlg.c:1143 +msgid "Size:" +msgstr "Storlek:" + +#: ../hardcopy.c:501 +#, c-format +msgid "Page %d" +msgstr "Sida %d" + +#: ../hardcopy.c:646 +msgid "No text to be printed" +msgstr "Ingen text att skriva ut" + +#: ../hardcopy.c:724 +#, c-format +msgid "Printing page %d (%d%%)" +msgstr "Skriver ut sida %d (%d%%)" + +#: ../hardcopy.c:736 +#, c-format +msgid " Copy %d of %d" +msgstr " Kopia %d av %d" + +#: ../hardcopy.c:794 +#, c-format +msgid "Printed: %s" +msgstr "Skrev ut: %s" + +#: ../hardcopy.c:802 +msgid "Printing aborted" +msgstr "Utskrift avbruten" + +#: ../hardcopy.c:3122 +msgid "Sending to printer..." +msgstr "Skickar till skrivare..." + +#: ../hardcopy.c:3128 +msgid "Print job sent." +msgstr "Skrivarjobb skickat." + +#: ../help.c:142 +#, c-format +msgid "Sorry, help file \"%s\" not found" +msgstr "Tyvärr, hjälpfil \"%s\" hittades inte" + +#: ../highlight.c:3605 +msgid "W18: Invalid character in group name" +msgstr "W18: Ogiltigt tecken i gruppnamn" + +#: ../if_cscope.c:117 +msgid "Add a new database" +msgstr "Lägg till en ny databas" + +#: ../if_cscope.c:119 +msgid "Query for a pattern" +msgstr "Fråga efter ett mönster" + +#: ../if_cscope.c:121 +msgid "Show this message" +msgstr "Visa detta meddelande" + +#: ../if_cscope.c:123 +msgid "Kill a connection" +msgstr "Döda en anslutning" + +#: ../if_cscope.c:125 +msgid "Reinit all connections" +msgstr "Ominitiera alla anslutningar" + +#: ../if_cscope.c:127 +msgid "Show connections" +msgstr "Visa anslutningar" + +#: ../if_cscope.c:267 +msgid "This cscope command does not support splitting the window.\n" +msgstr "Det här scope-kommandot stöder inte delning av fönstret.\n" + +#: ../if_cscope.c:641 +#, c-format +msgid "Added cscope database %s" +msgstr "Lade till cscope-databas %s" + +#: ../if_cscope.c:989 +#, fuzzy +msgid "cs_create_connection setpgid failed" +msgstr "cs_create_connection-exekvering misslyckades" + +#: ../if_cscope.c:996 ../if_cscope.c:1032 +msgid "cs_create_connection exec failed" +msgstr "cs_create_connection-exekvering misslyckades" + +#: ../if_cscope.c:1008 ../if_cscope.c:1045 +msgid "cs_create_connection: fdopen for to_fp failed" +msgstr "cs_create_connection: fdopen för to_fp misslyckades" + +#: ../if_cscope.c:1010 ../if_cscope.c:1049 +msgid "cs_create_connection: fdopen for fr_fp failed" +msgstr "cs_create_connection: fdopen för fr_fp misslyckades" + +#: ../if_cscope.c:1303 +msgid "cscope commands:\n" +msgstr "cscope-kommandon:\n" + +#: ../if_cscope.c:1312 +#, fuzzy, c-format +msgid "%-5s: %s%*s (Usage: %s)" +msgstr "%-5s: %-30s (Användning: %s)" + +#: ../if_cscope.c:1317 +msgid "" +"\n" +" a: Find assignments to this symbol\n" +" c: Find functions calling this function\n" +" d: Find functions called by this function\n" +" e: Find this egrep pattern\n" +" f: Find this file\n" +" g: Find this definition\n" +" i: Find files #including this file\n" +" s: Find this C symbol\n" +" t: Find this text string\n" +msgstr "" + +#: ../if_cscope.c:1591 +#, c-format +msgid "cscope connection %s closed" +msgstr "cscope-anslutning %s stängd" + +#: ../if_cscope.c:1976 +#, c-format +msgid "Cscope tag: %s" +msgstr "Cscope-tagg: %s" + +#: ../if_cscope.c:2003 +msgid "" +"\n" +" # line" +msgstr "" +"\n" +" # rad" + +#: ../if_cscope.c:2005 +msgid "filename / context / line\n" +msgstr "filnamn / sammanhang / rad\n" + +#: ../if_cscope.c:2385 +msgid "All cscope databases reset" +msgstr "Alla cscope-databaser återställda" + +#: ../if_cscope.c:2467 +msgid "no cscope connections\n" +msgstr "inga cscope-anslutningar\n" + +#: ../if_cscope.c:2471 +msgid " # pid database name prepend path\n" +msgstr " # pid databasnamn först i sökväg\n" + +#: ../if_lua.c:2611 +msgid "Lua library cannot be loaded." +msgstr "" + +#: ../if_lua.c:2663 ../if_mzsch.c:2479 ../if_mzsch.c:2509 ../if_mzsch.c:2605 +#: ../if_mzsch.c:2668 ../if_mzsch.c:2790 ../if_mzsch.c:2846 ../if_tcl.c:680 +#: ../if_tcl.c:725 ../if_tcl.c:799 ../if_tcl.c:869 ../if_tcl.c:1993 +#: ../if_py_both.h:317 ../if_py_both.h:6076 +msgid "cannot save undo information" +msgstr "kan inte spara ångra-information" + +#: ../if_mzsch.c:1682 ../if_tcl.c:1402 ../if_py_both.h:1188 +#: ../if_py_both.h:1239 +msgid "invalid expression" +msgstr "ogiltigt uttryck" + +#: ../if_mzsch.c:1691 ../if_tcl.c:1410 +msgid "expressions disabled at compile time" +msgstr "uttryck inaktiverat vid kompilering" + +#: ../if_mzsch.c:1799 +msgid "hidden option" +msgstr "gömd flagga" + +#: ../if_mzsch.c:1803 ../if_tcl.c:496 +msgid "unknown option" +msgstr "okänd flagga" + +#: ../if_mzsch.c:1985 +msgid "window index is out of range" +msgstr "fönsterindex är utanför område" + +#: ../if_mzsch.c:2167 +msgid "couldn't open buffer" +msgstr "kunde inte öppna buffert" + +#: ../if_mzsch.c:2484 ../if_mzsch.c:2613 ../if_mzsch.c:2682 ../if_py_both.h:318 +msgid "cannot delete line" +msgstr "kan inte ta bort rad" + +#: ../if_mzsch.c:2515 ../if_mzsch.c:2697 ../if_tcl.c:686 ../if_tcl.c:2023 +#: ../if_py_both.h:320 +msgid "cannot replace line" +msgstr "kan inte ersätta rad" + +#: ../if_mzsch.c:2712 ../if_mzsch.c:2796 ../if_mzsch.c:2856 ../if_py_both.h:319 +msgid "cannot insert line" +msgstr "kan inte infoga rad" + +#: ../if_mzsch.c:2954 ../if_py_both.h:4608 +msgid "string cannot contain newlines" +msgstr "sträng kan inte innehålla nyrader" + +#: ../if_mzsch.c:3448 +msgid "error converting Scheme values to Vim" +msgstr "" + +#: ../if_mzsch.c:3551 +msgid "Vim error: ~a" +msgstr "Vim-fel: ~a" + +#: ../if_mzsch.c:3584 ../if_tcl.c:1430 +msgid "Vim error" +msgstr "Vim-fel" + +#: ../if_mzsch.c:3658 +msgid "buffer is invalid" +msgstr "buffert är ogiltig" + +#: ../if_mzsch.c:3669 +msgid "window is invalid" +msgstr "fönster är ogiltigt" + +#: ../if_mzsch.c:3689 +msgid "linenr out of range" +msgstr "radnummer utanför område" + +#: ../if_mzsch.c:3842 ../if_mzsch.c:3886 +msgid "not allowed in the Vim sandbox" +msgstr "inte tillåtet i Vim-sandlådan" + +#: ../if_tcl.c:414 +msgid "invalid buffer number" +msgstr "ogiltigt buffertnummer" + +#: ../if_tcl.c:460 ../if_tcl.c:929 ../if_tcl.c:1111 +msgid "not implemented yet" +msgstr "inte implementerat än" + +#. ??? +#: ../if_tcl.c:770 +msgid "cannot set line(s)" +msgstr "kan inte ställa in rad(er)" + +#: ../if_tcl.c:830 ../if_py_both.h:5689 +msgid "invalid mark name" +msgstr "ogiltigt märknamn" + +#: ../if_tcl.c:839 +msgid "mark not set" +msgstr "märke inte satt" + +#: ../if_tcl.c:846 ../if_tcl.c:1065 +#, c-format +msgid "row %d column %d" +msgstr "rad %d kolumn %d" + +#: ../if_tcl.c:878 +msgid "cannot insert/append line" +msgstr "kan inte infoga/lägga till rad" + +#: ../if_tcl.c:1212 ../if_py_both.h:5203 ../if_py_both.h:5259 +#: ../if_py_both.h:5343 +msgid "line number out of range" +msgstr "radnummer utanför område" + +#: ../if_tcl.c:1265 +msgid "unknown flag: " +msgstr "okänd flagga: " + +#: ../if_tcl.c:1336 +msgid "unknown vimOption" +msgstr "okänd vimOption" + +#: ../if_tcl.c:1425 +msgid "keyboard interrupt" +msgstr "tangentbordsavbrott" + +#: ../if_tcl.c:1473 +msgid "cannot create buffer/window command: object is being deleted" +msgstr "kan inte skapa buffert/fönster-kommando: objekt håller på att tas bort" + +#: ../if_tcl.c:1538 +msgid "" +"cannot register callback command: buffer/window is already being deleted" +msgstr "" +"kan inte registera återkallningskommando: buffert/fönster håller redan på " +"att tas bort" + +#: ../if_tcl.c:1556 +msgid "cannot register callback command: buffer/window reference not found" +msgstr "" +"kan inte registrera återkallningskommando: buffert-/fönsterreferens hittades " +"inte" + +#: ../if_tcl.c:2003 +msgid "cannot get line" +msgstr "kan inte hämta rad" + +#: ../if_xcmdsrv.c:232 +msgid "Unable to register a command server name" +msgstr "Kunde inte registrera ett kommandoservernamn" + +#: ../indent.c:1142 +#, c-format +msgid "%ld lines to indent... " +msgstr "%ld rader att indentera... " + +#: ../indent.c:1184 +#, fuzzy, c-format +msgid "%ld line indented " +msgid_plural "%ld lines indented " +msgstr[0] "%ld rader indenterade " +msgstr[1] "%ld rader indenterade " + +#: ../insexpand.c:47 +msgid " Keyword completion (^N^P)" +msgstr " Nyckelordskomplettering (^N^P)" + +#. CTRL_X_NORMAL, ^P/^N compl. +#: ../insexpand.c:48 +msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" +msgstr " ^X-läge (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" + +#. CTRL_X_SCROLL: depends on state +#: ../insexpand.c:50 +msgid " Whole line completion (^L^N^P)" +msgstr " Helradskomplettering (^L^N^P)" + +#: ../insexpand.c:51 +msgid " File name completion (^F^N^P)" +msgstr " Filnamnskomplettering (^F^N^P)" + +#: ../insexpand.c:52 +msgid " Tag completion (^]^N^P)" +msgstr " Taggkomplettering (^]^N^P)" + +#: ../insexpand.c:53 +msgid " Path pattern completion (^N^P)" +msgstr " Sökvägsmönsterkomplettering (^N^P)" + +#: ../insexpand.c:54 +msgid " Definition completion (^D^N^P)" +msgstr " Definitionskomplettering (^D^N^P)" + +#. CTRL_X_FINISHED +#: ../insexpand.c:56 +msgid " Dictionary completion (^K^N^P)" +msgstr " Ordbokskomplettering (^K^N^P)" + +#: ../insexpand.c:57 +msgid " Thesaurus completion (^T^N^P)" +msgstr " Tesaurkomplettering (^T^N^P)" + +#. CTRL_X_EVAL doesn't use msg. +#: ../insexpand.c:58 ../insexpand.c:64 +msgid " Command-line completion (^V^N^P)" +msgstr " Kommandoradskomplettering (^V^N^P)" + +#: ../insexpand.c:59 +msgid " User defined completion (^U^N^P)" +msgstr " Användardefinierad komplettering (^U^N^P)" + +#: ../insexpand.c:60 +msgid " Omni completion (^O^N^P)" +msgstr " Omnikomplettering (^O^N^P)" + +#: ../insexpand.c:61 +msgid " Spelling suggestion (^S^N^P)" +msgstr " Stavningsförslag (^S^N^P)" + +#: ../insexpand.c:62 +msgid " Keyword Local completion (^N^P)" +msgstr " Lokal nyckelordskomplettering (^N^P)" + +#: ../insexpand.c:401 +msgid "'dictionary' option is empty" +msgstr "'dictionary'-flagga är tom" + +#: ../insexpand.c:402 +msgid "'thesaurus' option is empty" +msgstr "'thesaurus'-flagga är tom" + +#: ../insexpand.c:1697 +#, c-format +msgid "Scanning dictionary: %s" +msgstr "Söker igenom ordbok: %s" + +#: ../insexpand.c:2206 +msgid " (insert) Scroll (^E/^Y)" +msgstr " (infoga) Rulla (^E/^Y)" + +#: ../insexpand.c:2208 +msgid " (replace) Scroll (^E/^Y)" +msgstr " (ersätt) Rulla (^E/^Y)" + +#. reset in msg_trunc_attr() +#: ../insexpand.c:3490 +#, c-format +msgid "Scanning: %s" +msgstr "Söker igenom: %s" + +#. reset in msg_trunc_attr() +#: ../insexpand.c:3529 +msgid "Scanning tags." +msgstr "Söker igenom taggar." + +#: ../insexpand.c:4313 +#, fuzzy +msgid "match in file" +msgstr "Patchfil" + +#: ../insexpand.c:5311 +msgid " Adding" +msgstr " Lägger till" + +#. showmode might reset the internal line pointers, so it must +#. be called before line = ml_get(), or when this address is no +#. longer needed. -- Acevedo. +#: ../insexpand.c:5363 +msgid "-- Searching..." +msgstr "-- Söker..." + +#: ../insexpand.c:5382 +msgid "Hit end of paragraph" +msgstr "Stötte på slutet på stycket" + +#: ../insexpand.c:5383 +msgid "Pattern not found" +msgstr "Mönster hittades inte" + +#: ../insexpand.c:5391 +msgid "Back at original" +msgstr "Tillbaka på orginalet" + +#: ../insexpand.c:5396 +msgid "Word from other line" +msgstr "Ord från annan rad" + +#: ../insexpand.c:5401 +msgid "The only match" +msgstr "Den enda träffen" + +#: ../insexpand.c:5422 +#, c-format +msgid "match %d of %d" +msgstr "träff %d av %d" + +#: ../insexpand.c:5426 +#, c-format +msgid "match %d" +msgstr "träff %d" + +#: ../list.c:1032 +#, fuzzy +msgid "flatten() argument" +msgstr "-c argument" + +#: ../list.c:2284 +#, fuzzy +msgid "sort() argument" +msgstr "-c argument" + +#: ../list.c:2284 +#, fuzzy +msgid "uniq() argument" +msgstr "-c argument" + +#: ../list.c:2549 +#, fuzzy +msgid "map() argument" +msgstr "-c argument" + +#: ../list.c:2551 +#, fuzzy +msgid "mapnew() argument" +msgstr "För många redigeringsargument" + +#: ../list.c:2553 +#, fuzzy +msgid "filter() argument" +msgstr "-c argument" + +#: ../list.c:2554 +#, fuzzy +msgid "foreach() argument" +msgstr "-c argument" + +#: ../list.c:2902 +msgid "extendnew() argument" +msgstr "" + +#: ../list.c:2975 +#, fuzzy +msgid "remove() argument" +msgstr "--cmd argument" + +#: ../list.c:3005 +#, fuzzy +msgid "reverse() argument" +msgstr "-c argument" + +#: ../locale.c:325 +#, c-format +msgid "Current %slanguage: \"%s\"" +msgstr "Aktuellt %sspråk: \"%s\"" + +#: ../main.c:60 +msgid "Unknown option argument" +msgstr "Okänt flaggargument" + +#: ../main.c:62 +msgid "Too many edit arguments" +msgstr "För många redigeringsargument" + +#: ../main.c:64 +msgid "Argument missing after" +msgstr "Argument saknas efter" + +#: ../main.c:66 +msgid "Garbage after option argument" +msgstr "Skräp efter flaggargument" + +#: ../main.c:68 +msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments" +msgstr "" +"För många \"+kommando\"-, \"-c kommando\"- eller \"--cmd kommando\"-argument" + +#: ../main.c:70 +msgid "Invalid argument for" +msgstr "Ogiltigt argument för" + +#: ../main.c:373 +#, c-format +msgid "%d files to edit\n" +msgstr "%d filer att redigera\n" + +#: ../main.c:876 +msgid "netbeans is not supported with this GUI\n" +msgstr "" + +#: ../main.c:1869 +#, fuzzy +msgid "'-nb' cannot be used: not enabled at compile time\n" +msgstr "E26: Hebreiska kan inte användas: Inte aktiverat vid kompilering\n" + +#: ../main.c:1970 +msgid "This Vim was not compiled with the diff feature." +msgstr "Denna Vim blev inte kompilerad med diff-funktionen." + +#: ../main.c:2544 +msgid "Attempt to open script file again: \"" +msgstr "Försök att öppna skriptfil igen: \"" + +#: ../main.c:2553 +msgid "Cannot open for reading: \"" +msgstr "Kan inte öppna för läsning: \"" + +#: ../main.c:2608 +msgid "Cannot open for script output: \"" +msgstr "Kan inte öppna för skriptutmatning: \"" + +#: ../main.c:2773 +msgid "Vim: Error: Failure to start gvim from NetBeans\n" +msgstr "Vim: Fel: Misslyckades att starta gvim från NetBeans\n" + +#: ../main.c:2799 +msgid "Vim: Error: This version of Vim does not run in a Cygwin terminal\n" +msgstr "" + +#: ../main.c:2804 +msgid "Vim: Warning: Output is not to a terminal\n" +msgstr "Vim: Varning: Utmatning är inte till en terminal\n" + +#: ../main.c:2806 +msgid "Vim: Warning: Input is not from a terminal\n" +msgstr "Vim: Varning: Inmatning är inte från en terminal\n" + +#. just in case.. +#: ../main.c:3137 +msgid "pre-vimrc command line" +msgstr "pre-vimrc kommandorad" + +#: ../main.c:3483 +msgid "" +"\n" +"More info with: \"vim -h\"\n" +msgstr "" +"\n" +"Mer info med: \"vim -h\"\n" + +#: ../main.c:3515 +msgid "[file ..] edit specified file(s)" +msgstr "[fil ..] redigera angivna fil(er)" + +#: ../main.c:3516 +msgid "- read text from stdin" +msgstr "- läs text från standard in" + +#: ../main.c:3517 +msgid "-t tag edit file where tag is defined" +msgstr "-t tagg redigera fil där tagg är definierad" + +#: ../main.c:3519 +msgid "-q [errorfile] edit file with first error" +msgstr "-q [felfil] redigera fil med första fel" + +#: ../main.c:3529 +msgid "" +"\n" +"\n" +"Usage:" +msgstr "" +"\n" +"\n" +"användning:" + +#: ../main.c:3532 +msgid " vim [arguments] " +msgstr " vim [argument] " + +#: ../main.c:3536 +msgid "" +"\n" +" or:" +msgstr "" +"\n" +" eller:" + +#: ../main.c:3539 +msgid "" +"\n" +"Where case is ignored prepend / to make flag upper case" +msgstr "" +"\n" +"Där storlek ignoreras börja med / för att göra flagga versal" + +#: ../main.c:3542 +msgid "" +"\n" +"\n" +"Arguments:\n" +msgstr "" +"\n" +"\n" +"Argument:\n" + +#: ../main.c:3543 +msgid "--\t\t\tOnly file names after this" +msgstr "--\t\t\tBara filnamn efter det här" + +#: ../main.c:3545 +msgid "--literal\t\tDon't expand wildcards" +msgstr "--literal\t\tExpandera inte jokertecken" + +#: ../main.c:3548 +msgid "-register\t\tRegister this gvim for OLE" +msgstr "-register\t\tRegistrera gvim för OLE" + +#: ../main.c:3549 +msgid "-unregister\t\tUnregister gvim for OLE" +msgstr "-unregister\t\tAvregistrera gvim för OLE" + +#: ../main.c:3552 +msgid "-g\t\t\tRun using GUI (like \"gvim\")" +msgstr "-g\t\t\tKör som GUI (som \"gvim\")" + +#: ../main.c:3553 +msgid "-f or --nofork\tForeground: Don't fork when starting GUI" +msgstr "-f eller --nofork\tFörgrund: Grena inte vid start av GUI" + +#: ../main.c:3555 +msgid "-v\t\t\tVi mode (like \"vi\")" +msgstr "-v\t\t\tVi-läge (som \"vi\")" + +#: ../main.c:3556 +msgid "-e\t\t\tEx mode (like \"ex\")" +msgstr "-e\t\t\tEx-läge (som \"ex\")" + +#: ../main.c:3557 +msgid "-E\t\t\tImproved Ex mode" +msgstr "" + +#: ../main.c:3558 +msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")" +msgstr "-s\t\t\tTyst (batch) läge (bara för \"ex\")" + +#: ../main.c:3560 +msgid "-d\t\t\tDiff mode (like \"vimdiff\")" +msgstr "-d\t\t\tDiff-läge (som \"vimdiff\")" + +#: ../main.c:3562 +msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" +msgstr "-y\t\t\tLätt läge (som \"evim\", lägeslös)" + +#: ../main.c:3563 +msgid "-R\t\t\tReadonly mode (like \"view\")" +msgstr "-R\t\t\tSkrivskyddat läge (som \"view\")" + +#: ../main.c:3564 +msgid "-Z\t\t\tRestricted mode (like \"rvim\")" +msgstr "-Z\t\t\tBegränsat läge (som \"rvim\")" + +#: ../main.c:3565 +msgid "-m\t\t\tModifications (writing files) not allowed" +msgstr "-m\t\t\tModifieringar (skriva filer) inte tillåtet" + +#: ../main.c:3566 +msgid "-M\t\t\tModifications in text not allowed" +msgstr "-M\t\t\tModifieringar i text inte tillåtet" + +#: ../main.c:3567 +msgid "-b\t\t\tBinary mode" +msgstr "-b\t\t\tBinärläge" + +#: ../main.c:3568 +msgid "-l\t\t\tLisp mode" +msgstr "-l\t\t\tLisp-läge" + +#: ../main.c:3569 +msgid "-C\t\t\tCompatible with Vi: 'compatible'" +msgstr "-C\t\t\tKompatibelt med Vi: 'compatible'" + +#: ../main.c:3570 +msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'" +msgstr "-N\t\t\tInte fullt Vi-kompatibel: 'nocompatible'" + +#: ../main.c:3571 +msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]" +msgstr "-V[N][fnamn]\t\tVar mångordig [nivå N] [logga meddelanden till fnamn]" + +#: ../main.c:3573 +msgid "-D\t\t\tDebugging mode" +msgstr "-D\t\t\tFelsökningsläge" + +#: ../main.c:3575 +msgid "-n\t\t\tNo swap file, use memory only" +msgstr "-n\t\t\tIngen växlingsfil, använd endast minnet" + +#: ../main.c:3576 +msgid "-r\t\t\tList swap files and exit" +msgstr "-r\t\t\tLista växlingsfiler och avsluta" + +#: ../main.c:3577 +msgid "-r (with file name)\tRecover crashed session" +msgstr "-r (med filnamn)\tÅterskapa kraschad session" + +#: ../main.c:3578 +msgid "-L\t\t\tSame as -r" +msgstr "-L\t\t\tSamma som -r" + +#: ../main.c:3580 +msgid "-f\t\t\tDon't use newcli to open window" +msgstr "-f\t\t\tAnvända inte newcli för att öppna fönster" + +#: ../main.c:3581 +msgid "-dev \t\tUse for I/O" +msgstr "-dev \t\tAnvänd för I/O" + +#: ../main.c:3584 +msgid "-A\t\t\tStart in Arabic mode" +msgstr "-A\t\t\tStarta i arabiskt läge" + +#: ../main.c:3587 +msgid "-H\t\t\tStart in Hebrew mode" +msgstr "-H\t\t\tStarta i hebreiskt läge" + +#: ../main.c:3589 +msgid "-T \tSet terminal type to " +msgstr "-T \tStäll in terminaltyp till " + +#: ../main.c:3590 +msgid "--not-a-term\t\tSkip warning for input/output not being a terminal" +msgstr "" + +#: ../main.c:3592 +msgid "--gui-dialog-file {fname} For testing: write dialog text" +msgstr "" + +#: ../main.c:3594 +msgid "--ttyfail\t\tExit if input or output is not a terminal" +msgstr "" + +#: ../main.c:3595 +msgid "-u \t\tUse instead of any .vimrc" +msgstr "-u \t\tAnvänd istället för någon .vimrc" + +#: ../main.c:3597 +msgid "-U \t\tUse instead of any .gvimrc" +msgstr "-U \t\tAnvänd istället för någon .gvimrc" + +#: ../main.c:3599 +msgid "--noplugin\t\tDon't load plugin scripts" +msgstr "--noplugin\t\tLäs inte in insticksskript" + +#: ../main.c:3600 +msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" +msgstr "-p[N]\t\tÖppna N flikar (standard: en för varje fil)" + +#: ../main.c:3601 +msgid "-o[N]\t\tOpen N windows (default: one for each file)" +msgstr "-o[N]\t\tÖppna N fönster (standard: ett för varje fil)" + +#: ../main.c:3602 +msgid "-O[N]\t\tLike -o but split vertically" +msgstr "-O[N]\t\tSom -o men dela vertikalt" + +#: ../main.c:3603 +msgid "+\t\t\tStart at end of file" +msgstr "+\t\t\tStarta vid slut av fil" + +#: ../main.c:3604 +msgid "+\t\tStart at line " +msgstr "+\t\tStarta på rad " + +#: ../main.c:3605 +msgid "--cmd \tExecute before loading any vimrc file" +msgstr "--cmd \tKör före inläsning av någon vimrc fil" + +#: ../main.c:3606 +msgid "-c \t\tExecute after loading the first file" +msgstr "-c \tKör efter inläsning av den första filen" + +#: ../main.c:3607 +msgid "-S \t\tSource file after loading the first file" +msgstr "-S \t\tKör fil efter inläsning av den första filen" + +#: ../main.c:3608 +msgid "-s \tRead Normal mode commands from file " +msgstr "-s \tLäs Normallägeskommandon från fil " + +#: ../main.c:3609 +msgid "-w \tAppend all typed commands to file " +msgstr "-w \tLägg till alla skrivna kommandon till fil " + +#: ../main.c:3610 +msgid "-W \tWrite all typed commands to file " +msgstr "-W \tSkriv alla skrivna kommandon till fil " + +#: ../main.c:3612 +msgid "-x\t\t\tEdit encrypted files" +msgstr "-x\t\t\tRedigera krypterade filer" + +#: ../main.c:3616 +msgid "-display \tConnect Vim to this particular X-server" +msgstr "-display \tAnslut Vim till just denna X-server" + +#: ../main.c:3618 +msgid "-X\t\t\tDo not connect to X server" +msgstr "-X\t\t\tAnslut inte till X server" + +#: ../main.c:3621 +msgid "--remote \tEdit in a Vim server if possible" +msgstr "--remote \tRedigera i en Vim-server om möjligt" + +#: ../main.c:3622 +msgid "--remote-silent Same, don't complain if there is no server" +msgstr "" +"--remote-silent \tSamma, klaga inte om det inte finns någon server" + +#: ../main.c:3623 +msgid "" +"--remote-wait As --remote but wait for files to have been edited" +msgstr "" +"--remote-wait \tSom --remote men vänta på att filer har blivit " +"redigerade" + +#: ../main.c:3624 +msgid "" +"--remote-wait-silent Same, don't complain if there is no server" +msgstr "" +"--remote-wait-silent \tSamma, klaga inte om det inte finns någon " +"server" + +#: ../main.c:3625 +#, fuzzy +msgid "" +"--remote-tab[-wait][-silent] As --remote but use tab page per file" +msgstr "--remote-tab Som --remote men öppna flik för varje fil" + +#: ../main.c:3626 +msgid "--remote-send \tSend to a Vim server and exit" +msgstr "" +"--remote-send \tSkicka till en Vim-server och avsluta" + +#: ../main.c:3627 +msgid "--remote-expr \tEvaluate in a Vim server and print result" +msgstr "" +"--remote-expr \tEvaluera i en Vim-server och skriv ut " +"resultatet" + +#: ../main.c:3628 +msgid "--serverlist\t\tList available Vim server names and exit" +msgstr "--serverlist\t\tLista tillgängliga Vim-servernamn och avsluta" + +#: ../main.c:3629 +msgid "--servername \tSend to/become the Vim server " +msgstr "--servername \tSkicka till/för att bli Vim-servern " + +#: ../main.c:3632 +msgid "--startuptime \tWrite startup timing messages to " +msgstr "" + +#: ../main.c:3635 +msgid "--log \t\tStart logging to early" +msgstr "" + +#: ../main.c:3638 +msgid "-i \t\tUse instead of .viminfo" +msgstr "-i \t\tAnvänd istället för .viminfo" + +#: ../main.c:3640 +msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo" +msgstr "" + +#: ../main.c:3641 +msgid "-h or --help\tPrint Help (this message) and exit" +msgstr "-h eller --help\tSkriv ut Hjälp (det här meddelandet) och avsluta" + +#: ../main.c:3642 +msgid "--version\t\tPrint version information and exit" +msgstr "--version\t\tSkriv ut versionsinformation och avsluta" + +#: ../main.c:3646 +msgid "" +"\n" +"Arguments recognised by gvim (Motif version):\n" +msgstr "" +"\n" +"Argument som stöds av gvim (Motif-version):\n" + +#: ../main.c:3648 +msgid "-display \tRun Vim on " +msgstr "-display \tKör Vim på " + +#: ../main.c:3649 ../main.c:3668 +msgid "-iconic\t\tStart Vim iconified" +msgstr "-iconic\t\tStarta Vim som ikon" + +#: ../main.c:3650 ../main.c:3664 +msgid "-background \tUse for the background (also: -bg)" +msgstr "-background \tAnvänd för bakgrunden (även: -bg)" + +#: ../main.c:3651 ../main.c:3665 +msgid "-foreground \tUse for normal text (also: -fg)" +msgstr "-foreground \tAnvänd för vanlig text (även: -fg)" + +#: ../main.c:3652 ../main.c:3666 +msgid "-font \t\tUse for normal text (also: -fn)" +msgstr "-font \t\tAnvänd för vanlig text (även: -fn)" + +#: ../main.c:3653 +msgid "-boldfont \tUse for bold text" +msgstr "­boldfont \tAnvänd för fet text" + +#: ../main.c:3654 +msgid "-italicfont \tUse for italic text" +msgstr "-italicfont \tAnvänd för kursiv text" + +#: ../main.c:3655 ../main.c:3667 +msgid "-geometry \tUse for initial geometry (also: -geom)" +msgstr "" +"-geometry \tAnvänd för inledande fönsterplacering (även: -geom)" + +#: ../main.c:3656 +msgid "-borderwidth \tUse a border width of (also: -bw)" +msgstr "-borderwidth \tAnvänd en rambredd med (även: -bw)" + +#: ../main.c:3657 +msgid "-scrollbarwidth Use a scrollbar width of (also: -sw)" +msgstr "" +"-scrollbarwidth Använd en rullningslistbredd på (även: -sw)" + +#: ../main.c:3658 ../main.c:3669 +msgid "-reverse\t\tUse reverse video (also: -rv)" +msgstr "-reverse\t\tAnvänd omvänd video (även: -rv)" + +#: ../main.c:3659 +msgid "+reverse\t\tDon't use reverse video (also: +rv)" +msgstr "+reverse\t\tAnvänd inte omvänd video (även: +rv)" + +#: ../main.c:3660 +msgid "-xrm \tSet the specified resource" +msgstr "-xrm \tStäll in den angivna tillgången" + +#: ../main.c:3663 +msgid "" +"\n" +"Arguments recognised by gvim (GTK+ version):\n" +msgstr "" +"\n" +"Argument igenkända av gvim (GTK+-version):\n" + +#: ../main.c:3670 +msgid "-display \tRun Vim on (also: --display)" +msgstr "-display \tKör Vim på (även: --display)" + +#: ../main.c:3671 +msgid "--role \tSet a unique role to identify the main window" +msgstr "--role \tStäll in en unik roll för att identifiera huvudfönstret" + +#: ../main.c:3672 +msgid "--socketid \tOpen Vim inside another GTK widget" +msgstr "--socketid \tÖppna Vim innanför en annan GTK-widget" + +#: ../main.c:3673 +msgid "--echo-wid\t\tMake gvim echo the Window ID on stdout" +msgstr "" + +#: ../main.c:3680 +msgid "-P \tOpen Vim inside parent application" +msgstr "-P \tÖppna Vim inuti förälderapplikation" + +#: ../main.c:3681 +#, fuzzy +msgid "--windowid \tOpen Vim inside another win32 widget" +msgstr "--socketid \tÖppna Vim innanför en annan GTK-widget" + +#: ../map.c:320 +msgid "Seen modifyOtherKeys: true\n" +msgstr "" + +#: ../map.c:324 ../map.c:342 ../message.c:2813 ../os_mswin.c:1568 +msgid "Unknown" +msgstr "Okänd" + +#: ../map.c:328 ../map.c:346 +msgid "Off" +msgstr "" + +#: ../map.c:329 ../map.c:347 +msgid "On" +msgstr "" + +#: ../map.c:330 ../map.c:348 +msgid "Disabled" +msgstr "" + +#: ../map.c:331 ../map.c:349 +msgid "Cleared" +msgstr "" + +#: ../map.c:336 +#, c-format +msgid "modifyOtherKeys detected: %s\n" +msgstr "" + +#: ../map.c:354 +#, c-format +msgid "Kitty keyboard protocol: %s\n" +msgstr "" + +#: ../map.c:929 +msgid "No abbreviation found" +msgstr "Ingen förkortning hittades" + +#: ../map.c:931 +msgid "No mapping found" +msgstr "Ingen mappning hittades" + +#: ../mark.c:774 +msgid "No marks set" +msgstr "Inga märken satta" + +#. Highlight title +#: ../mark.c:794 +msgid "" +"\n" +"mark line col file/text" +msgstr "" +"\n" +"märke rad kol fil/text" + +#. Highlight title +#: ../mark.c:911 +msgid "" +"\n" +" jump line col file/text" +msgstr "" +"\n" +" hopp rad kol fil/text" + +#. Highlight title +#: ../mark.c:972 +msgid "" +"\n" +"change line col text" +msgstr "" +"\n" +"ändring rad kol text" + +#: ../memline.c:1248 +msgid "Enter number of swap file to use (0 to quit): " +msgstr "Ange nummer på växelfil att använda (0 för att avsluta): " + +#: ../memline.c:1317 +msgid "Unable to read block 0 from " +msgstr "Kunde inte läsa block 0 från " + +#: ../memline.c:1319 +msgid "" +"\n" +"Maybe no changes were made or Vim did not update the swap file." +msgstr "" +"\n" +"Kanske gjordes inte några förändringar eller så uppdaterade inte Vim " +"växlingsfilen." + +#: ../memline.c:1329 ../memline.c:1346 +msgid " cannot be used with this version of Vim.\n" +msgstr " kan inte användas med den här versionen av Vim.\n" + +#: ../memline.c:1331 +msgid "Use Vim version 3.0.\n" +msgstr "Använd Vim version 3.0.\n" + +#: ../memline.c:1350 +msgid " cannot be used on this computer.\n" +msgstr " kan inte användas på den här datorn.\n" + +#: ../memline.c:1352 +msgid "The file was created on " +msgstr "Filen skapades på " + +#: ../memline.c:1356 +msgid "" +",\n" +"or the file has been damaged." +msgstr "" +",\n" +"eller så har filen blivit skadad." + +#: ../memline.c:1389 +msgid " has been damaged (page size is smaller than minimum value).\n" +msgstr " har skadats (sid-storlek är mindre än minimumvärdet).\n" + +#: ../memline.c:1421 +#, c-format +msgid "Using swap file \"%s\"" +msgstr "Använder växlingsfil \"%s\"" + +#: ../memline.c:1427 +#, c-format +msgid "Original file \"%s\"" +msgstr "Orginalfil \"%s\"" + +#: ../memline.c:1484 +#, fuzzy, c-format +msgid "Swap file is encrypted: \"%s\"" +msgstr "Växlingsfiler hittade:" + +#: ../memline.c:1485 +msgid "" +"\n" +"If you entered a new crypt key but did not write the text file," +msgstr "" + +#: ../memline.c:1486 +#, fuzzy +msgid "" +"\n" +"enter the new crypt key." +msgstr "Ange krypteringsnyckel: " + +#: ../memline.c:1487 +msgid "" +"\n" +"If you wrote the text file after changing the crypt key press enter" +msgstr "" + +#: ../memline.c:1488 +msgid "" +"\n" +"to use the same key for text file and swap file" +msgstr "" + +#: ../memline.c:1547 +msgid "???MANY LINES MISSING" +msgstr "???MÅNGA RADER SAKNAS" + +#: ../memline.c:1577 +msgid "???LINE COUNT WRONG" +msgstr "???RADANTAL FEL" + +#: ../memline.c:1584 +msgid "???EMPTY BLOCK" +msgstr "???TOMT BLOCK" + +#: ../memline.c:1610 +msgid "???LINES MISSING" +msgstr "???RADER SAKNAS" + +#: ../memline.c:1648 +msgid "???BLOCK MISSING" +msgstr "???BLOCK SAKNAS" + +#: ../memline.c:1663 +msgid "??? from here until ???END lines may be messed up" +msgstr "??? från här till ???SLUT kan rader vara tillstökade" + +#: ../memline.c:1678 +msgid "??? from here until ???END lines may have been inserted/deleted" +msgstr "??? från här till ???SLUT kan rader ha blivit infogade/borttagna" + +#: ../memline.c:1693 +msgid "??? lines may be missing" +msgstr "" + +#: ../memline.c:1717 +msgid "???END" +msgstr "??SLUT" + +#: ../memline.c:1788 +msgid "See \":help E312\" for more information." +msgstr "Se \":help E312\" för mer information." + +#: ../memline.c:1795 +msgid "Recovery completed. You should check if everything is OK." +msgstr "Återskapning klar. Du borde kontrollera om allting är OK." + +#: ../memline.c:1796 +msgid "" +"\n" +"(You might want to write out this file under another name\n" +msgstr "" +"\n" +"(Du kanske vill spara den här filen under ett annat namn\n" + +#: ../memline.c:1797 +#, fuzzy +msgid "and run diff with the original file to check for changes)" +msgstr "" +"och kör diff med orginalfilen för att kontrollera efter förändringar)\n" + +#: ../memline.c:1800 +msgid "Recovery completed. Buffer contents equals file contents." +msgstr "" + +#: ../memline.c:1801 +msgid "" +"\n" +"You may want to delete the .swp file now." +msgstr "" + +#. Warn there could be an active Vim on the same file, the user may +#. want to kill it. +#: ../memline.c:1807 +msgid "" +"\n" +"Note: process STILL RUNNING: " +msgstr "" + +#: ../memline.c:1817 +msgid "Using crypt key from swap file for the text file.\n" +msgstr "" + +#. use msg() to start the scrolling properly +#: ../memline.c:1899 +msgid "Swap files found:" +msgstr "Växlingsfiler hittade:" + +#: ../memline.c:2084 +msgid " In current directory:\n" +msgstr " I aktuell katalog:\n" + +#: ../memline.c:2086 +msgid " Using specified name:\n" +msgstr " Använder angivet namn:\n" + +#: ../memline.c:2090 +msgid " In directory " +msgstr " I katalog " + +#: ../memline.c:2108 +msgid " -- none --\n" +msgstr " -- inget --\n" + +#: ../memline.c:2242 +msgid " owned by: " +msgstr " ägd av: " + +#: ../memline.c:2244 +msgid " dated: " +msgstr " daterad: " + +#: ../memline.c:2248 ../memline.c:4791 +msgid " dated: " +msgstr " daterad: " + +#: ../memline.c:2264 +msgid " [from Vim version 3.0]" +msgstr " [från Vim version 3.0]" + +#: ../memline.c:2268 +msgid " [does not look like a Vim swap file]" +msgstr " [ser inte ut som en Vim-växlingsfil]" + +#: ../memline.c:2272 +msgid " file name: " +msgstr " filnamn: " + +#: ../memline.c:2278 +msgid "" +"\n" +" modified: " +msgstr "" +"\n" +" modifierad: " + +#: ../memline.c:2279 +msgid "YES" +msgstr "JA" + +#: ../memline.c:2279 +msgid "no" +msgstr "nej" + +#: ../memline.c:2283 +msgid "" +"\n" +" user name: " +msgstr "" +"\n" +" användarnamn: " + +#: ../memline.c:2290 +msgid " host name: " +msgstr " värdnamn: " + +#: ../memline.c:2292 +msgid "" +"\n" +" host name: " +msgstr "" +"\n" +" värdnamn: " + +#: ../memline.c:2298 +msgid "" +"\n" +" process ID: " +msgstr "" +"\n" +" process-ID: " + +#: ../memline.c:2303 +msgid " (STILL RUNNING)" +msgstr "" + +#: ../memline.c:2315 +msgid "" +"\n" +" [not usable with this version of Vim]" +msgstr "" +"\n" +" [inte användbar med den här versionen av Vim]" + +#: ../memline.c:2318 +msgid "" +"\n" +" [not usable on this computer]" +msgstr "" +"\n" +" [inte användbar på den här datorn]" + +#: ../memline.c:2323 +msgid " [cannot be read]" +msgstr " [kan inte läsas]" + +#: ../memline.c:2327 +msgid " [cannot be opened]" +msgstr " [kan inte öppnas]" + +#: ../memline.c:2625 +msgid "File preserved" +msgstr "Fil bevarad" + +#: ../memline.c:3373 +msgid "stack_idx should be 0" +msgstr "stack_idx ska vara 0" + +#: ../memline.c:3923 +msgid "deleted block 1?" +msgstr "tagit bort block 1?" + +#: ../memline.c:4437 +msgid "pe_line_count is zero" +msgstr "pe_line_count är noll" + +#: ../memline.c:4518 +msgid "Stack size increases" +msgstr "Stackstorlek ökar" + +#: ../memline.c:4778 +msgid "" +"\n" +"Found a swap file by the name \"" +msgstr "" +"\n" +"Hittade en växlingsfil med namnet \"" + +#: ../memline.c:4782 +msgid "While opening file \"" +msgstr "Vid öppning av fil \"" + +#: ../memline.c:4787 +#, fuzzy +msgid " CANNOT BE FOUND" +msgstr " INTE HITTADE" + +#: ../memline.c:4794 +msgid " NEWER than swap file!\n" +msgstr " NYARE än växelfil!\n" + +#. Some of these messages are long to allow translation to +#. other languages. +#: ../memline.c:4798 +#, fuzzy +msgid "" +"\n" +"(1) Another program may be editing the same file. If this is the case,\n" +" be careful not to end up with two different instances of the same\n" +" file when making changes. Quit, or continue with caution.\n" +msgstr "" +"\n" +"(1) Ett annat program kan redigera samma fil.\n" +" Om så är fallet, var försiktig så att det inte slutar med två\n" +" versioner av samma fil vid förändringar.\n" + +#: ../memline.c:4799 +#, fuzzy +msgid "(2) An edit session for this file crashed.\n" +msgstr "" +"\n" +"(2) En redigeringssession för den här filen kraschade.\n" + +#: ../memline.c:4800 +msgid " If this is the case, use \":recover\" or \"vim -r " +msgstr " Om så är fallet, använd \":recover\" eller \"vim -r " + +#: ../memline.c:4802 +msgid "" +"\"\n" +" to recover the changes (see \":help recovery\").\n" +msgstr "" +"\"\n" +" för att återskapa förändringarna (se \":help recovery\").\n" + +#: ../memline.c:4803 +msgid " If you did this already, delete the swap file \"" +msgstr " Om du redan har gjort det, ta bort växlingsfilen \"" + +#: ../memline.c:4805 +msgid "" +"\"\n" +" to avoid this message.\n" +msgstr "" +"\"\n" +" för att undvika det här meddelandet.\n" + +#: ../memline.c:5197 +msgid "Found a swap file that is not useful, deleting it" +msgstr "" + +#: ../memline.c:5247 ../memline.c:5254 +msgid "Swap file \"" +msgstr "Växlingsfil \"" + +#: ../memline.c:5251 ../memline.c:5256 +msgid "\" already exists!" +msgstr "\" existerar redan!" + +#: ../memline.c:5259 +msgid "VIM - ATTENTION" +msgstr "VIM - LYSTRING" + +#: ../memline.c:5261 +msgid "Swap file already exists!" +msgstr "Växlingsfil existerar redan!" + +#: ../memline.c:5265 +msgid "" +"&Open Read-Only\n" +"&Edit anyway\n" +"&Recover\n" +"&Quit\n" +"&Abort" +msgstr "" +"&Öppna skrivskyddad\n" +"&Redigera ändå\n" +"&Återskapa\n" +"&Avsluta\n" +"A&vbryt" + +#: ../memline.c:5267 +msgid "" +"&Open Read-Only\n" +"&Edit anyway\n" +"&Recover\n" +"&Delete it\n" +"&Quit\n" +"&Abort" +msgstr "" +"&Öppna skrivskyddad\n" +"&Redigera ändå\n" +"&Återskapa\n" +"&Ta bort den\n" +"&Avsluta\n" +"A&vbryt" + +#. list the matching menu mappings +#: ../menu.c:1179 +msgid "" +"\n" +"--- Menus ---" +msgstr "" +"\n" +"--- Menyer ---" + +#: ../menu.c:2287 +msgid "Tear off this menu" +msgstr "Ta loss den här menyn" + +#: ../message.c:496 +#, fuzzy, c-format +msgid "Error detected while compiling %s:" +msgstr "Fel upptäcktes vid bearbetning av %s:" + +#: ../message.c:499 +#, c-format +msgid "Error detected while processing %s:" +msgstr "Fel upptäcktes vid bearbetning av %s:" + +#: ../message.c:525 +#, c-format +msgid "line %4ld:" +msgstr "rad %4ld:" + +#. Translator: Please replace the name and email address +#. with the appropriate text for your translation. +#: ../message.c:1205 +msgid "Messages maintainer: The Vim Project" +msgstr "Meddelandeansvarig: Johan Svedberg " + +#: ../message.c:1504 +msgid "Interrupt: " +msgstr "Avbrott: " + +#: ../message.c:1506 +msgid "Press ENTER or type command to continue" +msgstr "Tryck RETUR eller skriv kommando för att fortsätta" + +#: ../message.c:2820 +#, c-format +msgid "%s line %ld" +msgstr "%s rad %ld" + +#: ../message.c:3720 +msgid "-- More --" +msgstr "-- Mer --" + +#: ../message.c:3726 +msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit " +msgstr " BLANKSTEG/d/j: skärm/sida/rad ned, b/u/k: upp, q: quit " + +#: ../message.c:4170 +msgid "W23: Clipboard register not available, using register 0" +msgstr "" + +#: ../message.c:4172 +msgid "W24: Clipboard register not available. See :h W24" +msgstr "" + +#: ../message.c:4547 ../message.c:4562 +msgid "Question" +msgstr "Fråga" + +#: ../message.c:4549 +msgid "" +"&Yes\n" +"&No" +msgstr "" +"&Ja\n" +"&Nej" + +#: ../message.c:4582 +msgid "" +"&Yes\n" +"&No\n" +"Save &All\n" +"&Discard All\n" +"&Cancel" +msgstr "" +"&Ja\n" +"&Nej\n" +"&Spara &alla\n" +"&Kasta bort alla\n" +"&Avbryt" + +#: ../misc1.c:1055 +#, fuzzy +msgid "Type number and or click with the mouse (q or empty cancels): " +msgstr "Skriv siffra eller klicka med musen ( avbryter): " + +#: ../misc1.c:1057 +#, fuzzy +msgid "Type number and (q or empty cancels): " +msgstr "Välj siffra ( avbryter): " + +#: ../misc1.c:1112 +#, fuzzy, c-format +msgid "%ld more line" +msgid_plural "%ld more lines" +msgstr[0] "%ld rad till" +msgstr[1] "%ld rad till" + +#: ../misc1.c:1115 +#, fuzzy, c-format +msgid "%ld line less" +msgid_plural "%ld fewer lines" +msgstr[0] "1 rad mindre" +msgstr[1] "1 rad mindre" + +#: ../misc1.c:1117 +msgid " (Interrupted)" +msgstr " (Avbruten)" + +#: ../misc1.c:1202 +msgid "Beep!" +msgstr "Piip!" + +#: ../misc2.c:1833 +#, c-format +msgid "Calling shell to execute: \"%s\"" +msgstr "Anropar skal att köra: \"%s\"" + +#: ../normal.c:1100 +msgid "Warning: terminal cannot highlight" +msgstr "Varning: terminal kan inte framhäva" + +#: ../normal.c:6859 +msgid "Type :qa! and press to abandon all changes and exit Vim" +msgstr "" + +#: ../normal.c:6874 +#, fuzzy +msgid "Type :qa and press to exit Vim" +msgstr "skriv :q för att avsluta Vim " + +#: ../ops.c:200 +#, fuzzy, c-format +msgid "%ld line %sed %d time" +msgid_plural "%ld line %sed %d times" +msgstr[0] "%ld rader %sade %d gånger" +msgstr[1] "%ld rader %sade %d gånger" + +#: ../ops.c:202 +#, fuzzy, c-format +msgid "%ld lines %sed %d time" +msgid_plural "%ld lines %sed %d times" +msgstr[0] "%ld rader %sade %d gånger" +msgstr[1] "%ld rader %sade %d gånger" + +#. must display the prompt +#: ../ops.c:911 +msgid "cannot yank; delete anyway" +msgstr "kan inte kopiera; ta bort ändå" + +#: ../ops.c:1542 +#, fuzzy, c-format +msgid "%ld line changed" +msgid_plural "%ld lines changed" +msgstr[0] "%ld rader ändrade" +msgstr[1] "%ld rader ändrade" + +#: ../ops.c:2779 +#, fuzzy, c-format +msgid "%d line changed" +msgid_plural "%d lines changed" +msgstr[0] "%ld rader ändrade" +msgstr[1] "%ld rader ändrade" + +#: ../ops.c:3493 +#, c-format +msgid "%ld Cols; " +msgstr "%ld kolumner; " + +#: ../ops.c:3502 +#, fuzzy, c-format +msgid "Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Bytes" +msgstr "Markerade %s%ld av %ld rader; %ld av %ld ord; %ld av %ld bitar" + +#: ../ops.c:3511 +#, fuzzy, c-format +msgid "" +"Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Chars; %lld of " +"%lld Bytes" +msgstr "" +"Markerade %s%ld av %ld rader; %ld av %ld ord; %ld av %ld tecken; %ld av %ld " +"bitar" + +#: ../ops.c:3533 +#, fuzzy, c-format +msgid "Col %s of %s; Line %ld of %ld; Word %lld of %lld; Byte %lld of %lld" +msgstr "Kol %s av %s; rad %ld av %ld; ord %ld av %ld; bit %ld av %ld" + +#: ../ops.c:3541 +#, fuzzy, c-format +msgid "" +"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte " +"%lld of %lld" +msgstr "" +"Kol %s av %s; rad %ld av %ld; ord %ld av %ld; tecken %ld av %ld; bit %ld av " +"%ld" + +#: ../ops.c:3557 +#, fuzzy, c-format +msgid "(+%lld for BOM)" +msgstr "(+%ld för BOM)" + +#: ../option.c:3292 +msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" +msgstr "W17: Arabiska kräver UTF-8, gör ':set encoding=utf-8'" + +#: ../option.c:5758 +msgid "" +"\n" +"--- Terminal codes ---" +msgstr "" +"\n" +"--- Terminalkoder ---" + +#: ../option.c:5760 +msgid "" +"\n" +"--- Global option values ---" +msgstr "" +"\n" +"--- Globala flaggvärden ---" + +#: ../option.c:5762 +msgid "" +"\n" +"--- Local option values ---" +msgstr "" +"\n" +"--- Lokala flaggvärden ---" + +#: ../option.c:5764 +msgid "" +"\n" +"--- Options ---" +msgstr "" +"\n" +"--- Flaggor ---" + +#: ../os_amiga.c:297 +msgid "cannot open " +msgstr "kan inte öppna " + +#: ../os_amiga.c:332 +msgid "VIM: Can't open window!\n" +msgstr "VIM: Kan inte öppna fönster!\n" + +#: ../os_amiga.c:359 +msgid "Need Amigados version 2.04 or later\n" +msgstr "Behöver Amigados version 2.04 eller senare\n" + +#: ../os_amiga.c:365 +#, c-format +msgid "Need %s version %ld\n" +msgstr "Behöver %s version %ld\n" + +#: ../os_amiga.c:438 +msgid "Cannot open NIL:\n" +msgstr "Kan inte öppna NIL:\n" + +#: ../os_amiga.c:456 +msgid "Cannot create " +msgstr "Kan inte skapa " + +#: ../os_amiga.c:993 +#, c-format +msgid "Vim exiting with %d\n" +msgstr "Vim avslutar med %d\n" + +#: ../os_amiga.c:1028 +msgid "cannot change console mode ?!\n" +msgstr "kan inte ändra konsoll-läge ?!\n" + +#: ../os_amiga.c:1143 +msgid "mch_get_shellsize: not a console??\n" +msgstr "mch_get_shellsize: inte en konsoll??\n" + +#: ../os_amiga.c:1342 ../os_amiga.c:1432 +msgid "Cannot execute " +msgstr "Kan inte köra " + +#: ../os_amiga.c:1345 ../os_amiga.c:1442 +msgid "shell " +msgstr "skal " + +#: ../os_amiga.c:1365 ../os_amiga.c:1467 +msgid " returned\n" +msgstr " returnerade\n" + +#: ../os_amiga.c:1631 +msgid "ANCHOR_BUF_SIZE too small." +msgstr "ANCHOR_BUF_SIZE för liten." + +#: ../os_amiga.c:1635 +msgid "I/O ERROR" +msgstr "I/O-FEL" + +#: ../os_mswin.c:633 +msgid "Message" +msgstr "Meddelande" + +#: ../os_mswin.c:1487 +#, c-format +msgid "to %s on %s" +msgstr "till %s på %s" + +#: ../os_mswin.c:1589 +#, c-format +msgid "Printing '%s'" +msgstr "Skriver ut '%s'" + +#. Default font name for current language on MS-Windows. +#. If not translated, falls back to "Consolas". +#. This must be a fixed-pitch font. +#: ../os_mswin.c:3035 +msgid "DefaultFontNameForWindows" +msgstr "" + +#: ../os_unix.c:1694 +#, c-format +msgid "Opening the X display took %ld msec" +msgstr "Öppning av X-display tog %ld ms" + +#: ../os_unix.c:1713 +msgid "" +"\n" +"Vim: Got X error\n" +msgstr "" +"\n" +"Vim: Fick X-error\n" + +#: ../os_unix.c:1845 +#, fuzzy, c-format +msgid "restoring display %s" +msgstr "Testning av X-displayen misslyckades" + +#: ../os_unix.c:1876 +msgid "Testing the X display failed" +msgstr "Testning av X-displayen misslyckades" + +#: ../os_unix.c:2018 +msgid "Opening the X display timed out" +msgstr "Öppning av X-displayen tog för lång tid" + +#: ../os_unix.c:3002 ../os_unix.c:3009 +msgid "" +"\n" +"Could not get security context for " +msgstr "" + +#: ../os_unix.c:3019 +msgid "" +"\n" +"Could not set security context for " +msgstr "" + +#: ../os_unix.c:3072 +#, c-format +msgid "Could not set security context %s for %s" +msgstr "" + +#: ../os_unix.c:3092 +#, c-format +msgid "Could not get security context %s for %s. Removing it!" +msgstr "" + +#: ../os_unix.c:4858 +msgid "" +"\n" +"Cannot execute shell sh\n" +msgstr "" +"\n" +"Kan inte köra skal sh\n" + +#: ../os_unix.c:4861 ../os_unix.c:5695 +msgid "" +"\n" +"shell returned " +msgstr "" +"\n" +"skal returnerade " + +#: ../os_unix.c:4963 ../os_win32.c:5055 +msgid "" +"\n" +"Cannot create pipes\n" +msgstr "" +"\n" +"Kan inte skapa rör\n" + +#: ../os_unix.c:4978 ../os_unix.c:5229 +msgid "" +"\n" +"Cannot fork\n" +msgstr "" +"\n" +"Kan inte grena\n" + +#: ../os_unix.c:5689 +msgid "" +"\n" +"Cannot execute shell " +msgstr "" +"\n" +"Kan inte köra skal " + +#: ../os_unix.c:5702 +msgid "" +"\n" +"Command terminated\n" +msgstr "" +"\n" +"Kommando avslutades\n" + +#: ../os_unix.c:6575 ../os_unix.c:6748 ../os_unix.c:8475 +msgid "XSMP lost ICE connection" +msgstr "XSMP tappade ICE-anslutning" + +#: ../os_unix.c:7493 +#, fuzzy, c-format +msgid "Could not load gpm library: %s" +msgstr "E370: Kunde inte läsa in bibliotek %s" + +#: ../os_unix.c:7862 ../os_unix.c:7965 +#, c-format +msgid "dlerror = \"%s\"" +msgstr "dlfel = \"%s\"" + +#: ../os_unix.c:8049 +msgid "Opening the X display failed" +msgstr "Öppning av X-displayen misslyckades" + +#: ../os_unix.c:8386 +msgid "XSMP handling save-yourself request" +msgstr "XSMP hanterar spara-själv-förfrågan" + +#: ../os_unix.c:8498 +msgid "XSMP opening connection" +msgstr "XSMP öppnar anslutning" + +#: ../os_unix.c:8517 +msgid "XSMP ICE connection watch failed" +msgstr "XSMP ICE-anslutning övervakning misslyckades" + +#: ../os_unix.c:8544 +#, c-format +msgid "XSMP SmcOpenConnection failed: %s" +msgstr "XSMP SmcOpenConnection misslyckades: %s" + +#: ../os_vms_mms.c:60 +msgid "At line" +msgstr "På rad" + +#: ../os_win32.c:4381 +#, c-format +msgid "Vim: Caught %s event\n" +msgstr "Vim: Fångade %s-händelse\n" + +#: ../os_win32.c:4383 +msgid "close" +msgstr "stäng" + +#: ../os_win32.c:4385 +msgid "logoff" +msgstr "logga ut" + +#: ../os_win32.c:4386 +msgid "shutdown" +msgstr "stäng av" + +#: ../os_win32.c:5675 +msgid "" +"VIMRUN.EXE not found in your $PATH.\n" +"External commands will not pause after completion.\n" +"See :help win32-vimrun for more information." +msgstr "" +"VIMRUN.EXE hittades inte i din $PATH.\n" +"Externa kommandon vill inte stå stilla efter färdigställning.\n" +"Se :help win32-vimrun för mer information." + +#: ../os_win32.c:5678 +msgid "Vim Warning" +msgstr "Vim-varning" + +#: ../os_win32.c:5733 +#, c-format +msgid "shell returned %d" +msgstr "skal returnerade %d" + +#: ../quickfix.c:3438 +#, c-format +msgid "(%d of %d)%s%s: " +msgstr "(%d av %d)%s%s: " + +#: ../quickfix.c:3440 +msgid " (line deleted)" +msgstr " (rad borttagen)" + +#: ../quickfix.c:3943 +#, fuzzy, c-format +msgid "%serror list %d of %d; %d errors " +msgstr "fellista %d av %d; %d fel" + +#: ../quickfix.c:4039 +msgid "No entries" +msgstr "" + +#: ../quickfix.c:5976 +#, fuzzy +msgid "Error file" +msgstr "Fel" + +#: ../quickfix.c:6480 +#, c-format +msgid "Cannot open file \"%s\"" +msgstr "Kan inte öppna fil \"%s\"" + +#: ../quickfix.c:8032 +msgid "cannot have both a list and a \"what\" argument" +msgstr "" + +#: ../regexp.c:3038 +msgid "Switching to backtracking RE engine for pattern: " +msgstr "" + +#: ../regexp_bt.c:3321 +msgid "External submatches:\n" +msgstr "Externa underträffar:\n" + +#: ../regexp_nfa.c:2804 +msgid "Could not open temporary log file for writing, displaying on stderr... " +msgstr "" + +#: ../register.c:1348 +#, c-format +msgid " into \"%c" +msgstr "" + +#: ../register.c:1354 +#, fuzzy, c-format +msgid "block of %ld line yanked%s" +msgid_plural "block of %ld lines yanked%s" +msgstr[0] "block om %ld rader kopierade" +msgstr[1] "block om %ld rader kopierade" + +#: ../register.c:1360 +#, fuzzy, c-format +msgid "%ld line yanked%s" +msgid_plural "%ld lines yanked%s" +msgstr[0] "%ld rader kopierade" +msgstr[1] "%ld rader kopierade" + +#. Highlight title +#: ../register.c:2385 +msgid "" +"\n" +"Type Name Content" +msgstr "" + +#: ../screen.c:4105 +msgid " VREPLACE" +msgstr " VERSÄTT" + +#: ../screen.c:4107 +msgid " REPLACE" +msgstr " ERSÄTT" + +#: ../screen.c:4112 +msgid " REVERSE" +msgstr " OMVÄND" + +#: ../screen.c:4114 +msgid " INSERT" +msgstr " INFOGA" + +#: ../screen.c:4118 +msgid " (insert)" +msgstr " (infoga)" + +#: ../screen.c:4120 +msgid " (replace)" +msgstr " (ersätt)" + +#: ../screen.c:4122 +msgid " (vreplace)" +msgstr " (versätt)" + +#: ../screen.c:4125 +msgid " Hebrew" +msgstr " Hebreiska" + +#: ../screen.c:4132 +msgid " Arabic" +msgstr " Arabiska" + +#: ../screen.c:4141 +msgid " (paste)" +msgstr " (klistra in)" + +#: ../screen.c:4153 +msgid " VISUAL" +msgstr " VISUELL" + +#: ../screen.c:4154 +msgid " VISUAL LINE" +msgstr " VISUELL RAD" + +#: ../screen.c:4155 +msgid " VISUAL BLOCK" +msgstr " VISUELLT BLOCK" + +#: ../screen.c:4156 +msgid " SELECT" +msgstr " MARKERA" + +#: ../screen.c:4157 +msgid " SELECT LINE" +msgstr " MARKERA RAD" + +#: ../screen.c:4158 +msgid " SELECT BLOCK" +msgstr " MARKERA BLOCK" + +#: ../screen.c:4255 +msgid "recording" +msgstr "spelar in" + +#: ../scriptfile.c:511 +#, fuzzy, c-format +msgid "Searching for \"%s\" under \"%s\" in \"%s\"" +msgstr "Söker efter \"%s\" i \"%s\"" + +#: ../scriptfile.c:514 +#, c-format +msgid "Searching for \"%s\" in \"%s\"" +msgstr "Söker efter \"%s\" i \"%s\"" + +#: ../scriptfile.c:563 +#, c-format +msgid "Searching for \"%s\"" +msgstr "Söker efter \"%s\"" + +#: ../scriptfile.c:595 +#, fuzzy, c-format +msgid "not found in '%s': \"%s\"" +msgstr "hittades inte i 'runtimepath': \"%s\"" + +#: ../scriptfile.c:1313 +msgid "Source Vim script" +msgstr "Läs Vim-skript" + +#: ../scriptfile.c:1540 +#, c-format +msgid "Cannot source a directory: \"%s\"" +msgstr "Kan inte läsa en katalog: \"%s\"" + +#: ../scriptfile.c:1615 +#, c-format +msgid "could not source \"%s\"" +msgstr "kunde inte läsa \"%s\"" + +#: ../scriptfile.c:1617 +#, c-format +msgid "line %ld: could not source \"%s\"" +msgstr "rad %ld: kunde inte läsa \"%s\"" + +#: ../scriptfile.c:1631 +#, c-format +msgid "sourcing \"%s\"" +msgstr "läser \"%s\"" + +#: ../scriptfile.c:1633 +#, c-format +msgid "line %ld: sourcing \"%s\"" +msgstr "rad %ld: läser \"%s\"" + +#: ../scriptfile.c:1835 +#, c-format +msgid "finished sourcing %s" +msgstr "läste klart %s" + +#: ../scriptfile.c:1837 ../userfunc.c:3293 +#, c-format +msgid "continuing in %s" +msgstr "fortsätter i %s" + +#: ../scriptfile.c:2037 +msgid "modeline" +msgstr "lägesrad" + +#: ../scriptfile.c:2039 +msgid "--cmd argument" +msgstr "--cmd argument" + +#: ../scriptfile.c:2041 +msgid "-c argument" +msgstr "-c argument" + +#: ../scriptfile.c:2043 +msgid "environment variable" +msgstr "miljövariabel" + +#: ../scriptfile.c:2045 +msgid "error handler" +msgstr "felhanterare" + +#: ../scriptfile.c:2047 +msgid "changed window size" +msgstr "" + +#: ../scriptfile.c:2320 +msgid "W15: Warning: Wrong line separator, ^M may be missing" +msgstr "W15: Varning: Fel radavskiljare, ^M kan saknas" + +#: ../search.c:3534 +msgid " (includes previously listed match)" +msgstr " (inkluderar tidigare listad träff)" + +#. cursor at status line +#: ../search.c:3553 +msgid "--- Included files " +msgstr "--- Inkluderade filer " + +#: ../search.c:3555 +msgid "not found " +msgstr "hittades inte " + +#: ../search.c:3556 +msgid "in path ---\n" +msgstr "i sökväg ---\n" + +#: ../search.c:3629 +msgid " (Already listed)" +msgstr " (Redan listade)" + +#: ../search.c:3631 +msgid " NOT FOUND" +msgstr " INTE HITTADE" + +#: ../search.c:3683 +#, c-format +msgid "Scanning included file: %s" +msgstr "Söker igenom inkluderad fil: %s" + +#: ../search.c:3690 +#, c-format +msgid "Searching included file %s" +msgstr "Söker igenom inkluderad fil %s" + +#: ../search.c:4054 +msgid "All included files were found" +msgstr "Alla inkluderade filer hittades" + +#: ../search.c:4056 +msgid "No included files" +msgstr "Inga inkluderade filer" + +#: ../session.c:1224 +msgid "Save View" +msgstr "Spara vy" + +#: ../session.c:1225 +msgid "Save Session" +msgstr "Spara session" + +#: ../session.c:1227 +msgid "Save Setup" +msgstr "Spara konfiguration" + +#: ../sign.c:311 +msgid "[Deleted]" +msgstr "[Borttagen]" + +#: ../sign.c:777 +msgid "" +"\n" +"--- Signs ---" +msgstr "" +"\n" +"--- Tecken ---" + +#: ../sign.c:785 +#, c-format +msgid "Signs for %s:" +msgstr "Tecken för %s:" + +#: ../sign.c:800 +#, c-format +msgid " group=%s" +msgstr "" + +#: ../sign.c:806 +#, fuzzy, c-format +msgid " line=%ld id=%d%s name=%s priority=%d" +msgstr " line=%ld id=%d namn=%s" + +#: ../sign.c:1951 +msgid " (NOT FOUND)" +msgstr " (INTE HITTADE)" + +#: ../sign.c:1953 +msgid " (not supported)" +msgstr " (stöds inte)" + +#: ../spell.c:1681 +#, fuzzy, c-format +msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\"" +msgstr "Varning: Kan inte hitta ordlista \"%s.%s.spl\" eller \"%s.ascii.spl\"" + +#: ../spell.c:1683 +#, c-format +msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" +msgstr "Varning: Kan inte hitta ordlista \"%s.%s.spl\" eller \"%s.ascii.spl\"" + +#. This is probably an error. Give a warning and +#. accept the words anyway. +#: ../spell.c:2211 +#, c-format +msgid "Warning: region %s not supported" +msgstr "Varning: region %s stöds inte" + +#: ../spellfile.c:325 +#, c-format +msgid "Trailing text in %s line %d: %s" +msgstr "Eftersläpande text i %s rad %d: %s" + +#: ../spellfile.c:326 +#, c-format +msgid "Affix name too long in %s line %d: %s" +msgstr "Affix-namn för långt i %s rad %d: %s" + +#: ../spellfile.c:327 +msgid "Compressing word tree..." +msgstr "Komprimerar ordträd..." + +#: ../spellfile.c:377 +#, c-format +msgid "Reading spell file \"%s\"" +msgstr "Läser stavningsfil \"%s\"" + +#: ../spellfile.c:2233 +#, c-format +msgid "Reading affix file %s..." +msgstr "Läser affix-fil %s..." + +#: ../spellfile.c:2280 ../spellfile.c:3568 +#, c-format +msgid "Conversion failure for word in %s line %d: %s" +msgstr "Konvertering misslyckades för ord i %s rad %d: %s" + +#: ../spellfile.c:2326 ../spellfile.c:4174 +#, c-format +msgid "Conversion in %s not supported: from %s to %s" +msgstr "Konvertering i %s stöds inte: från %s till %s" + +#: ../spellfile.c:2340 +#, c-format +msgid "Invalid value for FLAG in %s line %d: %s" +msgstr "Ogiltigt värde för FLAG i %s rad %d: %s" + +#: ../spellfile.c:2353 +#, c-format +msgid "FLAG after using flags in %s line %d: %s" +msgstr "FLAG efter användning av flags i %s rad %d: %s" + +#: ../spellfile.c:2444 +#, c-format +msgid "" +"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line " +"%d" +msgstr "" +"Definiera COMPOUNDFORBIDFLAG efter PFX-post kan ge fel resultat i %s rad %d" + +#: ../spellfile.c:2453 +#, c-format +msgid "" +"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line " +"%d" +msgstr "" +"Definiera COMPOUNDPERMITFLAG efter PFX-post kan ge fel resultat i %s rad %d" + +#: ../spellfile.c:2474 +#, fuzzy, c-format +msgid "Wrong COMPOUNDRULES value in %s line %d: %s" +msgstr "Fel COMPOUNDMIN-värde i %s rad %d: %s" + +#: ../spellfile.c:2505 +#, c-format +msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s" +msgstr "Fel COMPOUNDWORDMAX-värde i %s rad %d: %s" + +#: ../spellfile.c:2513 +#, c-format +msgid "Wrong COMPOUNDMIN value in %s line %d: %s" +msgstr "Fel COMPOUNDMIN-värde i %s rad %d: %s" + +#: ../spellfile.c:2521 +#, c-format +msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s" +msgstr "Fel COMPOUNDSYLMAX-värde i %s rad %d: %s" + +#: ../spellfile.c:2543 +#, c-format +msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s" +msgstr "Fel CHECKCOMPOUNDPATTERN-värde i %s rad %d: %s" + +#: ../spellfile.c:2617 +#, c-format +msgid "Different combining flag in continued affix block in %s line %d: %s" +msgstr "Annan kombinerande flagga i efterföljande affix-block i %s rad %d: %s" + +#: ../spellfile.c:2620 +#, c-format +msgid "Duplicate affix in %s line %d: %s" +msgstr "Duplicerad affix i %s rad %d: %s" + +#: ../spellfile.c:2642 +#, c-format +msgid "" +"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s " +"line %d: %s" +msgstr "" +"Affix också använd för BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST i " +"%s rad %d: %s" + +#: ../spellfile.c:2666 +#, c-format +msgid "Expected Y or N in %s line %d: %s" +msgstr "Förväntade Y eller N i %s rad %d: %s" + +#: ../spellfile.c:2752 +#, c-format +msgid "Broken condition in %s line %d: %s" +msgstr "Trasigt villkor i %s rad %d: %s" + +#: ../spellfile.c:2894 +#, c-format +msgid "Expected REP(SAL) count in %s line %d" +msgstr "Förväntade REP(SAL)-antal i %s rad %d" + +#: ../spellfile.c:2929 +#, c-format +msgid "Expected MAP count in %s line %d" +msgstr "Förväntade MAP-antal i %s rad %d" + +#: ../spellfile.c:2944 +#, c-format +msgid "Duplicate character in MAP in %s line %d" +msgstr "Duplicerat tecken i MAP i %s rad %d" + +#: ../spellfile.c:3001 +#, c-format +msgid "Unrecognized or duplicate item in %s line %d: %s" +msgstr "Okänd eller duplicerad post i %s rad %d: %s" + +#: ../spellfile.c:3025 +#, c-format +msgid "Missing FOL/LOW/UPP line in %s" +msgstr "Saknar FOL/LOW/UPP rad i %s" + +#: ../spellfile.c:3051 +msgid "COMPOUNDSYLMAX used without SYLLABLE" +msgstr "COMPOUNDSYLMAX använd utan SYLLABLE" + +#: ../spellfile.c:3069 +msgid "Too many postponed prefixes" +msgstr "För många uppskjutna prefix" + +#: ../spellfile.c:3071 +msgid "Too many compound flags" +msgstr "För många sammansatta flaggor" + +#: ../spellfile.c:3073 +msgid "Too many postponed prefixes and/or compound flags" +msgstr "För många uppskjutna prefix och/eller sammansatta flaggor" + +#: ../spellfile.c:3085 +#, c-format +msgid "Missing SOFO%s line in %s" +msgstr "Saknar SOFO%s rad i %s" + +#: ../spellfile.c:3088 +#, c-format +msgid "Both SAL and SOFO lines in %s" +msgstr "Både SAL och SOFO rader i %s" + +#: ../spellfile.c:3192 +#, c-format +msgid "Flag is not a number in %s line %d: %s" +msgstr "Flagga är inte ett nummer i %s rad %d: %s" + +#: ../spellfile.c:3195 +#, c-format +msgid "Illegal flag in %s line %d: %s" +msgstr "Ogiltig flagga i %s rad %d: %s" + +#: ../spellfile.c:3392 ../spellfile.c:3402 +#, c-format +msgid "%s value differs from what is used in another .aff file" +msgstr "%s värde skiljer sig från vad som används i en annan .aff-fil." + +#: ../spellfile.c:3531 +#, c-format +msgid "Reading dictionary file %s..." +msgstr "Läser ordboksfil %s..." + +#: ../spellfile.c:3612 +#, fuzzy, c-format +msgid "line %6d, word %6ld - %s" +msgstr "rad %6d, ord %6d - %s" + +#: ../spellfile.c:3637 +#, c-format +msgid "Duplicate word in %s line %d: %s" +msgstr "Duplicerat ord i %s rad %d: %s" + +#: ../spellfile.c:3640 +#, c-format +msgid "First duplicate word in %s line %d: %s" +msgstr "Första duplicerade ordet i %s rad %d: %s" + +#: ../spellfile.c:3695 +#, c-format +msgid "%d duplicate word(s) in %s" +msgstr "%d duplicerade ord i %s" + +#: ../spellfile.c:3697 +#, c-format +msgid "Ignored %d word(s) with non-ASCII characters in %s" +msgstr "Ignorerade %d ord med icke-ASCII tecken i %s" + +#: ../spellfile.c:4111 +#, c-format +msgid "Reading word file %s..." +msgstr "Läser ordfil %s..." + +#: ../spellfile.c:4141 +#, fuzzy, c-format +msgid "Conversion failure for word in %s line %ld: %s" +msgstr "Konvertering misslyckades för ord i %s rad %d: %s" + +#: ../spellfile.c:4159 +#, fuzzy, c-format +msgid "Duplicate /encoding= line ignored in %s line %ld: %s" +msgstr "Duplicerad /encoding=-rad ignorerad i %s rad %d: %s" + +#: ../spellfile.c:4162 +#, fuzzy, c-format +msgid "/encoding= line after word ignored in %s line %ld: %s" +msgstr "/encoding=-rad efter ord ignorerad i %s rad %d: %s" + +#: ../spellfile.c:4185 +#, fuzzy, c-format +msgid "Duplicate /regions= line ignored in %s line %ld: %s" +msgstr "Duplicerad /regions=-rad ignorerad i %s rad %d: %s" + +#: ../spellfile.c:4191 +#, fuzzy, c-format +msgid "Too many regions in %s line %ld: %s" +msgstr "För många regioner i %s rad %d: %s" + +#: ../spellfile.c:4205 +#, fuzzy, c-format +msgid "/ line ignored in %s line %ld: %s" +msgstr "/-rad ignorerad i %s rad %d: %s" + +#: ../spellfile.c:4235 +#, fuzzy, c-format +msgid "Invalid region nr in %s line %ld: %s" +msgstr "Ogiltigt regionsnr i %s rad %d: %s" + +#: ../spellfile.c:4243 +#, fuzzy, c-format +msgid "Unrecognized flags in %s line %ld: %s" +msgstr "Okända flaggot i %s rad %d: %s" + +#: ../spellfile.c:4273 +#, c-format +msgid "Ignored %d words with non-ASCII characters" +msgstr "Ignorerade %d ord med icke-ASCII tecken" + +#: ../spellfile.c:4719 +#, fuzzy, c-format +msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining" +msgstr "Komprimerade %d av %d noder; %d (%d%%) återstår" + +#: ../spellfile.c:5499 +msgid "Reading back spell file..." +msgstr "Läser tillbaka stavningsfil..." + +#. +#. * Go through the trie of good words, soundfold each word and add it to +#. * the soundfold trie. +#. +#: ../spellfile.c:5520 +msgid "Performing soundfolding..." +msgstr "Utför ljudvikning..." + +#: ../spellfile.c:5533 +#, c-format +msgid "Number of words after soundfolding: %ld" +msgstr "Antal ord efter ljudvikning: %ld" + +#: ../spellfile.c:5662 +#, c-format +msgid "Total number of words: %d" +msgstr "Totalt antal ord: %d" + +#: ../spellfile.c:5833 +#, c-format +msgid "Writing suggestion file %s..." +msgstr "Skriver förslagsfil %s..." + +#: ../spellfile.c:5894 ../spellfile.c:6122 +#, c-format +msgid "Estimated runtime memory use: %d bytes" +msgstr "Beräknat körtidsminne använt: %d byte" + +#: ../spellfile.c:6096 +msgid "Warning: both compounding and NOBREAK specified" +msgstr "Varning: både sammansättning och NOBREAK specifierad" + +#: ../spellfile.c:6115 +#, c-format +msgid "Writing spell file %s..." +msgstr "Skriver stavningsfil %s..." + +#: ../spellfile.c:6120 +msgid "Done!" +msgstr "Klar!" + +#: ../spellfile.c:6309 +#, fuzzy, c-format +msgid "Word '%.*s' removed from %s" +msgstr "Ord borttaget från %s" + +#: ../spellfile.c:6315 +#, fuzzy +msgid "Seek error in spellfile" +msgstr "E294: Sökfel i växelfilsläsning" + +#: ../spellfile.c:6362 +#, fuzzy, c-format +msgid "Word '%.*s' added to %s" +msgstr "Ord lagd till %s" + +#: ../spellsuggest.c:559 +msgid "Sorry, no suggestions" +msgstr "Tyvärr, inga föreslag" + +#: ../spellsuggest.c:563 +#, c-format +msgid "Sorry, only %ld suggestions" +msgstr "Tyvärr, bara %ld föreslag" + +#. for when 'cmdheight' > 1 +#. avoid more prompt +#: ../spellsuggest.c:578 +#, c-format +msgid "Change \"%.*s\" to:" +msgstr "Ändra \"%.*s\" till:" + +#: ../spellsuggest.c:620 +#, c-format +msgid " < \"%.*s\"" +msgstr " < \"%.*s\"" + +#: ../syntax.c:174 +msgid "No Syntax items defined for this buffer" +msgstr "Inga syntax-föremål definierade för den här bufferten" + +#: ../syntax.c:3185 +msgid "'redrawtime' exceeded, syntax highlighting disabled" +msgstr "" + +#: ../syntax.c:3451 +msgid "syntax iskeyword not set" +msgstr "" + +#: ../syntax.c:3830 +msgid "syncing on C-style comments" +msgstr "synkning av C-stil-kommentarer" + +#: ../syntax.c:3838 +msgid "no syncing" +msgstr "ingen synkning" + +#: ../syntax.c:3842 +#, fuzzy +msgid "syncing starts at the first line" +msgstr "synkning startar" + +#: ../syntax.c:3845 +msgid "syncing starts " +msgstr "synkning startar" + +#: ../syntax.c:3847 ../syntax.c:3928 +msgid " lines before top line" +msgstr " rader före topprad" + +#: ../syntax.c:3853 +msgid "" +"\n" +"--- Syntax sync items ---" +msgstr "" +"\n" +"--- Syntax-synkföremål ---" + +#: ../syntax.c:3858 +msgid "" +"\n" +"syncing on items" +msgstr "" +"\n" +"synkning av föremål" + +#: ../syntax.c:3864 +msgid "" +"\n" +"--- Syntax items ---" +msgstr "" +"\n" +"--- Syntax föremål ---" + +#: ../syntax.c:3913 +#, fuzzy +msgid "from the first line" +msgstr "Ord från annan rad" + +#: ../syntax.c:3918 +msgid "minimal " +msgstr "minimal " + +#: ../syntax.c:3925 +msgid "maximal " +msgstr "maximal " + +#: ../syntax.c:3938 +msgid "; match " +msgstr "; träff " + +#: ../syntax.c:3940 +msgid " line breaks" +msgstr " radbrytningar" + +#: ../syntax.c:6760 +msgid "" +" TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN" +msgstr "" + +#: ../tag.c:846 +#, c-format +msgid "File \"%s\" does not exist" +msgstr "Fil \"%s\" existerar inte" + +#. Give an indication of the number of matching tags +#: ../tag.c:858 +#, c-format +msgid "tag %d of %d%s" +msgstr "tagg %d av %d%s" + +#: ../tag.c:861 +msgid " or more" +msgstr " eller fler" + +#: ../tag.c:863 +msgid " Using tag with different case!" +msgstr " Använder tagg med annan storlek!" + +#: ../tag.c:983 +msgid " # pri kind tag" +msgstr " # pri-typ-tagg" + +#: ../tag.c:986 +msgid "file\n" +msgstr "fil\n" + +#. Highlight title +#: ../tag.c:1327 +msgid "" +"\n" +" # TO tag FROM line in file/text" +msgstr "" +"\n" +" # TILL tagg FRÅN LINJE i fil/text" + +#: ../tag.c:1994 +msgid "Ignoring long line in tags file" +msgstr "" + +#: ../tag.c:2889 +#, c-format +msgid "Before byte %ld" +msgstr "Före byte %ld" + +#: ../tag.c:2946 +#, c-format +msgid "Searching tags file %s" +msgstr "Söker tagg-fil %s" + +#: ../tag.c:4339 +#, fuzzy, c-format +msgid "Duplicate field name: %s" +msgstr "Duplicerad affix i %s rad %d: %s" + +#: ../term.c:1860 +msgid "' not known. Available builtin terminals are:" +msgstr "' inte känd. Tillgängliga inbyggda terminaler är:" + +#: ../term.c:1889 +msgid "defaulting to '" +msgstr "använder standard '" + +#. Highlight title +#: ../term.c:6970 +msgid "" +"\n" +"--- Terminal keys ---" +msgstr "" +"\n" +"--- Terminalnycklar ---" + +#: ../terminal.c:1816 +#, c-format +msgid "Kill job in \"%s\"?" +msgstr "" + +#: ../terminal.c:5039 +msgid "Terminal" +msgstr "" + +#: ../terminal.c:5041 +msgid "Terminal-finished" +msgstr "" + +#: ../terminal.c:5046 +msgid "active" +msgstr "" + +#: ../terminal.c:5048 +#, fuzzy +msgid "running" +msgstr "Varning" + +#: ../terminal.c:5050 +#, fuzzy +msgid "finished" +msgstr "Vim: Färdig.\n" + +#. Quoting "man strftime": +#. > If the length of the result string (including the terminating +#. > null byte) would exceed max bytes, then strftime() returns 0, +#. > and the contents of the array are undefined. +#: ../time.c:93 ../time.c:104 ../time.c:312 +msgid "(Invalid)" +msgstr "(Ogiltig)" + +#: ../time.c:97 +#, no-c-format +msgid "%a %b %d %H:%M:%S %Y" +msgstr "" + +#: ../time.c:1151 +#, fuzzy, c-format +msgid "%ld second ago" +msgid_plural "%ld seconds ago" +msgstr[0] "%ld sekunder sedan" +msgstr[1] "%ld sekunder sedan" + +#: ../ui.c:581 +msgid "new shell started\n" +msgstr "nytt skal startat\n" + +#: ../ui.c:1070 +msgid "Vim: Error reading input, exiting...\n" +msgstr "Vim: Fel vid läsning av inmatning, avslutar...\n" + +#. must display the prompt +#: ../undo.c:762 +msgid "No undo possible; continue anyway" +msgstr "Ingen ångring möjlig; fortsätter ändå" + +#: ../undo.c:1586 +msgid "Cannot write undo file in any directory in 'undodir'" +msgstr "" + +#: ../undo.c:1634 +#, c-format +msgid "Will not overwrite with undo file, cannot read: %s" +msgstr "" + +#: ../undo.c:1656 +#, c-format +msgid "Will not overwrite, this is not an undo file: %s" +msgstr "" + +#: ../undo.c:1673 +msgid "Skipping undo file write, nothing to undo" +msgstr "" + +#: ../undo.c:1688 +#, fuzzy, c-format +msgid "Writing undo file: %s" +msgstr "Skriver viminfo-fil \"%s\"" + +#: ../undo.c:1884 +#, c-format +msgid "Not reading undo file, owner differs: %s" +msgstr "" + +#: ../undo.c:1898 +#, fuzzy, c-format +msgid "Reading undo file: %s" +msgstr "Läser ordfil %s..." + +#: ../undo.c:1974 +msgid "File contents changed, cannot use undo info" +msgstr "" + +#: ../undo.c:2165 +#, fuzzy, c-format +msgid "Finished reading undo file %s" +msgstr "Läser ordfil %s..." + +#: ../undo.c:2269 ../undo.c:2538 +msgid "Already at oldest change" +msgstr "Redan vid äldsta ändring" + +#: ../undo.c:2284 ../undo.c:2540 +msgid "Already at newest change" +msgstr "Redan vid nyaste ändring" + +#: ../undo.c:3009 +msgid "more line" +msgstr "en rad till" + +#: ../undo.c:3011 +msgid "more lines" +msgstr "fler rader" + +#: ../undo.c:3013 +msgid "line less" +msgstr "en rad mindre" + +#: ../undo.c:3015 +msgid "fewer lines" +msgstr "färre rader" + +#: ../undo.c:3020 +msgid "change" +msgstr "ändring" + +#: ../undo.c:3022 +msgid "changes" +msgstr "ändringar" + +#: ../undo.c:3060 +#, c-format +msgid "%ld %s; %s #%ld %s" +msgstr "%ld %s; %s #%ld %s" + +#: ../undo.c:3063 +msgid "before" +msgstr "före" + +#: ../undo.c:3063 +msgid "after" +msgstr "efter" + +#: ../undo.c:3178 +msgid "Nothing to undo" +msgstr "Inget att ångra" + +#: ../undo.c:3186 +msgid "number changes when saved" +msgstr "" + +#: ../usercmd.c:574 +#, fuzzy +msgid "" +"\n" +" Name Args Address Complete Definition" +msgstr "" +"\n" +" Namn Arg Område Färdigt Definition" + +#: ../usercmd.c:714 +msgid "No user-defined commands found" +msgstr "Inga användardefinierade kommandon hittade" + +#: ../userfunc.c:1048 +#, c-format +msgid "W22: Text found after :endfunction: %s" +msgstr "" + +#: ../userfunc.c:3126 +#, c-format +msgid "calling %s" +msgstr "anropar %s" + +#: ../userfunc.c:3241 +#, c-format +msgid "%s aborted" +msgstr "%s avbröts" + +#: ../userfunc.c:3243 +#, c-format +msgid "%s returning #%ld" +msgstr "%s returnerar #%ld" + +#: ../userfunc.c:3265 +#, c-format +msgid "%s returning %s" +msgstr "%s returnerar %s" + +#: ../userfunc.c:5685 +#, c-format +msgid "Function %s%s%s does not need compiling" +msgstr "" + +#: ../version.c:68 +#, c-format +msgid "%s (%s, compiled %s)" +msgstr "" + +#: ../version.c:2798 +#, fuzzy +msgid "" +"\n" +"MS-Windows 64-bit GUI/console version" +msgstr "" +"\n" +"MS-Windows 32-bitars konsollversion" + +#: ../version.c:2800 +#, fuzzy +msgid "" +"\n" +"MS-Windows 32-bit GUI/console version" +msgstr "" +"\n" +"MS-Windows 32-bitars konsollversion" + +#: ../version.c:2804 +msgid "" +"\n" +"MS-Windows 64-bit GUI version" +msgstr "" +"\n" +"MS-Windows 64-bitars GUI-version" + +#: ../version.c:2806 +msgid "" +"\n" +"MS-Windows 32-bit GUI version" +msgstr "" +"\n" +"MS-Windows 32-bitars GUI-version" + +#: ../version.c:2810 +msgid " with OLE support" +msgstr " med OLE-stöd" + +#: ../version.c:2814 +#, fuzzy +msgid "" +"\n" +"MS-Windows 64-bit console version" +msgstr "" +"\n" +"MS-Windows 32-bitars konsollversion" + +#: ../version.c:2816 +msgid "" +"\n" +"MS-Windows 32-bit console version" +msgstr "" +"\n" +"MS-Windows 32-bitars konsollversion" + +#: ../version.c:2822 +#, fuzzy +msgid "" +"\n" +"macOS version" +msgstr "" +"\n" +"MacOS-version" + +#: ../version.c:2824 +msgid "" +"\n" +"macOS version w/o darwin feat." +msgstr "" + +#: ../version.c:2834 +#, fuzzy +msgid "" +"\n" +"OpenVMS version" +msgstr "" +"\n" +"MacOS-version" + +#: ../version.c:2849 +msgid "" +"\n" +"Included patches: " +msgstr "" +"\n" +"Inkluderade patchar: " + +#: ../version.c:2874 +#, fuzzy +msgid "" +"\n" +"Extra patches: " +msgstr "Externa underträffar:\n" + +#: ../version.c:2886 ../version.c:3197 +msgid "Modified by " +msgstr "Modifierad av " + +#: ../version.c:2893 +msgid "" +"\n" +"Compiled " +msgstr "" +"\n" +"Kompilerad " + +#: ../version.c:2896 +msgid "by " +msgstr "av " + +#: ../version.c:2908 +msgid "" +"\n" +"Huge version " +msgstr "" +"\n" +"Enorm version " + +#: ../version.c:2910 +msgid "" +"\n" +"Normal version " +msgstr "" +"\n" +"Normal version " + +#: ../version.c:2912 +msgid "" +"\n" +"Tiny version " +msgstr "" +"\n" +"Jätteliten version " + +#: ../version.c:2915 +msgid "without GUI." +msgstr "utan GUI." + +#: ../version.c:2918 +#, fuzzy +msgid "with GTK3 GUI." +msgstr "med GTK-GUI." + +#: ../version.c:2920 +msgid "with GTK2-GNOME GUI." +msgstr "med GTK2-GNOME-GUI." + +#: ../version.c:2922 +msgid "with GTK2 GUI." +msgstr "med GTK2-GUI." + +#: ../version.c:2925 +msgid "with X11-Motif GUI." +msgstr "med X11-Motif-GUI." + +#: ../version.c:2927 +#, fuzzy +msgid "with Haiku GUI." +msgstr "med GUI." + +#: ../version.c:2929 +msgid "with Photon GUI." +msgstr "med Photon-GUI." + +#: ../version.c:2931 +msgid "with GUI." +msgstr "med GUI." + +#: ../version.c:2933 +msgid " Features included (+) or not (-):\n" +msgstr " Funktioner inkluderade (+) eller inte (-):\n" + +#: ../version.c:2940 +msgid " system vimrc file: \"" +msgstr " system-vimrc-fil: \"" + +#: ../version.c:2945 +msgid " user vimrc file: \"" +msgstr " användar-vimrc-fil: \"" + +#: ../version.c:2950 +msgid " 2nd user vimrc file: \"" +msgstr " Andra användar-vimrc-fil: \"" + +#: ../version.c:2955 ../version.c:2962 ../version.c:2966 +msgid " 3rd user vimrc file: \"" +msgstr " Tredje användar-vimrc-fil: \"" + +#: ../version.c:2958 +#, fuzzy +msgid " 4th user vimrc file: \"" +msgstr " användar-vimrc-fil: \"" + +#: ../version.c:2971 +msgid " user exrc file: \"" +msgstr " användar-exrc-fil: \"" + +#: ../version.c:2976 +msgid " 2nd user exrc file: \"" +msgstr " Andra användar-exrc-fil: \"" + +#: ../version.c:2982 +msgid " system gvimrc file: \"" +msgstr " system-gvimrc-fil: \"" + +#: ../version.c:2986 +msgid " user gvimrc file: \"" +msgstr " användar-gvimrc-fil: \"" + +#: ../version.c:2990 +msgid "2nd user gvimrc file: \"" +msgstr "Andra användar-gvimrc-fil: \"" + +#: ../version.c:2995 +msgid "3rd user gvimrc file: \"" +msgstr "Tredje användar-gvimrc-fil: \"" + +#: ../version.c:3000 +#, fuzzy +msgid " defaults file: \"" +msgstr " användar-exrc-fil: \"" + +#: ../version.c:3005 +msgid " system menu file: \"" +msgstr " systemmenyfil: \"" + +#: ../version.c:3013 +msgid " fall-back for $VIM: \"" +msgstr " reserv för $VIM: \"" + +#: ../version.c:3019 +msgid " f-b for $VIMRUNTIME: \"" +msgstr " reserv för $VIMRUNTIME: \"" + +#: ../version.c:3023 +msgid "Compilation: " +msgstr "Kompilering: " + +#: ../version.c:3029 +msgid "Compiler: " +msgstr "Kompilator: " + +#: ../version.c:3034 +msgid "Linking: " +msgstr "Länkning: " + +#: ../version.c:3039 +msgid " DEBUG BUILD" +msgstr " FELSÖKNINGSBYGGD" + +#: ../version.c:3075 +msgid "VIM - Vi IMproved" +msgstr "VIM - Vi IMproved" + +#: ../version.c:3077 +msgid "version " +msgstr "version " + +#: ../version.c:3078 +msgid "by Bram Moolenaar et al." +msgstr "av Bram Moolenaar m.fl." + +#: ../version.c:3082 +msgid "Vim is open source and freely distributable" +msgstr "Vim är öppen källkod och fri att distribuera" + +#: ../version.c:3084 +msgid "Help poor children in Uganda!" +msgstr "Hjälp fattiga barn i Uganda!" + +#: ../version.c:3085 +msgid "type :help iccf for information " +msgstr "skriv :help iccf för information " + +#: ../version.c:3087 +msgid "type :q to exit " +msgstr "skriv :q för att avsluta " + +#: ../version.c:3088 +msgid "type :help or for on-line help" +msgstr "skriv :help eller för online-hjälp " + +#: ../version.c:3089 +msgid "type :help version9 for version info" +msgstr "skriv :help version9 för versioninformation " + +#: ../version.c:3092 +msgid "Running in Vi compatible mode" +msgstr "Kör i Vi-kompatibelt läge" + +#: ../version.c:3093 +msgid "type :set nocp for Vim defaults" +msgstr "skriv :set nocp för Vim- standarder " + +#: ../version.c:3094 +msgid "type :help cp-default for info on this" +msgstr "skriv :help cp-default för information om det här" + +#: ../version.c:3109 +msgid "menu Help->Orphans for information " +msgstr "meny Hjälp->Föräldralösa för information " + +#: ../version.c:3111 +msgid "Running modeless, typed text is inserted" +msgstr "Kör lägeslöst, skriven text blir infogad" + +#: ../version.c:3112 +msgid "menu Edit->Global Settings->Toggle Insert Mode " +msgstr "meny Redigera->Globala inställningar->Växla infogningsläge " + +#: ../version.c:3113 +msgid " for two modes " +msgstr " för två lägen " + +#: ../version.c:3117 +msgid "menu Edit->Global Settings->Toggle Vi Compatible" +msgstr "meny Redigera->Globala Inställningar->Växla Vi Komptaibel" + +#: ../version.c:3118 +msgid " for Vim defaults " +msgstr " för vim-standardalternativ " + +#: ../version.c:3159 +msgid "Sponsor Vim development!" +msgstr "Stöd utvecklingen av Vim!" + +#: ../version.c:3160 +msgid "Become a registered Vim user!" +msgstr "Bli en registrerad Vim-användare!" + +#: ../version.c:3163 +msgid "type :help sponsor for information " +msgstr "skriv :help sponsor för information " + +#: ../version.c:3164 +msgid "type :help register for information " +msgstr "skriv :help register för information " + +#: ../version.c:3166 +msgid "menu Help->Sponsor/Register for information " +msgstr "meny Hjälp->Stöd/Registrera för information " + +#: ../vim9compile.c:1438 +msgid "global" +msgstr "" + +#: ../vim9compile.c:1439 +#, fuzzy +msgid "buffer" +msgstr "ingen sådan buffert" + +#: ../vim9compile.c:1440 +#, fuzzy +msgid "window" +msgstr "" + +#: ../vim9compile.c:1441 +#, fuzzy +msgid "tab" +msgstr "Ny flik" + +#: ../vim9expr.c:1718 +#, fuzzy +msgid "[end of lines]" +msgstr "%ld rad till" + +#: ../viminfo.c:431 +msgid "" +"\n" +"# Buffer list:\n" +msgstr "" +"\n" +"# Buffertlista:\n" + +#: ../viminfo.c:859 +#, c-format +msgid "" +"\n" +"# %s History (newest to oldest):\n" +msgstr "" +"\n" +"# %s Historia (nyaste till äldsta):\n" + +#: ../viminfo.c:860 +msgid "Command Line" +msgstr "Kommandorad" + +#: ../viminfo.c:861 +msgid "Search String" +msgstr "Söksträng" + +#: ../viminfo.c:862 +msgid "Expression" +msgstr "Uttryck" + +#: ../viminfo.c:863 +msgid "Input Line" +msgstr "Inmatningsrad" + +#: ../viminfo.c:864 +#, fuzzy +msgid "Debug Line" +msgstr "Inmatningsrad" + +#: ../viminfo.c:981 +msgid "" +"\n" +"# Bar lines, copied verbatim:\n" +msgstr "" + +#: ../viminfo.c:1198 +#, c-format +msgid "%sviminfo: %s in line: " +msgstr "%sviminfo: %s på rad: " + +#: ../viminfo.c:1350 +msgid "" +"\n" +"# global variables:\n" +msgstr "" +"\n" +"# globala variabler:\n" + +#: ../viminfo.c:1448 +msgid "" +"\n" +"# Last Substitute String:\n" +"$" +msgstr "" +"\n" +"# Senaste ersättningssträng:\n" +"$" + +#: ../viminfo.c:1551 +#, c-format +msgid "" +"\n" +"# Last %sSearch Pattern:\n" +"~" +msgstr "" +"\n" +"# Senaste %sSökmönster:\n" +"~" + +#: ../viminfo.c:1575 +#, fuzzy +msgid "Substitute " +msgstr "1 ersättning" + +#: ../viminfo.c:1875 +msgid "" +"\n" +"# Registers:\n" +msgstr "" +"\n" +"# Register:\n" + +#: ../viminfo.c:2064 +msgid "" +"\n" +"# History of marks within files (newest to oldest):\n" +msgstr "" +"\n" +"# Historia för märken inne i filer (nyaste till äldsta):\n" + +#: ../viminfo.c:2145 +msgid "" +"\n" +"# File marks:\n" +msgstr "" +"\n" +"# Filmärken:\n" + +#. Write the jumplist with -' +#: ../viminfo.c:2215 +msgid "" +"\n" +"# Jumplist (newest first):\n" +msgstr "" +"\n" +"# Hopplista (nyaste först):\n" + +#. Write the info: +#: ../viminfo.c:2987 +#, c-format +msgid "# This viminfo file was generated by Vim %s.\n" +msgstr "# Den här viminfo-filen genererades av Vim %s.\n" + +#: ../viminfo.c:2989 +msgid "" +"# You may edit it if you're careful!\n" +"\n" +msgstr "" +"# Du får redigera den om du är försiktig!\n" +"\n" + +#: ../viminfo.c:2991 +msgid "# Value of 'encoding' when this file was written\n" +msgstr "# Värde av 'encoding' när den här filen blev skriven\n" + +#: ../viminfo.c:3048 +#, fuzzy, c-format +msgid "Reading viminfo file \"%s\"%s%s%s%s" +msgstr "Läser viminfo-fil \"%s\"%s%s%s" + +#: ../viminfo.c:3050 +msgid " info" +msgstr " info" + +#: ../viminfo.c:3051 +msgid " marks" +msgstr " märken" + +#: ../viminfo.c:3052 +#, fuzzy +msgid " oldfiles" +msgstr "Inga inkluderade filer" + +#: ../viminfo.c:3053 +msgid " FAILED" +msgstr " MISSLYCKADES" + +#: ../viminfo.c:3314 +#, c-format +msgid "Writing viminfo file \"%s\"" +msgstr "Skriver viminfo-fil \"%s\"" + +#: ../window.c:83 +msgid "Already only one window" +msgstr "Redan bara ett fönster" + +#: ../if_perl.xs:690 +#, c-format +msgid "E370: Could not load library %s" +msgstr "E370: Kunde inte läsa in bibliotek %s" + +#: ../if_perl.xs:957 +msgid "Sorry, this command is disabled: the Perl library could not be loaded." +msgstr "" +"Tyvärr, det här kommandot är inaktiverat: Perl-biblioteket kunde inte läsas " +"in." + +#: ../GvimExt/gvimext.cpp:692 +#, fuzzy +msgid "Edit with Vim using &tabpages" +msgstr "Redigera med en &Vim" + +#: ../GvimExt/gvimext.cpp:698 +msgid "Edit with single &Vim" +msgstr "Redigera med en &Vim" + +#: ../GvimExt/gvimext.cpp:707 +msgid "Diff with Vim" +msgstr "Diff med Vim" + +#: ../GvimExt/gvimext.cpp:720 +msgid "Edit with &Vim" +msgstr "Redigera med &Vim" + +#: ../GvimExt/gvimext.cpp:733 +#, fuzzy +msgid "Edit with existing Vim" +msgstr "Redigera med befintlig Vim - " + +#: ../GvimExt/gvimext.cpp:765 +msgid "Edit with existing Vim - " +msgstr "Redigera med befintlig Vim - " + +#: ../GvimExt/gvimext.cpp:902 +msgid "Edits the selected file(s) with Vim" +msgstr "Redigerar markerade fil(erna) med Vim" + +#: ../GvimExt/gvimext.cpp:1046 +msgid "Error creating process: Check if gvim is in your path!" +msgstr "Felskapande process: Kontrollera om gvim är i din sökväg!" + +#: ../GvimExt/gvimext.cpp:1047 +msgid "gvimext.dll error" +msgstr "gvimext.dll-fel" + +#: ../errors.h:26 +msgid "Interrupted" +msgstr "Avbruten" + +#: ../errors.h:29 +msgid "E10: \\ should be followed by /, ? or &" +msgstr "E10: \\ borde följas av /, ? eller &" + +#: ../errors.h:31 +#, fuzzy +msgid "E11: Invalid in command-line window; :q closes the window" +msgstr "E11: Felaktighet i kommandoradsfönster; kör, CTRL-C avslutar" + +#: ../errors.h:33 +msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search" +msgstr "" +"E12: Kommando inte tillåtet från exrc/vimrc i aktuell katalog eller " +"taggsökning" + +#: ../errors.h:35 +msgid "E13: File exists (add ! to override)" +msgstr "E13: Fil existerar (lägg till ! för att tvinga)" + +#: ../errors.h:39 +#, fuzzy, c-format +msgid "E15: Invalid expression: \"%s\"" +msgstr "E15: Ogiltigt uttryck: %s" + +#: ../errors.h:42 +msgid "E16: Invalid range" +msgstr "E16: Ogiltigt område" + +#: ../errors.h:46 +#, c-format +msgid "E17: \"%s\" is a directory" +msgstr "E17: \"%s\" är en katalog" + +#: ../errors.h:50 +msgid "E18: Unexpected characters in :let" +msgstr "E18: Oväntade tecken i :let" + +#: ../errors.h:52 +#, fuzzy +msgid "E18: Unexpected characters in assignment" +msgstr "E18: Oväntade tecken i :let" + +#: ../errors.h:55 +msgid "E19: Mark has invalid line number" +msgstr "E19: Markering har ogiltigt radnummer" + +#: ../errors.h:57 +msgid "E20: Mark not set" +msgstr "E20: Markering inte satt" + +#: ../errors.h:59 +msgid "E21: Cannot make changes, 'modifiable' is off" +msgstr "E21: Kan inte göra ändringar, 'modifiable' är av" + +#: ../errors.h:61 +msgid "E22: Scripts nested too deep" +msgstr "E22: Skript nästlade för djupt" + +#: ../errors.h:63 +msgid "E23: No alternate file" +msgstr "E23: Ingen alternativ fil" + +#: ../errors.h:65 +msgid "E24: No such abbreviation" +msgstr "E24: Ingen sådan förkortning" + +#: ../errors.h:68 +msgid "E25: GUI cannot be used: Not enabled at compile time" +msgstr "E25: GUI kan inte användas: Inte aktiverat vid kompilering" + +#: ../errors.h:72 +msgid "E26: Hebrew cannot be used: Not enabled at compile time\n" +msgstr "E26: Hebreiska kan inte användas: Inte aktiverat vid kompilering\n" + +#: ../errors.h:75 +msgid "E27: Farsi support has been removed\n" +msgstr "" + +#: ../errors.h:78 +#, c-format +msgid "E28: No such highlight group name: %s" +msgstr "E28: Inget sådant framhävningsgruppnamn: %s" + +#: ../errors.h:81 +msgid "E29: No inserted text yet" +msgstr "E29: Ingen infogad text än" + +#: ../errors.h:83 +msgid "E30: No previous command line" +msgstr "E30: Ingen tidigare kommandorad" + +#: ../errors.h:85 +msgid "E31: No such mapping" +msgstr "E31: Ingen sådan mappning" + +#: ../errors.h:87 +msgid "E32: No file name" +msgstr "E32: Inget filnamn" + +#: ../errors.h:89 +msgid "E33: No previous substitute regular expression" +msgstr "E33: Inget tidigare utbytningsreguljäruttryck" + +#: ../errors.h:91 +msgid "E34: No previous command" +msgstr "E34: Inget tidigare kommando" + +#: ../errors.h:93 +msgid "E35: No previous regular expression" +msgstr "E35: Inget tidigare reguljärt uttryck" + +#: ../errors.h:95 +msgid "E36: Not enough room" +msgstr "E36: Inte tillräckligt med utrymme" + +#: ../errors.h:97 +#, fuzzy +msgid "E37: No write since last change" +msgstr "[Ingen skrivning sedan senaste ändring]\n" + +#: ../errors.h:99 +msgid "E37: No write since last change (add ! to override)" +msgstr "" +"E37: Ingen skrivning sedan senaste ändring (lägg till ! för att tvinga)" + +#: ../errors.h:104 +msgid "E39: Number expected" +msgstr "E39: Nummer väntat" + +#: ../errors.h:108 +#, c-format +msgid "E40: Can't open errorfile %s" +msgstr "E40: Kan inte öppna felfil %s" + +#: ../errors.h:111 +msgid "E41: Out of memory!" +msgstr "E41: Slut på minne!" + +#: ../errors.h:114 +msgid "E42: No Errors" +msgstr "E42: Inga fel" + +#: ../errors.h:121 +msgid "E45: 'readonly' option is set (add ! to override)" +msgstr "E45: 'readonly' flagga är satt (lägg till ! för att tvinga)" + +#: ../errors.h:124 +#, fuzzy +msgid "E46: Cannot change read-only variable" +msgstr "E46: Kan inte ändra skrivskyddad variabel \"%s\"" + +#: ../errors.h:126 +#, c-format +msgid "E46: Cannot change read-only variable \"%s\"" +msgstr "E46: Kan inte ändra skrivskyddad variabel \"%s\"" + +#: ../errors.h:130 +msgid "E47: Error while reading errorfile" +msgstr "E47: Fel vid läsning av felfil" + +#: ../errors.h:134 +msgid "E48: Not allowed in sandbox" +msgstr "E48: Inte tillåtet i sandlåda" + +#: ../errors.h:137 +msgid "E49: Invalid scroll size" +msgstr "E49: Ogiltig rullningsstorlek" + +#: ../errors.h:140 +msgid "E50: Too many \\z(" +msgstr "E50: För många \\z(" + +#: ../errors.h:143 +#, c-format +msgid "E51: Too many %s(" +msgstr "E51: För många %s(" + +#: ../errors.h:146 +msgid "E52: Unmatched \\z(" +msgstr "E52: Omatchade \\z(" + +#: ../errors.h:149 +#, c-format +msgid "E53: Unmatched %s%%(" +msgstr "E53: Omatchade %s%%(" + +#: ../errors.h:151 +#, c-format +msgid "E54: Unmatched %s(" +msgstr "E54: Omatchade %s(" + +#: ../errors.h:153 +#, c-format +msgid "E55: Unmatched %s)" +msgstr "E55: Omatchade %s)" + +# TODO: Capitalise first word of message? +#: ../errors.h:158 +#, c-format +msgid "E59: Invalid character after %s@" +msgstr "E59: ogiltigt tecken efter %s@" + +#: ../errors.h:160 +#, c-format +msgid "E60: Too many complex %s{...}s" +msgstr "E60: För många komplexa %s{...}s" + +#: ../errors.h:162 +#, c-format +msgid "E61: Nested %s*" +msgstr "E61: Nästlade %s*" + +#: ../errors.h:164 +#, c-format +msgid "E62: Nested %s%c" +msgstr "E62: Nästlade %s%c" + +# TODO: Capitalise first word of message? +#: ../errors.h:166 +msgid "E63: Invalid use of \\_" +msgstr "E63: ogiltig användning av \\_" + +#: ../errors.h:168 +#, c-format +msgid "E64: %s%c follows nothing" +msgstr "E64: %s%c följer ingenting" + +#: ../errors.h:170 +msgid "E65: Illegal back reference" +msgstr "E65: Otillåten bakåtreferens" + +#: ../errors.h:173 +msgid "E66: \\z( not allowed here" +msgstr "E66: \\z{ inte tillåtet här" + +#: ../errors.h:175 +msgid "E67: \\z1 - \\z9 not allowed here" +msgstr "E67: \\z1 m.fl. inte tillåtet här" + +#: ../errors.h:178 +msgid "E68: Invalid character after \\z" +msgstr "E68: Ogiltigt tecken efter \\z" + +#: ../errors.h:180 +#, c-format +msgid "E69: Missing ] after %s%%[" +msgstr "E69: Saknar ] efter %s%%[" + +#: ../errors.h:182 +#, c-format +msgid "E70: Empty %s%%[]" +msgstr "E70: Tom %s%%[]" + +#: ../errors.h:184 +#, c-format +msgid "E71: Invalid character after %s%%" +msgstr "E71: Ogiltigt tecken efter %s%%" + +#: ../errors.h:186 +msgid "E72: Close error on swap file" +msgstr "E72: Stängningsfel på växlingsfil" + +# TODO: Capitalise first word of message? +#: ../errors.h:188 +msgid "E73: Tag stack empty" +msgstr "E73: taggstack tom" + +#: ../errors.h:190 +msgid "E74: Command too complex" +msgstr "E74: Kommando för komplext" + +#: ../errors.h:192 +msgid "E75: Name too long" +msgstr "E75: Namn för långt" + +#: ../errors.h:194 +msgid "E76: Too many [" +msgstr "E76: För många [" + +#: ../errors.h:196 +msgid "E77: Too many file names" +msgstr "E77: För många filnamn" + +#: ../errors.h:198 +msgid "E78: Unknown mark" +msgstr "E78: Okänt märke" + +#: ../errors.h:200 +msgid "E79: Cannot expand wildcards" +msgstr "E79: Kan inte expandera jokertecken" + +#: ../errors.h:202 +msgid "E80: Error while writing" +msgstr "E80: Fel vid skrivning" + +#: ../errors.h:205 +msgid "E81: Using not in a script context" +msgstr "E81: Använder inte i ett skriptsammanhang" + +#: ../errors.h:208 +msgid "E82: Cannot allocate any buffer, exiting..." +msgstr "E82: Kan inte allokera någon buffert, avslutar..." + +#: ../errors.h:210 +msgid "E83: Cannot allocate buffer, using other one..." +msgstr "E83: Kan inte allokera buffert, använder en annan..." + +#: ../errors.h:212 +msgid "E84: No modified buffer found" +msgstr "E84: Ingen modifierad buffert hittad" + +#: ../errors.h:214 +msgid "E85: There is no listed buffer" +msgstr "E85: Det finns inga listade buffertar" + +#: ../errors.h:216 +#, c-format +msgid "E86: Buffer %ld does not exist" +msgstr "E86: Buffert %ld existerar inte" + +#: ../errors.h:218 +msgid "E87: Cannot go beyond last buffer" +msgstr "E87: Kan inte gå bortom sista buffert" + +#: ../errors.h:220 +msgid "E88: Cannot go before first buffer" +msgstr "E88: Kan inte gå före första buffert" + +#: ../errors.h:222 +#, fuzzy, c-format +msgid "E89: No write since last change for buffer %d (add ! to override)" +msgstr "" +"E89: Ingen skrivning sedan senaste ändring för buffert %ld (lägg till ! för " +"att tvinga)" + +#: ../errors.h:224 +msgid "E90: Cannot unload last buffer" +msgstr "E90: Kan inte ladda ur senaste buffert" + +#: ../errors.h:226 +msgid "E91: 'shell' option is empty" +msgstr "E91: 'shell' flagga är tom" + +#: ../errors.h:228 +#, fuzzy, c-format +msgid "E92: Buffer %d not found" +msgstr "E92: Buffer %ld hittades inte" + +#: ../errors.h:230 +#, c-format +msgid "E93: More than one match for %s" +msgstr "E93: Fler än en träff för %s" + +#: ../errors.h:232 +#, c-format +msgid "E94: No matching buffer for %s" +msgstr "E94: Ingen matchande buffert för %s" + +#: ../errors.h:234 +msgid "E95: Buffer with this name already exists" +msgstr "E95: Buffer med det här namnet existerar redan" + +#: ../errors.h:237 +#, fuzzy, c-format +msgid "E96: Cannot diff more than %d buffers" +msgstr "E96: Kan inte skilja fler än %ld buffertar" + +#: ../errors.h:239 +msgid "E97: Cannot create diffs" +msgstr "E97: Kan inte skapa skiljare" + +#: ../errors.h:241 +msgid "E98: Cannot read diff output" +msgstr "E98: Kan inte läsa skiljeutdata" + +#: ../errors.h:243 +msgid "E99: Current buffer is not in diff mode" +msgstr "E99: Aktuell buffert är inte i skiljeläge" + +#: ../errors.h:245 +msgid "E100: No other buffer in diff mode" +msgstr "E100: Ingen annan buffert i skiljeläge" + +#: ../errors.h:247 +msgid "E101: More than two buffers in diff mode, don't know which one to use" +msgstr "" +"E101: Fler än två buffertar i skiljeläge, vet inte vilken som ska användas" + +#: ../errors.h:249 +#, c-format +msgid "E102: Can't find buffer \"%s\"" +msgstr "E102: Kan inte hitta buffert \"%s\"" + +#: ../errors.h:251 +#, c-format +msgid "E103: Buffer \"%s\" is not in diff mode" +msgstr "E103: Buffert \"%s\" är inte i skiljeläge" + +#: ../errors.h:255 +msgid "E104: Escape not allowed in digraph" +msgstr "E104: Escape inte tillåtet i digraf" + +#: ../errors.h:259 +msgid "E105: Using :loadkeymap not in a sourced file" +msgstr "E105: Användning av :loadkeymap utanför en körd fil" + +#: ../errors.h:263 +#, fuzzy, c-format +msgid "E106: Unsupported diff output format: %s" +msgstr "E375: Ostödd %%%c i formatsträng" + +#: ../errors.h:265 +#, c-format +msgid "E107: Missing parentheses: %s" +msgstr "E107: Saknar hakparantes: %s" + +#: ../errors.h:267 +#, c-format +msgid "E108: No such variable: \"%s\"" +msgstr "E108: Ingen sådan variabel: \"%s\"" + +#: ../errors.h:269 +msgid "E109: Missing ':' after '?'" +msgstr "E109: Saknar ':' efter '?'" + +#: ../errors.h:271 +msgid "E110: Missing ')'" +msgstr "E110: Saknar ')'" + +#: ../errors.h:273 +msgid "E111: Missing ']'" +msgstr "E111: Saknar ']'" + +#: ../errors.h:275 +#, c-format +msgid "E112: Option name missing: %s" +msgstr "E112: Flaggnamn saknas: %s" + +#: ../errors.h:277 +#, c-format +msgid "E113: Unknown option: %s" +msgstr "E113: Okänd flagga: %s" + +#: ../errors.h:279 +#, fuzzy, c-format +msgid "E114: Missing double quote: %s" +msgstr "E114: Saknar citattecken: %s" + +#: ../errors.h:281 +#, fuzzy, c-format +msgid "E115: Missing single quote: %s" +msgstr "E115: Saknar citattecken: %s" + +#: ../errors.h:283 +#, fuzzy, c-format +msgid "E116: Invalid arguments for function %s" +msgstr "E118: För många argument till funktion: %s" + +#: ../errors.h:285 +#, c-format +msgid "E117: Unknown function: %s" +msgstr "E117: Okänd funktion: %s" + +#: ../errors.h:287 +#, c-format +msgid "E118: Too many arguments for function: %s" +msgstr "E118: För många argument till funktion: %s" + +#: ../errors.h:289 +#, c-format +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: För få argument till funktion: %s" + +#: ../errors.h:291 +#, c-format +msgid "E120: Using not in a script context: %s" +msgstr "E120: Använder inte i ett skriptsammanhang: %s" + +#: ../errors.h:293 +#, c-format +msgid "E121: Undefined variable: %s" +msgstr "E121: Odefinierad variabel: %s" + +#: ../errors.h:295 +#, fuzzy, c-format +msgid "E121: Undefined variable: %c:%s" +msgstr "E121: Odefinierad variabel: %s" + +#: ../errors.h:297 +#, c-format +msgid "E122: Function %s already exists, add ! to replace it" +msgstr "E122: Funktionen %s existerar redan, lägg till ! för att ersätta den" + +#: ../errors.h:299 +#, fuzzy, c-format +msgid "E123: Undefined function: %s" +msgstr "E130: Okänd funktion: %s" + +#: ../errors.h:301 +#, c-format +msgid "E124: Missing '(': %s" +msgstr "E124: Saknar '(': %s" + +#: ../errors.h:303 +#, c-format +msgid "E125: Illegal argument: %s" +msgstr "E125: Otillåtet argument: %s" + +#: ../errors.h:305 +msgid "E126: Missing :endfunction" +msgstr "E126: Saknar :endfunction" + +#: ../errors.h:307 +#, fuzzy, c-format +msgid "E127: Cannot redefine function %s: It is in use" +msgstr "E131: Kan inte ta bort funktion %s: Den används" + +#: ../errors.h:309 +#, fuzzy, c-format +msgid "E128: Function name must start with a capital or \"s:\": %s" +msgstr "" +"E128: Funktionsnamn måste börja med en versal eller innehålla ett kolon: %s" + +#: ../errors.h:311 +msgid "E129: Function name required" +msgstr "E129: Funktionsnamn krävs" + +#: ../errors.h:314 +#, c-format +msgid "E131: Cannot delete function %s: It is in use" +msgstr "E131: Kan inte ta bort funktion %s: Den används" + +#: ../errors.h:316 +msgid "E132: Function call depth is higher than 'maxfuncdepth'" +msgstr "E132: Djupet på funktionsanropet är högre än 'maxfuncdepth'" + +#: ../errors.h:318 +msgid "E133: :return not inside a function" +msgstr "E133: :return inte inom en funktion" + +#: ../errors.h:321 +#, fuzzy +msgid "E134: Cannot move a range of lines into itself" +msgstr "E134: Flytta rader in i dem själva" + +#: ../errors.h:323 +msgid "E135: *Filter* Autocommands must not change current buffer" +msgstr "E135: *Filter*-Autokommandon får inte ändra aktuell buffert" + +#: ../errors.h:326 +msgid "E136: viminfo: Too many errors, skipping rest of file" +msgstr "E136: viminfo: För många fel, hoppar över resten av filen" + +#: ../errors.h:328 +#, c-format +msgid "E137: Viminfo file is not writable: %s" +msgstr "E137: Viminfo-fil är inte skrivbar: %s" + +#: ../errors.h:330 +#, c-format +msgid "E138: Can't write viminfo file %s!" +msgstr "E138: Kan inte skriva viminfo-fil %s!" + +#: ../errors.h:333 +msgid "E139: File is loaded in another buffer" +msgstr "E139: Filen är inläst i en annan buffert" + +#: ../errors.h:335 +msgid "E140: Use ! to write partial buffer" +msgstr "E140: Använd ! för att skriva ofullständig buffert" + +#: ../errors.h:337 +#, c-format +msgid "E141: No file name for buffer %ld" +msgstr "E141: Inget filnamn för buffert %ld" + +#: ../errors.h:339 +msgid "E142: File not written: Writing is disabled by 'write' option" +msgstr "E142: Filen skrevs inte: Skrivning är inaktiverat med 'write'-flaggan" + +#: ../errors.h:341 +#, c-format +msgid "E143: Autocommands unexpectedly deleted new buffer %s" +msgstr "E143: Autokommandon tog oväntat bort ny buffert %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:343 +msgid "E144: Non-numeric argument to :z" +msgstr "E144: ickenumeriskt argument till :z" + +#: ../errors.h:345 +#, fuzzy +msgid "E145: Shell commands and some functionality not allowed in rvim" +msgstr "E145: Skalkommandon inte tillåtna i rvim" + +#: ../errors.h:347 +msgid "E146: Regular expressions can't be delimited by letters" +msgstr "E146: Reguljära uttryck kan inte vara åtskilda av bokstäver" + +#: ../errors.h:349 +#, fuzzy +msgid "E147: Cannot do :global recursive with a range" +msgstr "E147: Kan inte göra :global rekursivt" + +#: ../errors.h:351 +#, fuzzy +msgid "E148: Regular expression missing from :global" +msgstr "E148: Reguljärt uttryck saknas från global" + +#: ../errors.h:353 +#, c-format +msgid "E149: Sorry, no help for %s" +msgstr "E149: Tyvärr, ingen hjälp för %s" + +#: ../errors.h:355 +#, c-format +msgid "E150: Not a directory: %s" +msgstr "E150: Inte en katalog: %s" + +#: ../errors.h:357 +#, fuzzy, c-format +msgid "E151: No match: %s" +msgstr "E480: Ingen träff: %s" + +#: ../errors.h:359 +#, c-format +msgid "E152: Cannot open %s for writing" msgstr "E152: Kan inte öppna %s för skrivning" +#: ../errors.h:361 +#, c-format +msgid "E153: Unable to open %s for reading" +msgstr "E153: Kunde inte öppna %s för läsning" + +#: ../errors.h:363 +#, c-format +msgid "E154: Duplicate tag \"%s\" in file %s/%s" +msgstr "E154: Duplicerad tagg \"%s\" i fil %s/%s" + +#: ../errors.h:366 +#, c-format +msgid "E155: Unknown sign: %s" +msgstr "E155: Okänd signatur: %s" + +#: ../errors.h:368 +msgid "E156: Missing sign name" +msgstr "E156: Saknar signaturnamn" + +#: ../errors.h:370 +#, fuzzy, c-format +msgid "E157: Invalid sign ID: %d" +msgstr "E157: Ogiltigt signatur-ID: %ld" + +#: ../errors.h:374 +#, c-format +msgid "E158: Invalid buffer name: %s" +msgstr "E158: Ogiltigt buffertnamn: %s" + +#: ../errors.h:378 +msgid "E159: Missing sign number" +msgstr "E159: Saknar signaturnummer" + +#: ../errors.h:380 +#, c-format +msgid "E160: Unknown sign command: %s" +msgstr "E160: Okänt signaturkommando: %s" + +#: ../errors.h:384 +#, c-format +msgid "E161: Breakpoint not found: %s" +msgstr "E161: Brytpunkt hittades inte: %s" + +#: ../errors.h:387 +#, c-format +msgid "E162: No write since last change for buffer \"%s\"" +msgstr "E162: Ingen skrivning sedan senaste ändring för buffert \"%s\"" + +#: ../errors.h:389 +msgid "E163: There is only one file to edit" +msgstr "E163: Det finns bara en fil att redigera" + +#: ../errors.h:391 +msgid "E164: Cannot go before first file" +msgstr "E164: Kan inte gå före första filen" + +#: ../errors.h:393 +msgid "E165: Cannot go beyond last file" +msgstr "E165: Kan inte gå bortom sista filen" + +#: ../errors.h:395 +msgid "E166: Can't open linked file for writing" +msgstr "E166: Kan inte öppna länkad fil för skrivning" + +#: ../errors.h:397 +msgid "E167: :scriptencoding used outside of a sourced file" +msgstr "E167: :scriptencoding används utanför en körd fil" + +#: ../errors.h:400 +msgid "E168: :finish used outside of a sourced file" +msgstr "E168: :finish används utanför en körd fil" + +#: ../errors.h:403 +msgid "E169: Command too recursive" +msgstr "E169: Kommando för rekursivt" + +#: ../errors.h:406 +msgid "E170: Missing :endwhile" +msgstr "E170: Saknar :endwhile" + +#: ../errors.h:408 +msgid "E170: Missing :endfor" +msgstr "E170: Saknar :endfor" + +#: ../errors.h:410 +msgid "E171: Missing :endif" +msgstr "E171: Saknar :endif" + +#: ../errors.h:412 +#, fuzzy +msgid "E172: Missing marker" +msgstr "E170: Saknar :endfor" + +#: ../errors.h:415 +#, fuzzy, c-format +msgid "E173: %d more file to edit" +msgid_plural "E173: %d more files to edit" +msgstr[0] "E173: %ld filer till att redigera" +msgstr[1] "E173: %ld filer till att redigera" + +#: ../errors.h:419 +#, fuzzy, c-format +msgid "E174: Command already exists: add ! to replace it: %s" +msgstr "E174: Kommando existerar redan: lägg till ! för att ersätta det" + +#: ../errors.h:421 +msgid "E175: No attribute specified" +msgstr "E175: Inga attribut angivna" + +#: ../errors.h:423 +msgid "E176: Invalid number of arguments" +msgstr "E176: Ogiltigt antal argument" + +#: ../errors.h:425 +msgid "E177: Count cannot be specified twice" +msgstr "E177: Antal kan inte anges två gånger" + +#: ../errors.h:427 +msgid "E178: Invalid default value for count" +msgstr "E178: Ogiltigt standardvärde för antal" + +# TODO: Capitalise first word of message? +#: ../errors.h:429 +#, fuzzy, c-format +msgid "E179: Argument required for %s" +msgstr "E179: argument krävs för -complete" + +#: ../errors.h:431 +#, c-format +msgid "E180: Invalid complete value: %s" +msgstr "E180: Ogiltigt kompletteringsvärde: %s" + +#: ../errors.h:433 +#, fuzzy, c-format +msgid "E180: Invalid address type value: %s" +msgstr "E180: Ogiltigt kompletteringsvärde: %s" + +#: ../errors.h:435 +#, c-format +msgid "E181: Invalid attribute: %s" +msgstr "E181: Ogiltigt attribut: %s" + +#: ../errors.h:437 +msgid "E182: Invalid command name" +msgstr "E182: Ogiltigt kommandonamn" + +#: ../errors.h:439 +msgid "E183: User defined commands must start with an uppercase letter" +msgstr "E183: Användardefinierade kommandon måste börja med en stor bokstav" + +#: ../errors.h:441 +#, c-format +msgid "E184: No such user-defined command: %s" +msgstr "E184: Inget sådant användardefinierat kommando: %s" + +#: ../errors.h:443 +#, fuzzy, c-format +msgid "E185: Cannot find color scheme '%s'" +msgstr "E185: Kan inte hitta färgschema %s" + +#: ../errors.h:445 +msgid "E186: No previous directory" +msgstr "E186: Ingen tidigare katalog" + +#: ../errors.h:447 +#, fuzzy +msgid "E187: Directory unknown" +msgstr "E187: Okänt" + +#: ../errors.h:449 +msgid "E188: Obtaining window position not implemented for this platform" +msgstr "" +"E188: Förskaffa fönsterposition inte implementerat för den här plattformen" + +#: ../errors.h:451 +#, c-format +msgid "E189: \"%s\" exists (add ! to override)" +msgstr "E189: \"%s\" existerar (lägg till ! för att tvinga)" + +#: ../errors.h:453 +#, c-format +msgid "E190: Cannot open \"%s\" for writing" +msgstr "E190: Kan inte öppna \"%s\" för skrivning" + +#: ../errors.h:455 +msgid "E191: Argument must be a letter or forward/backward quote" +msgstr "" +"E191: Argument måste vara en bokstav eller framåt-/bakåtvänt citattecken" + +#: ../errors.h:457 +msgid "E192: Recursive use of :normal too deep" +msgstr "E192: Rekursiv användning av :normal för djup" + +#: ../errors.h:460 +#, fuzzy, c-format +msgid "E193: %s not inside a function" +msgstr "E133: :return inte inom en funktion" + +#: ../errors.h:463 +msgid "E194: No alternate file name to substitute for '#'" +msgstr "E194: Inget alternativt filnamn att byta ut '#' med" + +#: ../errors.h:466 +msgid "E195: Cannot open viminfo file for reading" +msgstr "E195: Kan inte öppna viminfo-fil för läsning" + +#: ../errors.h:470 +msgid "E196: No digraphs in this version" +msgstr "E196: Inga digrafer i den här versionen" + +#: ../errors.h:473 +#, c-format +msgid "E197: Cannot set language to \"%s\"" +msgstr "E197: Kan inte sätta språk till \"%s\"" + +#: ../errors.h:476 +#, fuzzy +msgid "E199: Active window or buffer changed or deleted" +msgstr "E199: Aktivt fönster eller buffert borttagen" + +#: ../errors.h:478 +msgid "E200: *ReadPre autocommands made the file unreadable" +msgstr "E200: *ReadPre autokommandon gjorde filen oläsbar" + +#: ../errors.h:480 +msgid "E201: *ReadPre autocommands must not change current buffer" +msgstr "E201: *ReadPre autokommandon får inte ändra nuvarande buffert" + +#: ../errors.h:483 +msgid "E202: Conversion made file unreadable!" +msgstr "E202: Konvertering gjorde filen oläsbar!" + +#: ../errors.h:486 +msgid "E203: Autocommands deleted or unloaded buffer to be written" +msgstr "" +"E203: Autokommandon tog bort eller laddade ur buffert som skulle skrivas" + +#: ../errors.h:488 +msgid "E204: Autocommand changed number of lines in unexpected way" +msgstr "E204: Autokommado ändrade antal rader på ett oväntat sätt" + +#: ../errors.h:490 +msgid "E205: Patchmode: can't save original file" +msgstr "E205: Patchläge: kan inte spara orginalfil" + +# TODO: Capitalise first word of message? +#: ../errors.h:492 +msgid "E206: Patchmode: can't touch empty original file" +msgstr "E206: patchläge: kan inte skapa tom orginalfil" + +#: ../errors.h:494 +msgid "E207: Can't delete backup file" +msgstr "E207: Kan inte ta bort säkerhetskopia" + +#: ../errors.h:496 +#, c-format +msgid "E208: Error writing to \"%s\"" +msgstr "E208: Fel vid skrivning till \"%s\"" + +#: ../errors.h:498 +#, c-format +msgid "E209: Error closing \"%s\"" +msgstr "E209: Fel vid stängning av \"%s\"" + +#: ../errors.h:500 +#, c-format +msgid "E210: Error reading \"%s\"" +msgstr "E210: Fel vid läsning av \"%s\"" + +#: ../errors.h:502 +#, c-format +msgid "E211: File \"%s\" no longer available" +msgstr "E211: Filen \"%s\" är inte längre tillgänglig" + +#: ../errors.h:504 +msgid "E212: Can't open file for writing" +msgstr "E212: Kan inte öppna fil för skrivning" + +#: ../errors.h:506 +msgid "E213: Cannot convert (add ! to write without conversion)" +msgstr "" +"E213: Kan inte konvertera (lägg till ! för att skriva utan konvertering)" + +#: ../errors.h:509 +msgid "E214: Can't find temp file for writing" +msgstr "E214: Kan inte hitta temporär fil för skrivning" + +#: ../errors.h:512 +#, c-format +msgid "E215: Illegal character after *: %s" +msgstr "E215: Otillåtet tecken efter *: %s" + +#: ../errors.h:514 +#, c-format +msgid "E216: No such event: %s" +msgstr "E216: Ingen sådan händelse: %s" + +#: ../errors.h:516 +#, c-format +msgid "E216: No such group or event: %s" +msgstr "E216: Ingen sådan grupp eller händelse: %s" + +#: ../errors.h:518 +msgid "E217: Can't execute autocommands for ALL events" +msgstr "E217: Kan inte köra autokommandon för ALLA händelser" + +# TODO: Capitalise first word of message? +#: ../errors.h:520 +msgid "E218: Autocommand nesting too deep" +msgstr "E218: autokommando nästlad för djupt" + +#: ../errors.h:522 +msgid "E219: Missing {." +msgstr "E219: Saknar {." + +#: ../errors.h:524 +msgid "E220: Missing }." +msgstr "E220: Saknar }." + +#: ../errors.h:527 +#, fuzzy +msgid "E221: Marker cannot start with lower case letter" +msgstr "E183: Användardefinierade kommandon måste börja med en stor bokstav" + +# TODO: Capitalise first word of message? +#: ../errors.h:532 +msgid "E223: Recursive mapping" +msgstr "E223: rekursiv mappning" + +# TODO: Capitalise first word of message? +#: ../errors.h:534 +#, c-format +msgid "E224: Global abbreviation already exists for %s" +msgstr "E224: global förkortning existerar redan för %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:536 +#, c-format +msgid "E225: Global mapping already exists for %s" +msgstr "E225: global mappning existerar redan för %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:538 +#, c-format +msgid "E226: Abbreviation already exists for %s" +msgstr "E226: förkortning existerar redan för %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:540 +#, c-format +msgid "E227: Mapping already exists for %s" +msgstr "E227: mappning existerar redan för %s" + +#: ../errors.h:545 +msgid "E229: Cannot start the GUI" +msgstr "E229: Kan inte starta GUI" + +#: ../errors.h:547 +#, c-format +msgid "E230: Cannot read from \"%s\"" +msgstr "E230: Kan inte läsa från \"%s\"" + +#: ../errors.h:549 +msgid "E231: 'guifontwide' invalid" +msgstr "E231: 'guifontwide' ogiltig" + +# TODO: Capitalise first word of message? +#: ../errors.h:556 +msgid "E233: Cannot open display" +msgstr "E233: kan inte öppna display" + +#: ../errors.h:560 +#, c-format +msgid "E234: Unknown fontset: %s" +msgstr "E234: Okänd typsnittsuppsättning: %s" + +#: ../errors.h:565 +#, c-format +msgid "E235: Unknown font: %s" +msgstr "E235: Okänt typsnitt: %s" + +#: ../errors.h:569 +#, c-format +msgid "E236: Font \"%s\" is not fixed-width" +msgstr "E236: Typsnitt \"%s\" är inte bredd-fixerad" + +#: ../errors.h:574 +msgid "E237: Printer selection failed" +msgstr "E237: Skrivarval misslyckades" + +#: ../errors.h:576 +#, c-format +msgid "E238: Print error: %s" +msgstr "E238: Skrivarfel: %s" + +#: ../errors.h:580 +#, c-format +msgid "E239: Invalid sign text: %s" +msgstr "E239: Ogiltig signaturtext: %s" + +#: ../errors.h:584 +#, fuzzy +msgid "E240: No connection to the X server" +msgstr "E240: Ingen anslutning till Vim-server" + +#: ../errors.h:588 +#, c-format +msgid "E241: Unable to send to %s" +msgstr "E241: Kunde inte sända till %s" + +#: ../errors.h:591 +#, fuzzy +msgid "E242: Can't split a window while closing another" +msgstr "E345: Kan inte hitta fil \"%s\" i sökväg" + +#: ../errors.h:594 +#, c-format +msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." +msgstr "E243: Argument stöds inte: \"-%s\"; Används OLE-versionen." + +#: ../errors.h:598 +#, fuzzy, c-format +msgid "E244: Illegal %s name \"%s\" in font name \"%s\"" +msgstr "E244: Otillåtet teckenkodsnamn \"%s\" i typsnittsnamn \"%s\"" + +#: ../errors.h:600 +#, c-format +msgid "E245: Illegal char '%c' in font name \"%s\"" +msgstr "E245: Otillåtet tecken '%c' i typsnittsnamn \"%s\"" + +#: ../errors.h:603 +msgid "E246: FileChangedShell autocommand deleted buffer" +msgstr "E246: FileChangedShell-autokommandot tog bort buffert" + +# TODO: Capitalise first word of message? +#: ../errors.h:606 +#, c-format +msgid "E247: No registered server named \"%s\"" +msgstr "E247: ingen registrerad server med namnet \"%s\"" + +#: ../errors.h:608 +msgid "E248: Failed to send command to the destination program" +msgstr "E248: Misslyckades att skicka kommando till målprogrammet" + +#: ../errors.h:611 +#, fuzzy +msgid "E249: Window layout changed unexpectedly" +msgstr "E787: Buffert ändrades oväntat" + +#: ../errors.h:614 +#, c-format +msgid "E250: Fonts for the following charsets are missing in fontset %s:" +msgstr "" +"E250: Typsnitt för följande teckenkoder saknas i typsnittsuppsättningen %s:" + +#: ../errors.h:618 +msgid "E251: VIM instance registry property is badly formed. Deleted!" +msgstr "E251: VIM instansregisteregenskap är dåligt format. Borttaget!" + +#: ../errors.h:622 +#, fuzzy, c-format +msgid "E252: Fontset name: %s - Font '%s' is not fixed-width" +msgstr "Font '%s' är inte fast bredd" + +#: ../errors.h:624 +#, fuzzy, c-format +msgid "E253: Fontset name: %s" +msgstr "E253: Typsnittsuppsättningsnamn: %s\n" + +#: ../errors.h:628 +#, c-format +msgid "E254: Cannot allocate color %s" +msgstr "E254: Kan inte allokera färg %s" + +#: ../errors.h:632 +#, fuzzy +msgid "E255: Couldn't read in sign data" +msgstr "E255: Kunde inte läsa in teckendata!" + +# TODO: Capitalise first word of message? +#: ../errors.h:637 +msgid "E257: cstag: Tag not found" +msgstr "E257: cstag: tagg hittades inte" + +#: ../errors.h:641 +msgid "E258: Unable to send to client" +msgstr "E258: Kunde inte sända till klient" + +# TODO: Capitalise first word of message? +#: ../errors.h:645 +#, c-format +msgid "E259: No matches found for cscope query %s of %s" +msgstr "E259: inga träffar funna för cscope-förfrågan %s av %s" + +#: ../errors.h:649 +#, fuzzy +msgid "E260: Missing name after ->" +msgstr "E526: Saknar nummer efter <%s>" + +# TODO: Capitalise first word of message? +#: ../errors.h:653 +#, c-format +msgid "E261: Cscope connection %s not found" +msgstr "E261: cscope-anslutning %s hittades inte" + +# TODO: Capitalise first word of message? +#: ../errors.h:655 +#, fuzzy, c-format +msgid "E262: Error reading cscope connection %d" +msgstr "E262: fel vid läsning av cscope-anslutning %ld" + +#: ../errors.h:659 +msgid "" +"E263: Sorry, this command is disabled, the Python library could not be " +"loaded." +msgstr "" +"E263: Tyvärr, detta kommandot är inaktiverat, Python-biblioteket kunde inte " +"läsas in." + +#: ../errors.h:663 +msgid "E264: Python: Error initialising I/O objects" +msgstr "E264: Python: Fel vid initiering av I/O-objekt" + +#: ../errors.h:667 +msgid "E265: $_ must be an instance of String" +msgstr "E265: $_ måste vara en instans av String" + +#: ../errors.h:671 +msgid "" +"E266: Sorry, this command is disabled, the Ruby library could not be loaded." +msgstr "" +"E266: Tyvärr, detta kommandot är inaktiverat, Ruby-biblioteket kunde inte " +"läsas in." + +# TODO: Capitalise first word of message? +#: ../errors.h:675 +msgid "E267: Unexpected return" +msgstr "E267: oväntad returnering" + +# TODO: Capitalise first word of message? +#: ../errors.h:677 +msgid "E268: Unexpected next" +msgstr "E268: oväntad next" + +# TODO: Capitalise first word of message? +#: ../errors.h:679 +msgid "E269: Unexpected break" +msgstr "E269: oväntad break" + +# TODO: Capitalise first word of message? +#: ../errors.h:681 +msgid "E270: Unexpected redo" +msgstr "E270: oväntad redo" + +# TODO: Capitalise first word of message? +#: ../errors.h:683 +msgid "E271: Retry outside of rescue clause" +msgstr "E271: retry utanför rescue-block" + +# TODO: Capitalise first word of message? +#: ../errors.h:685 +msgid "E272: Unhandled exception" +msgstr "E272: ohanterat undantag" + +# TODO: Capitalise first word of message? +#: ../errors.h:687 +#, c-format +msgid "E273: Unknown longjmp status %d" +msgstr "E273: okänt longjmp-status %d" + +#: ../errors.h:691 +msgid "E274: No white space allowed before parenthesis" +msgstr "" + +#: ../errors.h:695 +#, fuzzy +msgid "E275: Cannot add text property to unloaded buffer" +msgstr "E87: Kan inte gå bortom sista buffert" + +#: ../errors.h:699 +#, fuzzy, c-format +msgid "E276: Cannot use function as a method: %s" +msgstr "E197: Kan inte sätta språk till \"%s\"" + +#: ../errors.h:703 +msgid "E277: Unable to read a server reply" +msgstr "E277: Kunde inte läsa ett serversvar" + +#: ../errors.h:708 +msgid "E279: Sorry, ++shell is not supported on this system" +msgstr "" + +#: ../errors.h:716 +#, c-format +msgid "E282: Cannot read from \"%s\"" +msgstr "E282: Kan inte läsa från \"%s\"" + +#: ../errors.h:718 +#, c-format +msgid "E283: No marks matching \"%s\"" +msgstr "E283: Inga märken matchade \"%s\"" + +#: ../errors.h:722 +msgid "E284: Cannot set IC values" +msgstr "E284: Kan inte ställa in IC-värden" + +#: ../errors.h:726 +msgid "E285: Failed to create input context" +msgstr "E285: Misslyckades att skapa inmatningsmiljö" + +#: ../errors.h:728 +msgid "E286: Failed to open input method" +msgstr "E286: Misslyckades att öppna inmatningsmetod" + +#: ../errors.h:730 +msgid "E287: Warning: Could not set destroy callback to IM" +msgstr "E287: Varning: Kunde inte ställa in förstörningsåterkallning till IM" + +# TODO: Capitalise first word of message? +#: ../errors.h:732 +msgid "E288: Input method doesn't support any style" +msgstr "E288: inmatningsmetod stöder inte någon stil" + +# TODO: Capitalise first word of message? +#: ../errors.h:734 +msgid "E289: Input method doesn't support my preedit type" +msgstr "E289: inmatningsmetod stöder inte min förredigeringstyp" + +#: ../errors.h:739 +#, fuzzy +msgid "E290: List or number required" +msgstr "E129: Funktionsnamn krävs" + +#: ../errors.h:747 +msgid "E294: Seek error in swap file read" +msgstr "E294: Sökfel i växelfilsläsning" + +#: ../errors.h:749 +msgid "E295: Read error in swap file" +msgstr "E295: Läsfel i växelfil" + +#: ../errors.h:751 +msgid "E296: Seek error in swap file write" +msgstr "E296: Sökfel i växelfilskrivning" + +#: ../errors.h:753 +msgid "E297: Write error in swap file" +msgstr "E297: Skrivfel i växelfil" + +#: ../errors.h:762 +msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" +msgstr "E299: Perl-evaluering förbjuden i sandlåda utan Safe-modulen" + +#: ../errors.h:765 +msgid "E300: Swap file already exists (symlink attack?)" +msgstr "E300: Växelfil existerar redan (symlänksattack?)" + +#: ../errors.h:767 +msgid "E301: Oops, lost the swap file!!!" +msgstr "E301: Hoppsan, tappat bort växelfilen!!!" + +#: ../errors.h:769 +msgid "E302: Could not rename swap file" +msgstr "E302: Kunde inte döpa om växelfil" + +#: ../errors.h:771 +#, c-format +msgid "E303: Unable to open swap file for \"%s\", recovery impossible" +msgstr "E303: Kunde inte öppna växelfil för \"%s\", återskapning omöjlig" + +#: ../errors.h:775 +#, c-format +msgid "E305: No swap file found for %s" +msgstr "E305: Ingen växelfil hittad för %s" + +#: ../errors.h:777 +#, c-format +msgid "E306: Cannot open %s" +msgstr "E306: Kan inte öppna %s" + +#: ../errors.h:779 +#, c-format +msgid "E307: %s does not look like a Vim swap file" +msgstr "E307: %s ser inte ut som en Vim-växlingsfil" + +#: ../errors.h:781 +msgid "E308: Warning: Original file may have been changed" +msgstr "E308: Varning: Orginalfilen kan ha blivit skadad" + +#: ../errors.h:783 +#, c-format +msgid "E309: Unable to read block 1 from %s" +msgstr "E309: Kunde inte läsa block 1 från %s" + +#: ../errors.h:785 +#, c-format +msgid "E310: Block 1 ID wrong (%s not a .swp file?)" +msgstr "E310: Block 1 ID fel (%s inte en .swp-fil?)" + +#: ../errors.h:787 +msgid "E311: Recovery Interrupted" +msgstr "E311: Återskapning avbruten" + +#: ../errors.h:789 +msgid "" +"E312: Errors detected while recovering; look for lines starting with ???" +msgstr "" +"E312: Fel upptäckt vid återskapning; titta efter rader som börjar med ???" + +#: ../errors.h:791 +msgid "E313: Cannot preserve, there is no swap file" +msgstr "E313: Kan inte bevara, det finns ingen växlingsfil" + +#: ../errors.h:793 +msgid "E314: Preserve failed" +msgstr "E314: Bevaring misslyckades" + +#: ../errors.h:809 +msgid "E319: Sorry, the command is not available in this version" +msgstr "E319: Tyvärr, kommandot är inte tillgängligt i den här versionen" + +#: ../errors.h:813 +#, c-format +msgid "E321: Could not reload \"%s\"" +msgstr "E321: Kunde inte läsa om \"%s\"" + +#: ../errors.h:820 +msgid "E324: Can't open PostScript output file" +msgstr "E324: Kan inte öppna PostScript-utfil" + +#: ../errors.h:823 +msgid "E325: ATTENTION" +msgstr "E325: LYSTRING" + +#: ../errors.h:825 +msgid "E326: Too many swap files found" +msgstr "E326: För många växlingsfiler hittade" + +#: ../errors.h:828 +msgid "E327: Part of menu-item path is not sub-menu" +msgstr "E327: Del av menyföremål sökväg är inte undermeny" + +#: ../errors.h:830 +msgid "E328: Menu only exists in another mode" +msgstr "E328: Meny existerar bara i ett annat läge" + +#: ../errors.h:832 +#, c-format +msgid "E329: No menu \"%s\"" +msgstr "E329: Ingen meny \"%s\"" + +#: ../errors.h:834 +msgid "E330: Menu path must not lead to a sub-menu" +msgstr "E330: Menysökväg får inte leda till en undermeny" + +#: ../errors.h:836 +msgid "E331: Must not add menu items directly to menu bar" +msgstr "E331: Får inte lägga till menyföremål direkt till menyrad" + +#: ../errors.h:838 +msgid "E332: Separator cannot be part of a menu path" +msgstr "E332: Avskiljare kam inte vara en del av en menysökväg" + +#: ../errors.h:840 +msgid "E333: Menu path must lead to a menu item" +msgstr "E333: Menysökväg måste leda till ett menyföremål" + +#: ../errors.h:842 +#, c-format +msgid "E334: Menu not found: %s" +msgstr "E334: Meny hittades inte: %s" + +#: ../errors.h:844 +#, c-format +msgid "E335: Menu not defined for %s mode" +msgstr "E335: Meny inte definierad för %s läge" + +#: ../errors.h:846 +msgid "E336: Menu path must lead to a sub-menu" +msgstr "E336: Menysökväg måste leda till en undermeny" + +#: ../errors.h:848 +msgid "E337: Menu not found - check menu names" +msgstr "E337: Meny hittades inte - kontrollera menynamn" + +#: ../errors.h:852 +msgid "E338: Sorry, no file browser in console mode" +msgstr "E338: Tyvärr, ingen filbläddrare i konsoll-läge" + +#: ../errors.h:855 +msgid "E339: Pattern too long" +msgstr "E339: Mönster för långt" + +#: ../errors.h:857 +msgid "E340: Internal error; if you can reproduce please report a bug" +msgstr "" + +#: ../errors.h:861 +#, c-format +msgid "E342: Out of memory! (allocating %lu bytes)" +msgstr "E342: Slut på minne! (allokerar %lu byte)" + +#: ../errors.h:863 +#, c-format +msgid "" +"E343: Invalid path: '**[number]' must be at the end of the path or be " +"followed by '%s'." +msgstr "" +"E343: Ogiltig sökväg: '**[nummer]' måste vara i slutet på sökvägen eller " +"följas av '%s'." + +#: ../errors.h:865 +#, c-format +msgid "E344: Can't find directory \"%s\" in cdpath" +msgstr "E344: Kan inte hitta katalog \"%s\" i cdpath" + +#: ../errors.h:867 +#, c-format +msgid "E345: Can't find file \"%s\" in path" +msgstr "E345: Kan inte hitta fil \"%s\" i sökväg" + +#: ../errors.h:869 +#, c-format +msgid "E346: No more directory \"%s\" found in cdpath" +msgstr "E346: Ingen katalog \"%s\" hittades i cdpath" + +#: ../errors.h:871 +#, c-format +msgid "E347: No more file \"%s\" found in path" +msgstr "E347: Ingen fil \"%s\" hittades i sökvägen" + +#: ../errors.h:873 +msgid "E348: No string under cursor" +msgstr "E348: Ingen sträng under markör" + +#: ../errors.h:875 +msgid "E349: No identifier under cursor" +msgstr "E349: Ingen identifierare under markör" + +#: ../errors.h:878 +msgid "E350: Cannot create fold with current 'foldmethod'" +msgstr "E350: Kan inte skapa veck med nuvarande 'foldmethod'" + +#: ../errors.h:880 +msgid "E351: Cannot delete fold with current 'foldmethod'" +msgstr "E351: Kan inte ta bort veck med nuvarande 'foldmethod'" + +#: ../errors.h:882 +msgid "E352: Cannot erase folds with current 'foldmethod'" +msgstr "E352: Kan inte ta bort veck med aktuell 'foldmethod'" + +#: ../errors.h:885 +#, c-format +msgid "E353: Nothing in register %s" +msgstr "E353: Ingenting i register %s" + +#: ../errors.h:887 +#, c-format +msgid "E354: Invalid register name: '%s'" +msgstr "E354: Otillåtet registernamn: '%s'" + +#: ../errors.h:889 +#, c-format +msgid "E355: Unknown option: %s" +msgstr "E355: Okänd flagga: %s" + +#: ../errors.h:894 +#, c-format +msgid "E357: 'langmap': Matching character missing for %s" +msgstr "E357: 'langmap': Matchande tecken saknas för %s" + +#: ../errors.h:896 +#, c-format +msgid "E358: 'langmap': Extra characters after semicolon: %s" +msgstr "E358: 'langmap': Extra tecken efter semikolon: %s" + +#: ../errors.h:901 +msgid "E359: Screen mode setting not supported" +msgstr "E359: Skärmläge inställning stöds inte" + +#: ../errors.h:905 +msgid "E360: Cannot execute shell with -f option" +msgstr "E360: Kan inte köra skal med -f-flagga" + +#: ../errors.h:910 +msgid "E362: Using a boolean value as a Float" +msgstr "" + +# TODO: Capitalise first word of message? +#: ../errors.h:913 +msgid "E363: Pattern uses more memory than 'maxmempattern'" +msgstr "E363: mönster använder mer minne än 'maxmempattern'" + +#: ../errors.h:916 +#, c-format +msgid "E364: Library call failed for \"%s()\"" +msgstr "E364: Biblioteksanrop misslyckades för \"%s()\"" + +#: ../errors.h:920 +msgid "E365: Failed to print PostScript file" +msgstr "E365: Misslyckades med att skriva ut PostScript-fil" + +#: ../errors.h:924 +#, fuzzy +msgid "E366: Not allowed to enter a popup window" +msgstr "E788: Inte tillåtet att redigera en annan buffert nu" + +#: ../errors.h:927 +#, c-format +msgid "E367: No such group: \"%s\"" +msgstr "E367: Ingen sådan grupp: \"%s\"" + +#: ../errors.h:930 +#, c-format +msgid "E368: Got SIG%s in libcall()" +msgstr "" + +# TODO: Capitalise first word of message? +#: ../errors.h:933 +#, c-format +msgid "E369: Invalid item in %s%%[]" +msgstr "E369: ogiltigt föremål i %s%%[]" + +#: ../errors.h:936 +#, fuzzy, c-format +msgid "E370: Could not load library %s: %s" +msgstr "E370: Kunde inte läsa in bibliotek %s" + +#: ../errors.h:940 +msgid "E371: Command not found" +msgstr "E371: Kommando hittades inte" + +#: ../errors.h:944 +#, c-format +msgid "E372: Too many %%%c in format string" +msgstr "E372: För många %%%c i formatsträng" + +#: ../errors.h:946 +#, c-format +msgid "E373: Unexpected %%%c in format string" +msgstr "E373: Oväntad %%%c i formatsträng" + +#: ../errors.h:948 +msgid "E374: Missing ] in format string" +msgstr "E374: Saknar ] i formatsträng" + +#: ../errors.h:950 +#, c-format +msgid "E375: Unsupported %%%c in format string" +msgstr "E375: Ostödd %%%c i formatsträng" + +#: ../errors.h:952 +#, c-format +msgid "E376: Invalid %%%c in format string prefix" +msgstr "E376: Ogiltig %%%c i formatsträngprefix" + +#: ../errors.h:954 +#, c-format +msgid "E377: Invalid %%%c in format string" +msgstr "E377: Ogiltig %%%c i formatsträng" + +#: ../errors.h:956 +msgid "E378: 'errorformat' contains no pattern" +msgstr "E378: 'errorformat' innehåller inga mönster" + +#: ../errors.h:958 +msgid "E379: Missing or empty directory name" +msgstr "E379: Saknar eller tomt katalognamn" + +#: ../errors.h:960 +msgid "E380: At bottom of quickfix stack" +msgstr "E380: På botten av quickfix-stack" + +#: ../errors.h:962 +msgid "E381: At top of quickfix stack" +msgstr "E381: På toppen av quickfix-stack" + +#: ../errors.h:965 +msgid "E382: Cannot write, 'buftype' option is set" +msgstr "E382: Kan inte skriva, 'buftype'-flagga är satt" + +#: ../errors.h:967 +#, c-format +msgid "E383: Invalid search string: %s" +msgstr "E383: Ogiltig söksträng: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:969 +#, c-format +msgid "E384: Search hit TOP without match for: %s" +msgstr "E384: sökning nådde TOPPEN utan träff av: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:971 +#, c-format +msgid "E385: Search hit BOTTOM without match for: %s" +msgstr "E385: sökning nådde BOTTEN utan träff av: %s" + +#: ../errors.h:973 +msgid "E386: Expected '?' or '/' after ';'" +msgstr "E386: Förväntade '?' eller '/' efter ';'" + +#: ../errors.h:976 +msgid "E387: Match is on current line" +msgstr "E387: Matchning är på aktuell rad" + +#: ../errors.h:978 +msgid "E388: Couldn't find definition" +msgstr "E388: Kunde inte hitta definition" + +#: ../errors.h:980 +msgid "E389: Couldn't find pattern" +msgstr "E389: Kunde inte hitta mönster" + +#: ../errors.h:984 +#, c-format +msgid "E390: Illegal argument: %s" +msgstr "E390: Otillåtet argument: %s" + +#: ../errors.h:986 +#, c-format +msgid "E391: No such syntax cluster: %s" +msgstr "E391: Inget sådant syntax-kluster: %s" + +#: ../errors.h:988 +#, c-format +msgid "E392: No such syntax cluster: %s" +msgstr "E392: Inga sådana syntaxkluster: %s" + +#: ../errors.h:990 +msgid "E393: group[t]here not accepted here" +msgstr "E393: grupper inte tillåtna här" + +#: ../errors.h:992 +#, c-format +msgid "E394: Didn't find region item for %s" +msgstr "E394: Hittade inte regionföremål för %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:994 +msgid "E395: Contains argument not accepted here" +msgstr "E395: innehåller argument som inte är tillåtna här" + +#: ../errors.h:997 +msgid "E397: Filename required" +msgstr "E397: Filnamn krävs" + +#: ../errors.h:999 +#, c-format +msgid "E398: Missing '=': %s" +msgstr "E398: Saknar '=': %s" + +#: ../errors.h:1001 +#, c-format +msgid "E399: Not enough arguments: syntax region %s" +msgstr "E399: Inte tillräckliga argument: syntaxregion %s" + +#: ../errors.h:1003 +msgid "E400: No cluster specified" +msgstr "E400: Inget kluster angivet" + +#: ../errors.h:1005 +#, c-format +msgid "E401: Pattern delimiter not found: %s" +msgstr "E401: Mönsteravgränsare hittades inte: %s" + +#: ../errors.h:1007 +#, c-format +msgid "E402: Garbage after pattern: %s" +msgstr "E402: Skräp efter mönster: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1009 +msgid "E403: syntax sync: Line continuations pattern specified twice" +msgstr "E403: syntax-synk: radfortsättningsmönster angivet två gånger" + +#: ../errors.h:1011 +#, c-format +msgid "E404: Illegal arguments: %s" +msgstr "E404: Otillåtna argument: %s" + +#: ../errors.h:1013 +#, c-format +msgid "E405: Missing equal sign: %s" +msgstr "E405: Saknar likamed-tecken: %s" + +#: ../errors.h:1015 +#, c-format +msgid "E406: Empty argument: %s" +msgstr "E406: Tomt argument: %s" + +#: ../errors.h:1017 +#, c-format +msgid "E407: %s not allowed here" +msgstr "E407: %s inte tillåtet här" + +#: ../errors.h:1019 +#, c-format +msgid "E408: %s must be first in contains list" +msgstr "E408: %s måste vara först i innehållslista" + +#: ../errors.h:1021 +#, c-format +msgid "E409: Unknown group name: %s" +msgstr "E409: Okänt gruppnamn: %s" + +#: ../errors.h:1023 +#, c-format +msgid "E410: Invalid :syntax subcommand: %s" +msgstr "E410: Ogiltigt :syntax-underkommando: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1026 +#, c-format +msgid "E411: Highlight group not found: %s" +msgstr "E411: framhävningsgrupp hittades inte: %s" + +#: ../errors.h:1028 +#, c-format +msgid "E412: Not enough arguments: \":highlight link %s\"" +msgstr "E412: Inte tillräckliga argument: \":highlight länk %s\"" + +#: ../errors.h:1030 +#, c-format +msgid "E413: Too many arguments: \":highlight link %s\"" +msgstr "E413: För många argument: \":highlight länk %s\"" + +# TODO: Capitalise first word of message? +#: ../errors.h:1032 +msgid "E414: Group has settings, highlight link ignored" +msgstr "E414: grupp har inställningar, framhävningslänk ignorerad" + +# TODO: Capitalise first word of message? +#: ../errors.h:1034 +#, c-format +msgid "E415: Unexpected equal sign: %s" +msgstr "E415: oväntat likamed-tecken: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1036 +#, c-format +msgid "E416: Missing equal sign: %s" +msgstr "E416: saknar likamed-tecken: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1038 +#, c-format +msgid "E417: Missing argument: %s" +msgstr "E417: saknar argument: %s" + +#: ../errors.h:1040 +#, c-format +msgid "E418: Illegal value: %s" +msgstr "E418: Otillåtet värde: %s" + +#: ../errors.h:1043 +msgid "E418: I'm a teapot" +msgstr "" + +#: ../errors.h:1046 +msgid "E419: FG color unknown" +msgstr "E419: FG-färg okänd" + +#: ../errors.h:1048 +msgid "E420: BG color unknown" +msgstr "E420: BG-färg okänd" + +#: ../errors.h:1050 +#, c-format +msgid "E421: Color name or number not recognized: %s" +msgstr "E421: Färgnamn eller nummer inte igenkänt: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1052 +#, c-format +msgid "E422: Terminal code too long: %s" +msgstr "E422: terminalkod för lång: %s" + +#: ../errors.h:1054 +#, c-format +msgid "E423: Illegal argument: %s" +msgstr "E423: Otillåtet argument: %s" + +#: ../errors.h:1056 +msgid "E424: Too many different highlighting attributes in use" +msgstr "E424: För många olika framhävningsattribut i användning" + +#: ../errors.h:1058 +msgid "E425: Cannot go before first matching tag" +msgstr "E425: Kan inte gå före första matchande tagg" + +# TODO: Capitalise first word of message? +#: ../errors.h:1060 +#, c-format +msgid "E426: Tag not found: %s" +msgstr "E426: tagg hittades inte: %s" + +#: ../errors.h:1062 +msgid "E427: There is only one matching tag" +msgstr "E427: Det finns bara en matchande tagg" + +#: ../errors.h:1064 +msgid "E428: Cannot go beyond last matching tag" +msgstr "E428: Kan inte gå bortom sista matchande tagg" + +#: ../errors.h:1066 +#, c-format +msgid "E429: File \"%s\" does not exist" +msgstr "E429: Fil \"%s\" existerar inte" + +#: ../errors.h:1069 +#, c-format +msgid "E430: Tag file path truncated for %s\n" +msgstr "E430: Taggfilsökväg trunkerades för %s\n" + +#: ../errors.h:1072 +#, c-format +msgid "E431: Format error in tags file \"%s\"" +msgstr "E431: Formateringsfel i tagg-fil \"%s\"" + +#: ../errors.h:1074 +#, c-format +msgid "E432: Tags file not sorted: %s" +msgstr "E432: Tagg-fil inte sorterad: %s" + +#: ../errors.h:1076 +msgid "E433: No tags file" +msgstr "E433: Ingen tagg-fil" + +#: ../errors.h:1078 +msgid "E434: Can't find tag pattern" +msgstr "E434: Kan inte hitta taggmönster" + +#: ../errors.h:1080 +msgid "E435: Couldn't find tag, just guessing!" +msgstr "E435: Kunde inte hitta tagg, gissar bara!" + +#: ../errors.h:1082 +#, c-format +msgid "E436: No \"%s\" entry in termcap" +msgstr "E436: Ingen \"%s\"-notering i termcap" + +# TODO: Capitalise first word of message? +#: ../errors.h:1084 +msgid "E437: Terminal capability \"cm\" required" +msgstr "E437: terminalkapacitet \"cm\" krävs" + +#: ../errors.h:1093 +msgid "E441: There is no preview window" +msgstr "E441: Det finns inget förhandsvisningsfönster" + +#: ../errors.h:1096 +msgid "E442: Can't split topleft and botright at the same time" +msgstr "E442: Kan inte dela toppvänster och bottenhöger samtidigt" + +#: ../errors.h:1098 +msgid "E443: Cannot rotate when another window is split" +msgstr "E443: Kan inte rotera när ett annat fönster är delat" + +#: ../errors.h:1100 +msgid "E444: Cannot close last window" +msgstr "E444: Kan inte stänga senaste fönstret" + +#: ../errors.h:1102 +msgid "E445: Other window contains changes" +msgstr "E445: Andra fönster innehåller ändringar" + +#: ../errors.h:1104 +msgid "E446: No file name under cursor" +msgstr "E446: Inget filnamn under markör" + +#: ../errors.h:1106 +#, c-format +msgid "E447: Can't find file \"%s\" in path" +msgstr "E447: Kan inte hitta fil \"%s\" i sökväg" + +#: ../errors.h:1109 +#, c-format +msgid "E448: Could not load library function %s" +msgstr "E448: Kunde inte läsa in biblioteksfunktion %s" + +#: ../errors.h:1113 +msgid "E449: Invalid expression received" +msgstr "E449: Ogiltigt uttryck mottaget" + +#: ../errors.h:1117 +msgid "E450: Buffer number, text or a list required" +msgstr "" + +# TODO: Capitalise first word of message? +#: ../errors.h:1121 +#, fuzzy, c-format +msgid "E451: Expected }: %s" +msgstr "E415: oväntat likamed-tecken: %s" + +#: ../errors.h:1123 +#, fuzzy +msgid "E452: Double ; in list of variables" +msgstr "Double ; i listan med variabler" + +#: ../errors.h:1126 +#, fuzzy +msgid "E453: UL color unknown" +msgstr "E419: FG-färg okänd" + +#: ../errors.h:1129 +msgid "E454: Function list was modified" +msgstr "" + +#: ../errors.h:1133 +msgid "E455: Error writing to PostScript output file" +msgstr "E455: Fel vid skrivning av utdata till PostScript-fil" + +#: ../errors.h:1135 +#, c-format +msgid "E456: Can't open file \"%s\"" +msgstr "E456: Kan inte öppna fil \"%s\"" + +#: ../errors.h:1137 +#, c-format +msgid "E456: Can't find PostScript resource file \"%s.ps\"" +msgstr "E456: Kan inte hitta PostScript-källfilen \"%s.ps\"" + +#: ../errors.h:1139 +#, c-format +msgid "E457: Can't read PostScript resource file \"%s\"" +msgstr "E457: Kan inte läsa PostScript-resursfil \"%s\"" + +#: ../errors.h:1143 +#, fuzzy +msgid "E458: Cannot allocate colormap entry, some colors may be incorrect" +msgstr "" +"Vim E458: Kan inte allokera post i färgkarta, några färger kan bli felaktiga" + +#: ../errors.h:1147 +msgid "E459: Cannot go back to previous directory" +msgstr "E459: Kan inte gå tillbaka till tidigare katalog" + +#: ../errors.h:1151 +msgid "E460: Entries missing in mapset() dict argument" +msgstr "" + +#: ../errors.h:1153 +#, c-format +msgid "E461: Illegal variable name: %s" +msgstr "E461: Otillåtet variabelnamn: %s" + +#: ../errors.h:1156 +#, c-format +msgid "E462: Could not prepare for reloading \"%s\"" +msgstr "E462: Kunde inte förbereda för att läsa om \"%s\"" + +#: ../errors.h:1159 +msgid "E463: Region is guarded, cannot modify" +msgstr "E463: Region är vaktad, kan inte modifiera" + +#: ../errors.h:1162 +msgid "E464: Ambiguous use of user-defined command" +msgstr "E464: Otydlig användning av användardefinierat kommando" + +#: ../errors.h:1165 +#, fuzzy, c-format +msgid "E464: Ambiguous use of user-defined command: %s" +msgstr "E464: Otydlig användning av användardefinierat kommando" + +#: ../errors.h:1168 +msgid "E465: :winsize requires two number arguments" +msgstr "E465: :winsize kräver två sifferargument" + +#: ../errors.h:1170 +msgid "E466: :winpos requires two number arguments" +msgstr "E466: :winpos kräver två sifferargument" + +#: ../errors.h:1173 +msgid "E467: Custom completion requires a function argument" +msgstr "E467: Specialkomplettering kräver ett funktionsargument" + +#: ../errors.h:1176 +msgid "E468: Completion argument only allowed for custom completion" +msgstr "E468: Kompletteringsargument bara tillåtet för specialkomplettering" + +# TODO: Capitalise first word of message? +#: ../errors.h:1179 +#, c-format +msgid "E469: Invalid cscopequickfix flag %c for %c" +msgstr "E469: ogiltig cscopequickfix flagga %c för %c" + +#: ../errors.h:1182 +msgid "E470: Command aborted" +msgstr "E470: Kommando avbrutet" + +#: ../errors.h:1184 +msgid "E471: Argument required" +msgstr "E471: Argument krävs" + +#: ../errors.h:1186 +msgid "E472: Command failed" +msgstr "E472: Kommando misslyckades" + +#: ../errors.h:1190 +msgid "E474: Invalid argument" +msgstr "E474: Ogiltigt argument" + +#: ../errors.h:1192 +#, c-format +msgid "E475: Invalid argument: %s" +msgstr "E475: Ogiltigt argument: %s" + +#: ../errors.h:1194 +#, fuzzy, c-format +msgid "E475: Invalid value for argument %s" +msgstr "E475: Ogiltigt argument: %s" + +#: ../errors.h:1197 +#, fuzzy, c-format +msgid "E475: Invalid value for argument %s: %s" +msgstr "E475: Ogiltigt argument: %s" + +#: ../errors.h:1200 +msgid "E476: Invalid command" +msgstr "E476: Ogiltigt kommando" + +#: ../errors.h:1202 +#, fuzzy, c-format +msgid "E476: Invalid command: %s" +msgstr "E476: Ogiltigt kommando" + +#: ../errors.h:1205 +#, fuzzy, c-format +msgid "E476: Invalid command: %s, expected %s" +msgstr "E476: Ogiltigt kommando" + +#: ../errors.h:1208 +msgid "E477: No ! allowed" +msgstr "E477: Inget ! tillåtet" + +#: ../errors.h:1210 +msgid "E478: Don't panic!" +msgstr "E478: Få inte panik!" + +#: ../errors.h:1212 +msgid "E479: No match" +msgstr "E479: Ingen träff" + +#: ../errors.h:1214 +#, c-format +msgid "E480: No match: %s" +msgstr "E480: Ingen träff: %s" + +#: ../errors.h:1216 +msgid "E481: No range allowed" +msgstr "E481: Inget område tillåtet" + +#: ../errors.h:1218 +#, c-format +msgid "E482: Can't create file %s" +msgstr "E482: Kan inte skapa fil %s" + +#: ../errors.h:1220 +msgid "E483: Can't get temp file name" +msgstr "E483: Kan inte hämta temporärt filnamn" + +#: ../errors.h:1222 +#, c-format +msgid "E484: Can't open file %s" +msgstr "E484: Kan inte öppna fil %s" + +#: ../errors.h:1224 +#, c-format +msgid "E485: Can't read file %s" +msgstr "E485: Kan inte läsa fil %s" + +#: ../errors.h:1226 +#, fuzzy +msgid "E486: Pattern not found" +msgstr "E486: Mönster hittades inte: %s" + +#: ../errors.h:1228 +#, c-format +msgid "E486: Pattern not found: %s" +msgstr "E486: Mönster hittades inte: %s" + +#: ../errors.h:1230 +msgid "E487: Argument must be positive" +msgstr "E487: Argument måste vara positivt" + +#: ../errors.h:1233 +#, fuzzy, c-format +msgid "E487: Argument must be positive: %s" +msgstr "E487: Argument måste vara positivt" + +#: ../errors.h:1236 +msgid "E488: Trailing characters" +msgstr "E488: Eftersläpande tecken" + +#: ../errors.h:1238 +#, fuzzy, c-format +msgid "E488: Trailing characters: %s" +msgstr "E488: Eftersläpande tecken" + +# TODO: Capitalise first word of message? +#: ../errors.h:1240 +#, fuzzy +msgid "E489: No call stack to substitute for \"\"" +msgstr "E498: inget :source-filnamn att byta ut \"\" med" + +#: ../errors.h:1243 +msgid "E490: No fold found" +msgstr "E490: Inget veck funnet" + +#: ../errors.h:1247 +#, fuzzy, c-format +msgid "E491: JSON decode error at '%s'" +msgstr "E609: Cscope-fel: %s" + +#: ../errors.h:1250 +msgid "E492: Not an editor command" +msgstr "E492: Inte ett redigerarkommando" + +#: ../errors.h:1252 +msgid "E493: Backwards range given" +msgstr "E493: Bakåtområde givet" + +#: ../errors.h:1254 +msgid "E494: Use w or w>>" +msgstr "E494: Använd w eller w>>" + +# TODO: Capitalise first word of message? +#: ../errors.h:1256 +msgid "E495: No autocommand file name to substitute for \"\"" +msgstr "E495: inget autokommando-filnamn att ersätta \"\" med" + +# TODO: Capitalise first word of message? +#: ../errors.h:1258 +msgid "E496: No autocommand buffer number to substitute for \"\"" +msgstr "E496: inget autokommando-buffernummer att ersätta \"\" med" + +# TODO: Capitalise first word of message? +#: ../errors.h:1260 +msgid "E497: No autocommand match name to substitute for \"\"" +msgstr "E497: inget autokommando-träffnamn att byta ut \"\" med" + +# TODO: Capitalise first word of message? +#: ../errors.h:1262 +msgid "E498: No :source file name to substitute for \"\"" +msgstr "E498: inget :source-filnamn att byta ut \"\" med" + +#: ../errors.h:1265 +#, no-c-format +msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" +msgstr "E499: Tomt filnamn för '%' or '#', fungerar bara med \":p:h\"" + +#: ../errors.h:1267 +msgid "E500: Evaluates to an empty string" +msgstr "E500: Evaluerar till en tom sträng" + +#: ../errors.h:1269 +msgid "E501: At end-of-file" +msgstr "E501: Vid filslut" + +#: ../errors.h:1275 +msgid "is not a file or writable device" +msgstr "är inte en fil eller skrivbar enhet" + +#: ../errors.h:1277 +#, fuzzy, c-format +msgid "E503: \"%s\" is not a file or writable device" +msgstr "är inte en fil eller skrivbar enhet" + +#: ../errors.h:1280 +#, fuzzy +msgid "E503: Coffee is currently not available" +msgstr "E775: Eval-funktionen inte tillgänglig" + +#: ../errors.h:1284 +#, fuzzy +msgid "is read-only (cannot override: \"W\" in 'cpoptions')" +msgstr "är skrivskyddad (lägg till ! för att tvinga)" + +#: ../errors.h:1287 +msgid "is read-only (add ! to override)" +msgstr "är skrivskyddad (lägg till ! för att tvinga)" + +#: ../errors.h:1289 +#, fuzzy, c-format +msgid "E505: \"%s\" is read-only (add ! to override)" +msgstr "är skrivskyddad (lägg till ! för att tvinga)" + +#: ../errors.h:1291 +msgid "E506: Can't write to backup file (add ! to override)" +msgstr "E506: Kan inte skriva till säkerhetskopia (lägg till ! för att tvinga)" + +#: ../errors.h:1293 +#, fuzzy +msgid "E507: Close error for backup file (add ! to write anyway)" +msgstr "E507: Stängningsfel för säkerhetskopia (lägg till ! för att tvinga)" + +#: ../errors.h:1295 +#, fuzzy +msgid "E508: Can't read file for backup (add ! to write anyway)" +msgstr "" +"E508: Kan inte läsa fil för säkerhetskopia (lägg till ! för att tvinga)" + +#: ../errors.h:1297 +msgid "E509: Cannot create backup file (add ! to override)" +msgstr "E509: Kan inte skapa säkerhetskopia (lägg till ! för att tvinga)" + +#: ../errors.h:1299 +#, fuzzy +msgid "E510: Can't make backup file (add ! to write anyway)" +msgstr "E510: Kan inte göra säkerhetskopia (lägg till ! för att tvinga)" + +#: ../errors.h:1302 +msgid "E511: NetBeans already connected" +msgstr "" + +#: ../errors.h:1305 +msgid "E512: Close failed" +msgstr "E512: Stängning misslyckades" + +# TODO: Capitalise first word of message? +#: ../errors.h:1307 +msgid "E513: Write error, conversion failed (make 'fenc' empty to override)" +msgstr "" +"E513: skrivfel, konvertering misslyckades (gör 'fenc' tom för att tvinga)" + +# TODO: Capitalise first word of message? +#: ../errors.h:1309 +#, fuzzy, c-format +msgid "" +"E513: Write error, conversion failed in line %ld (make 'fenc' empty to " +"override)" +msgstr "" +"E513: skrivfel, konvertering misslyckades (gör 'fenc' tom för att tvinga)" + +# TODO: Capitalise first word of message? +#: ../errors.h:1311 +msgid "E514: Write error (file system full?)" +msgstr "E514: skrivfel (filsystem fullt?)" + +#: ../errors.h:1313 +msgid "E515: No buffers were unloaded" +msgstr "E515: Inga buffertar blev urladdade" + +#: ../errors.h:1315 +msgid "E516: No buffers were deleted" +msgstr "E516: Inga buffertar blev borttagna" + +#: ../errors.h:1317 +msgid "E517: No buffers were wiped out" +msgstr "E517: Inga buffertar blev utraderade" + +#: ../errors.h:1319 +msgid "E518: Unknown option" +msgstr "E518: Okänd flagga" + +#: ../errors.h:1321 +msgid "E519: Option not supported" +msgstr "E519: Flagga stöds inte" + +#: ../errors.h:1323 +msgid "E520: Not allowed in a modeline" +msgstr "E520: Inte tillåtet i en lägesrad" + +#: ../errors.h:1325 +msgid "E521: Number required after =" +msgstr "E521: Nummer krävs efter =" + +#: ../errors.h:1327 +#, fuzzy, c-format +msgid "E521: Number required: &%s = '%s'" +msgstr "E521: Nummer krävs efter =" + +#: ../errors.h:1329 +msgid "E522: Not found in termcap" +msgstr "E522: Inte hittat i termcap" + +#: ../errors.h:1331 +msgid "E523: Not allowed here" +msgstr "E523: Inte tillåtet här" + +#: ../errors.h:1333 +msgid "E524: Missing colon" +msgstr "E524: Saknar kolon" + +#: ../errors.h:1335 +msgid "E525: Zero length string" +msgstr "E525: Nollängdssträng" + +#: ../errors.h:1338 +#, c-format +msgid "E526: Missing number after <%s>" +msgstr "E526: Saknar nummer efter <%s>" + +#: ../errors.h:1340 +msgid "E527: Missing comma" +msgstr "E527: Saknar komma" + +#: ../errors.h:1342 +msgid "E528: Must specify a ' value" +msgstr "E528: Måste ange ett '-värde" + +#: ../errors.h:1345 +msgid "E529: Cannot set 'term' to empty string" +msgstr "E529: Kan inte sätta 'term' till tom sträng" + +#: ../errors.h:1348 +#, fuzzy +msgid "E530: Cannot change 'term' in the GUI" +msgstr "E530: Kan inte ändra term i GUI" + +#: ../errors.h:1350 +msgid "E531: Use \":gui\" to start the GUI" +msgstr "E531: Använd \":gui\" för att starta GUI" + +#: ../errors.h:1354 +msgid "E532: Highlighting color name too long in defineAnnoType" +msgstr "" + +# TODO: Capitalise first word of message? +#: ../errors.h:1358 +msgid "E533: Can't select wide font" +msgstr "E533: kan inte välja brett typsnitt" + +#: ../errors.h:1360 +msgid "E534: Invalid wide font" +msgstr "E534: Ogiltigt brett typsnitt" + +#: ../errors.h:1363 +#, c-format +msgid "E535: Illegal character after <%c>" +msgstr "E535: Otillåtet tecken efter <%c>" + +# TODO: Capitalise first word of message? +#: ../errors.h:1366 +msgid "E536: Comma required" +msgstr "E536: komma krävs" + +#: ../errors.h:1368 +#, c-format +msgid "E537: 'commentstring' must be empty or contain %s" +msgstr "E537: 'commentstring' måste vara tom eller innehålla %s" + +#: ../errors.h:1371 +#, fuzzy, c-format +msgid "E538: Pattern found in every line: %s" +msgstr "Mönster funnet i varje rad: %s" + +#: ../errors.h:1373 +#, c-format +msgid "E539: Illegal character <%s>" +msgstr "E539: Otillåtet tecken <%s>" + +#: ../errors.h:1376 +msgid "E540: Unclosed expression sequence" +msgstr "E540: Ostängd uttryckssekvens" + +# TODO: Capitalise first word of message? +#: ../errors.h:1379 +msgid "E542: Unbalanced groups" +msgstr "E542: obalanserade grupper" + +#: ../errors.h:1383 +msgid "E543: Not a valid codepage" +msgstr "E543: Inte en godkänd teckentabell" + +#: ../errors.h:1387 +msgid "E544: Keymap file not found" +msgstr "E544: Keymap-fil hittades inte" + +#: ../errors.h:1391 +msgid "E545: Missing colon" +msgstr "E545: Saknar kolon" + +#: ../errors.h:1393 +msgid "E546: Illegal mode" +msgstr "E546: Otillåtet läge" + +#: ../errors.h:1397 +msgid "E547: Illegal mouseshape" +msgstr "E547: Otillåten musform" + +# TODO: Capitalise first word of message? +#: ../errors.h:1401 +msgid "E548: Digit expected" +msgstr "E548: siffra förväntades" + +#: ../errors.h:1403 +msgid "E549: Illegal percentage" +msgstr "E549: Otillåten procentsats" + +#: ../errors.h:1407 +msgid "E550: Missing colon" +msgstr "E550: Saknar kolon" + +#: ../errors.h:1409 +msgid "E551: Illegal component" +msgstr "E551: Otillåten komponent" + +# TODO: Capitalise first word of message? +#: ../errors.h:1411 +msgid "E552: Digit expected" +msgstr "E552: siffra förväntades" + +#: ../errors.h:1415 +msgid "E553: No more items" +msgstr "E553: Inga fler föremål" + +#: ../errors.h:1418 +#, c-format +msgid "E554: Syntax error in %s{...}" +msgstr "E554: Syntaxfel i %s{...}" + +# TODO: Capitalise first word of message? +#: ../errors.h:1420 +msgid "E555: At bottom of tag stack" +msgstr "E555: på botten av taggstack" + +# TODO: Capitalise first word of message? +#: ../errors.h:1422 +msgid "E556: At top of tag stack" +msgstr "E556: på toppen av taggstack" + +#: ../errors.h:1424 +msgid "E557: Cannot open termcap file" +msgstr "E557: Kan inte öppna termcap-fil" + +#: ../errors.h:1426 +msgid "E558: Terminal entry not found in terminfo" +msgstr "E558: Terminalnotering hittades inte i terminfo" + +#: ../errors.h:1429 +msgid "E559: Terminal entry not found in termcap" +msgstr "E559: Terminalnotering hittades inte i termcap" + +#: ../errors.h:1433 +#, c-format +msgid "E560: Usage: cs[cope] %s" +msgstr "E560: Användning: cs[cope] %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1435 +msgid "E561: Unknown cscope search type" +msgstr "E561: okänd cscope-söktyp" + +#: ../errors.h:1437 +msgid "E562: Usage: cstag " +msgstr "E562: Användning: cstag " + +#: ../errors.h:1439 +#, c-format +msgid "E563: stat(%s) error: %d" +msgstr "E563: stat(%s)-fel: %d" + +#: ../errors.h:1441 +#, c-format +msgid "E564: %s is not a directory or a valid cscope database" +msgstr "E564: %s är inte en katalog eller en godkänd cscope-databas" + +#: ../errors.h:1444 +#, fuzzy +msgid "E565: Not allowed to change text or change window" +msgstr "E788: Inte tillåtet att redigera en annan buffert nu" + +#: ../errors.h:1447 +msgid "E566: Could not create cscope pipes" +msgstr "E566: Kunde inte skapa cscope-rör" + +# TODO: Capitalise first word of message? +#: ../errors.h:1449 +msgid "E567: No cscope connections" +msgstr "E567: inga cscope-anslutningar" + +# TODO: Capitalise first word of message? +#: ../errors.h:1451 +msgid "E568: Duplicate cscope database not added" +msgstr "E568: dubblerad cscope-databas inte lagd till" + +#: ../errors.h:1458 +msgid "" +"E571: Sorry, this command is disabled: the Tcl library could not be loaded." +msgstr "" +"E571: Tyvärr, detta kommando är inaktiverat: Tcl-biblioteket kunde inte " +"läsas in." + +# TODO: Capitalise first word of message? +#: ../errors.h:1462 +#, c-format +msgid "E572: Exit code %d" +msgstr "E572: avslutningskod %d" + +#: ../errors.h:1466 +#, c-format +msgid "E573: Invalid server id used: %s" +msgstr "E573: Ogiltigt server-id använt: %s" + +#: ../errors.h:1470 +#, c-format +msgid "E574: Unknown register type %d" +msgstr "E574: Okänd registertyp %d" + +#: ../errors.h:1473 +msgid "Illegal starting char" +msgstr "Otillåtet starttecken" + +#: ../errors.h:1476 +msgid "Missing '>'" +msgstr "Saknar '>'" + +#: ../errors.h:1479 +msgid "Illegal register name" +msgstr "Otillåtet registernamn" + +# TODO: Capitalise first word of message? +#: ../errors.h:1484 +msgid "E579: :if nesting too deep" +msgstr "E579: :if nästlad för djupt" + +# TODO: Capitalise first word of message? +#: ../errors.h:1486 +#, fuzzy +msgid "E579: Block nesting too deep" +msgstr "E579: :if nästlad för djupt" + +#: ../errors.h:1488 +msgid "E580: :endif without :if" +msgstr "E580: :endif utan :if" + +#: ../errors.h:1490 +msgid "E581: :else without :if" +msgstr "E581: :else utan :if" + +#: ../errors.h:1492 +msgid "E582: :elseif without :if" +msgstr "E582: :elseif utan :if" + +# TODO: Capitalise first word of message? +#: ../errors.h:1494 +msgid "E583: Multiple :else" +msgstr "E583: flera :else" + +#: ../errors.h:1496 +msgid "E584: :elseif after :else" +msgstr "E584: :elseif efter :else" + +#: ../errors.h:1498 +msgid "E585: :while/:for nesting too deep" +msgstr "E585: :while/:for nästlad för djupt" + +#: ../errors.h:1500 +msgid "E586: :continue without :while or :for" +msgstr "E586: :continue utan :while eller :for" + +#: ../errors.h:1502 +msgid "E587: :break without :while or :for" +msgstr "E587: :break utan :while eller :for" + +#: ../errors.h:1504 +msgid "E588: :endwhile without :while" +msgstr "E588: :endwhile utan :while" + +#: ../errors.h:1506 +msgid "E588: :endfor without :for" +msgstr "E588: :endfor utan :for" + +#: ../errors.h:1509 +msgid "E589: 'backupext' and 'patchmode' are equal" +msgstr "E589: 'backuptext' och 'patchmode' är lika" + +#: ../errors.h:1512 +msgid "E590: A preview window already exists" +msgstr "E590: Ett förhandsvisningsfönster existerar redan" + +#: ../errors.h:1515 +msgid "E591: 'winheight' cannot be smaller than 'winminheight'" +msgstr "E591: 'winheight' kan inte vara mindre än 'winminheight'" + +#: ../errors.h:1517 +msgid "E592: 'winwidth' cannot be smaller than 'winminwidth'" +msgstr "E592: 'winwidth' kan inte vara mindre än 'winminwidth'" + +#: ../errors.h:1519 +#, c-format +msgid "E593: Need at least %d lines" +msgstr "E593: Behöver åtminstone %d rader" + +#: ../errors.h:1521 +#, c-format +msgid "E594: Need at least %d columns" +msgstr "E594: Behöver åtminstone %d kolumner" + +#: ../errors.h:1524 +#, fuzzy +msgid "E595: 'showbreak' contains unprintable or wide character" +msgstr "E595: innehåller outskrivbara eller breda tecken" + +#: ../errors.h:1528 +msgid "E596: Invalid font(s)" +msgstr "E596: Ogiltig(a) typsnitt" + +# TODO: Capitalise first word of message? +#: ../errors.h:1531 +msgid "E597: Can't select fontset" +msgstr "E597: kan inte välja typsnittsuppsättning" + +#: ../errors.h:1533 +msgid "E598: Invalid fontset" +msgstr "E598: Ogiltig typsnittsuppsättning" + +#: ../errors.h:1538 +msgid "E599: Value of 'imactivatekey' is invalid" +msgstr "E599: Värdet av 'imactivatekey' är ogiltigt" + +#: ../errors.h:1542 +msgid "E600: Missing :endtry" +msgstr "E600: Saknar :endtry" + +#: ../errors.h:1544 +msgid "E601: :try nesting too deep" +msgstr "E601: :try nästlad för djupt" + +#: ../errors.h:1546 +msgid "E602: :endtry without :try" +msgstr "E602: :endtry utan :try" + +#: ../errors.h:1548 +msgid "E603: :catch without :try" +msgstr "E603: :catch utan :try" + +#: ../errors.h:1550 +msgid "E604: :catch after :finally" +msgstr "E604: :catch efter :finally" + +#: ../errors.h:1552 +#, c-format +msgid "E605: Exception not caught: %s" +msgstr "E605: Undantag inte fångat: %s" + +#: ../errors.h:1554 +msgid "E606: :finally without :try" +msgstr "E606: :finally utan :try" + +# TODO: Capitalise first word of message? +#: ../errors.h:1556 +msgid "E607: Multiple :finally" +msgstr "E607: flera :finally" + +#: ../errors.h:1558 +msgid "E608: Cannot :throw exceptions with 'Vim' prefix" +msgstr "E608: Kan inte :throw undantag med 'Vim'-prefix" + +#: ../errors.h:1562 +#, c-format +msgid "E609: Cscope error: %s" +msgstr "E609: Cscope-fel: %s" + +# TODO: Capitalise first word of message? +#: ../errors.h:1565 +#, fuzzy +msgid "E610: No argument to delete" +msgstr "E144: ickenumeriskt argument till :z" + +#: ../errors.h:1568 +#, fuzzy +msgid "E611: Using a Special as a Number" +msgstr "E745: Använder en Lista som en siffra" + +#: ../errors.h:1572 +msgid "E612: Too many signs defined" +msgstr "E612: För många signaturer definierade" + +#: ../errors.h:1576 #, c-format -msgid "E153: Unable to open %s for reading" -msgstr "E153: Kunde inte öppna %s för läsning" +msgid "E613: Unknown printer font: %s" +msgstr "E613: Okänt skrivartypsnitt: %s" + +#: ../errors.h:1582 +#, fuzzy, c-format +msgid "E616: Object required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" + +#: ../errors.h:1586 +#, fuzzy +msgid "E617: Cannot be changed in the GTK GUI" +msgstr "E617: Kan inte bli ändrat i GTK+ 2-GUI" +# TODO: Capitalise first word of message? +#: ../errors.h:1590 #, c-format -msgid "E670: Mix of help file encodings within a language: %s" -msgstr "E670: Blandning av hjälpfilskodning inom ett språk: %s" +msgid "E618: File \"%s\" is not a PostScript resource file" +msgstr "E618: fil \"%s\" är inte en PostScript-resursfil" +# TODO: Capitalise first word of message? +#: ../errors.h:1592 #, c-format -msgid "E154: Duplicate tag \"%s\" in file %s/%s" -msgstr "E154: Duplicerad tagg \"%s\" i fil %s/%s" +msgid "E619: File \"%s\" is not a supported PostScript resource file" +msgstr "E619: fil \"%s\" är inte en PostScript-resursfil som stöds" +#: ../errors.h:1594 #, c-format -msgid "E160: Unknown sign command: %s" -msgstr "E160: Okänt signaturkommando: %s" +msgid "E620: Unable to convert to print encoding \"%s\"" +msgstr "E620: Kunde inte konvertera från utskriftkodning \"%s\"" -msgid "E156: Missing sign name" -msgstr "E156: Saknar signaturnamn" +#: ../errors.h:1596 +#, c-format +msgid "E621: \"%s\" resource file has wrong version" +msgstr "E621: \"%s\"-källfilen har fel version" -msgid "E612: Too many signs defined" -msgstr "E612: För många signaturer definierade" +#: ../errors.h:1600 +msgid "E622: Could not fork for cscope" +msgstr "E622: Kunde inte grena för cscope" +#: ../errors.h:1603 +msgid "E623: Could not spawn cscope process" +msgstr "E623: Kunde inte starta cscope-process" + +#: ../errors.h:1608 #, c-format -msgid "E239: Invalid sign text: %s" -msgstr "E239: Ogiltig signaturtext: %s" +msgid "E624: Can't open file \"%s\"" +msgstr "E624: Kan inte öppna fil \"%s\"" +# TODO: Capitalise first word of message? +#: ../errors.h:1612 #, c-format -msgid "E155: Unknown sign: %s" -msgstr "E155: Okänd signatur: %s" +msgid "E625: Cannot open cscope database: %s" +msgstr "E625: kan inte öppna cscope-databas: %s" -msgid "E159: Missing sign number" -msgstr "E159: Saknar signaturnummer" +# TODO: Capitalise first word of message? +#: ../errors.h:1614 +msgid "E626: Cannot get cscope database information" +msgstr "E626: kan inte hämta cscope-databasinformation" + +#: ../errors.h:1618 +#, fuzzy, c-format +msgid "E627: Missing colon: %s" +msgstr "E524: Saknar kolon" + +# TODO: Capitalise first word of message? +#: ../errors.h:1620 +#, fuzzy, c-format +msgid "E628: Missing ! or / in: %s" +msgstr "E416: saknar likamed-tecken: %s" +#: ../errors.h:1628 #, c-format -msgid "E158: Invalid buffer name: %s" +msgid "E630: %s(): Write while not connected" +msgstr "" + +#: ../errors.h:1630 +#, fuzzy, c-format +msgid "E631: %s(): Write failed" +msgstr "E314: Bevaring misslyckades" + +#: ../errors.h:1634 +msgid "E632: Invalid buffer identifier in getLength" +msgstr "" + +#: ../errors.h:1636 +msgid "E633: Invalid buffer identifier in getText" +msgstr "" + +#: ../errors.h:1638 +#, fuzzy +msgid "E634: Invalid buffer identifier in remove" +msgstr "E158: Ogiltigt buffertnamn: %s" + +#: ../errors.h:1640 +#, fuzzy +msgid "E635: Invalid buffer identifier in insert" +msgstr "E158: Ogiltigt buffertnamn: %s" + +#: ../errors.h:1642 +#, fuzzy +msgid "E636: Invalid buffer identifier in create" msgstr "E158: Ogiltigt buffertnamn: %s" +#: ../errors.h:1644 +msgid "E637: Invalid buffer identifier in startDocumentListen" +msgstr "" + +#: ../errors.h:1646 +msgid "E638: Invalid buffer identifier in stopDocumentListen" +msgstr "" + +#: ../errors.h:1648 +#, fuzzy +msgid "E639: Invalid buffer identifier in setTitle" +msgstr "E692: Ogiltig operation för Lista" + +#: ../errors.h:1650 +msgid "E640: Invalid buffer identifier in initDone" +msgstr "" + +#: ../errors.h:1652 +msgid "E641: Invalid buffer identifier in setBufferNumber" +msgstr "" + +#: ../errors.h:1654 #, c-format -msgid "E157: Invalid sign ID: %ld" -msgstr "E157: Ogiltigt signatur-ID: %ld" +msgid "E642: File %s not found in setBufferNumber" +msgstr "" -msgid " (NOT FOUND)" -msgstr " (INTE HITTADE)" +#: ../errors.h:1656 +msgid "E643: Invalid buffer identifier in setFullName" +msgstr "" -msgid " (not supported)" -msgstr " (stöds inte)" +#: ../errors.h:1658 +msgid "E644: Invalid buffer identifier in editFile" +msgstr "" -msgid "[Deleted]" -msgstr "[Borttagen]" +#: ../errors.h:1660 +#, fuzzy +msgid "E645: Invalid buffer identifier in setVisible" +msgstr "E158: Ogiltigt buffertnamn: %s" -msgid "Entering Ex mode. Type \"visual\" to go to Normal mode." -msgstr "Går in i Ex-läge. Skriv \"visual\" för att gå till Normal-läge." +#: ../errors.h:1662 +msgid "E646: Invalid buffer identifier in setModified" +msgstr "" -msgid "E501: At end-of-file" -msgstr "E501: Vid filslut" +#: ../errors.h:1664 +#, fuzzy +msgid "E647: Invalid buffer identifier in setDot" +msgstr "E158: Ogiltigt buffertnamn: %s" -msgid "E169: Command too recursive" -msgstr "E169: Kommando för rekursivt" +#: ../errors.h:1666 +#, fuzzy +msgid "E648: Invalid buffer identifier in close" +msgstr "E158: Ogiltigt buffertnamn: %s" + +#: ../errors.h:1669 +msgid "E650: Invalid buffer identifier in defineAnnoType" +msgstr "" + +#: ../errors.h:1671 +#, fuzzy +msgid "E651: Invalid buffer identifier in addAnno" +msgstr "E158: Ogiltigt buffertnamn: %s" + +#: ../errors.h:1673 +#, fuzzy +msgid "E652: Invalid buffer identifier in getAnno" +msgstr "E158: Ogiltigt buffertnamn: %s" + +#: ../errors.h:1677 +#, fuzzy, c-format +msgid "E654: Missing delimiter after search pattern: %s" +msgstr "E526: Saknar nummer efter <%s>" + +#: ../errors.h:1680 +msgid "E655: Too many symbolic links (cycle?)" +msgstr "E655: För många symboliska länkar (slinga?)" +#: ../errors.h:1685 +msgid "NetBeans disallows writes of unmodified buffers" +msgstr "NetBeans tillåter inte skrivning av omodifierade buffertar" + +#: ../errors.h:1688 +msgid "Partial writes disallowed for NetBeans buffers" +msgstr "Delvisa skrivningar tillåts inte i NetBeans-buffertar" + +#: ../errors.h:1690 +#, fuzzy, c-format +msgid "E658: NetBeans connection lost for buffer %d" +msgstr "E658: NetBeans-anslutning tappad för buffert %ld" + +#: ../errors.h:1694 +msgid "E659: Cannot invoke Python recursively" +msgstr "E659: Kan inte anropa Python rekursivt" + +#: ../errors.h:1702 #, c-format -msgid "E605: Exception not caught: %s" -msgstr "E605: Undantag inte fångat: %s" +msgid "E661: Sorry, no '%s' help for %s" +msgstr "E661: Tyvärr, ingen \"%s\"-hjälp för %s" -msgid "End of sourced file" -msgstr "Slut på läst fil" +#: ../errors.h:1705 +msgid "E662: At start of changelist" +msgstr "E662: Vid början av ändringslista" -msgid "End of function" -msgstr "Slut på funktion" +#: ../errors.h:1707 +msgid "E663: At end of changelist" +msgstr "E663: Vid slutet av ändringslista" -msgid "E464: Ambiguous use of user-defined command" -msgstr "E464: Otydlig användning av användardefinierat kommando" +# TODO: Capitalise first word of message? +#: ../errors.h:1709 +msgid "E664: Changelist is empty" +msgstr "E664: ändringslista är tom" -msgid "E492: Not an editor command" -msgstr "E492: Inte ett redigerarkommando" +#: ../errors.h:1712 +msgid "E665: Cannot start GUI, no valid font found" +msgstr "E665: Kan inte starta GUI, ingen giltig font hittad" -msgid "E493: Backwards range given" -msgstr "E493: Bakåtområde givet" +# TODO: Capitalise first word of message? +#: ../errors.h:1716 +#, c-format +msgid "E666: Compiler not supported: %s" +msgstr "E666: kompilator stöds inte: %s" -msgid "Backwards range given, OK to swap" -msgstr "Bakåtområde givet, OK att växla" +#: ../errors.h:1720 +msgid "E667: Fsync failed" +msgstr "E667: Fsync misslyckades" -msgid "E494: Use w or w>>" -msgstr "E494: Använd w eller w>>" +#: ../errors.h:1724 +#, c-format +msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" +msgstr "E668: Fel rättighetsläge för NetBeans-anslutningens info fil: \"%s\"" -msgid "E319: Sorry, the command is not available in this version" -msgstr "E319: Tyvärr, kommandot är inte tillgängligt i den här versionen" +#: ../errors.h:1727 +msgid "E669: Unprintable character in group name" +msgstr "E669: Outskrivbart tecken i gruppnamn" + +#: ../errors.h:1729 +#, c-format +msgid "E670: Mix of help file encodings within a language: %s" +msgstr "E670: Blandning av hjälpfilskodning inom ett språk: %s" + +#: ../errors.h:1732 +#, c-format +msgid "E671: Cannot find window title \"%s\"" +msgstr "E671: Kan inte hitta fönstertitel \"%s\"" + +#: ../errors.h:1734 +msgid "E672: Unable to open window inside MDI application" +msgstr "E672: Kunde inte öppna fönster inuti MDI-applikation" + +#: ../errors.h:1738 +#, fuzzy +msgid "E673: Incompatible multi-byte encoding and character set" +msgstr "E673: Inkompatibel flerbitskodning och teckenuppsättning." + +#: ../errors.h:1740 +msgid "E674: printmbcharset cannot be empty with multi-byte encoding." +msgstr "E674: printmbcharset kan inte vara tom med flerbitskodning." + +#: ../errors.h:1742 +msgid "E675: No default font specified for multi-byte printing." +msgstr "E675: Ingen standardfont angiven för flerbitsutskrifter." + +#: ../errors.h:1745 +#, fuzzy, c-format +msgid "E676: No matching autocommands for buftype=%s buffer" +msgstr "E676: Inga matchande autokommandon för acwrite buffert" + +#: ../errors.h:1748 +msgid "E677: Error writing temp file" +msgstr "E677: Fel vid skrivning av temporär fil" + +#: ../errors.h:1751 +#, c-format +msgid "E678: Invalid character after %s%%[dxouU]" +msgstr "E678: Ogiltigt tecken efter %s%%[dxouU]" + +# TODO: Capitalise first word of message? +#: ../errors.h:1754 +msgid "E679: Recursive loop loading syncolor.vim" +msgstr "E679: rekursiv loop laddar syncolor.vim" + +#: ../errors.h:1757 +#, fuzzy, c-format +msgid "E680: : invalid buffer number" +msgstr "E680: : ogiltigt buffertnummer " + +#: ../errors.h:1760 +msgid "E681: Buffer is not loaded" +msgstr "E681: Buffert är inte laddad" + +#: ../errors.h:1764 +msgid "E682: Invalid search pattern or delimiter" +msgstr "E682: Ogiltigt sökmönster eller delimiter" + +#: ../errors.h:1766 +msgid "E683: File name missing or invalid pattern" +msgstr "E683: Filnamn saknas eller ogiltigt mönster" + +# TODO: Capitalise first word of message? +#: ../errors.h:1770 +#, c-format +msgid "E684: List index out of range: %ld" +msgstr "E684: listindex utanför område: %ld" + +#: ../errors.h:1773 +#, c-format +msgid "E685: Internal error: %s" +msgstr "E685: Internt fel: %s" + +#: ../errors.h:1776 +#, c-format +msgid "E686: Argument of %s must be a List" +msgstr "E686: Argument av %s måste vara en List" + +#: ../errors.h:1778 +msgid "E687: Less targets than List items" +msgstr "E687: Färre mål än List-poster" + +#: ../errors.h:1780 +msgid "E688: More targets than List items" +msgstr "E688: Fler mål än List-poster" + +#: ../errors.h:1782 +#, fuzzy, c-format +msgid "E689: Index not allowed after a %s: %s" +msgstr "E790: undojoin är inte tillåtet efter undo" + +#: ../errors.h:1784 +msgid "E690: Missing \"in\" after :for" +msgstr "E690: Saknar \"in\" efter :for" + +#: ../errors.h:1786 +msgid "E691: Can only compare List with List" +msgstr "E691: Kan bara jämföra Lista med Lista" + +#: ../errors.h:1788 +msgid "E692: Invalid operation for List" +msgstr "E692: Ogiltig operation för Lista" + +#: ../errors.h:1790 +#, c-format +msgid "E693: Class or class typealias required for argument %d" +msgstr "" + +#: ../errors.h:1792 +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: Ogiltig operation för Funcrefs" + +#: ../errors.h:1794 +msgid "E695: Cannot index a Funcref" +msgstr "E695: Kan inte indexera en Funcref" + +#: ../errors.h:1796 +#, c-format +msgid "E696: Missing comma in List: %s" +msgstr "E696: Saknar komma i Lista: %s" + +#: ../errors.h:1798 +#, c-format +msgid "E697: Missing end of List ']': %s" +msgstr "E697: Saknar slut på Lista ']': %s" -msgid "E172: Only one file name allowed" -msgstr "E172: Bara ett filnamn tillåtet" +# TODO: Capitalise first word of message? +#: ../errors.h:1800 +msgid "E698: Variable nested too deep for making a copy" +msgstr "E698: variabel nästlad för djupt för att skapa en kopia" -msgid "1 more file to edit. Quit anyway?" -msgstr "1 fil till att redigera. Avsluta ändå?" +#: ../errors.h:1802 +msgid "E699: Too many arguments" +msgstr "E699: För många argument" +#: ../errors.h:1804 #, c-format -msgid "%d more files to edit. Quit anyway?" -msgstr "%d filer till att redigera. Avsluta ändå?" +msgid "E700: Unknown function: %s" +msgstr "E700: Okänd funktion: %s" -msgid "E173: 1 more file to edit" -msgstr "E173: 1 fil till att redigera" +#: ../errors.h:1806 +msgid "E701: Invalid type for len()" +msgstr "E701: Ogiltig typ för len()" -#, c-format -msgid "E173: %ld more files to edit" -msgstr "E173: %ld filer till att redigera" +#: ../errors.h:1808 +msgid "E702: Sort compare function failed" +msgstr "E702: Jämförelsefunktionen för sortering misslyckades" -msgid "E174: Command already exists: add ! to replace it" -msgstr "E174: Kommando existerar redan: lägg till ! för att ersätta det" +#: ../errors.h:1810 +msgid "E703: Using a Funcref as a Number" +msgstr "E703: Använder en Funcref som en siffra" -msgid "" -"\n" -" Name Args Range Complete Definition" -msgstr "" -"\n" -" Namn Arg Område Färdigt Definition" +#: ../errors.h:1812 +#, c-format +msgid "E704: Funcref variable name must start with a capital: %s" +msgstr "E704: Variabelnamn för Funcref måste börja med en versal: %s" -msgid "No user-defined commands found" -msgstr "Inga användardefinierade kommandon hittade" +#: ../errors.h:1814 +#, c-format +msgid "E705: Variable name conflicts with existing function: %s" +msgstr "E705: Variabelnamn konflikterar med existerande funktion %s" -msgid "E175: No attribute specified" -msgstr "E175: Inga attribut angivna" +#: ../errors.h:1816 +#, fuzzy, c-format +msgid "E706: Argument of %s must be a List, String or Dictionary" +msgstr "E712: Argument av %s måste vara en Lista eller Tabell" -msgid "E176: Invalid number of arguments" -msgstr "E176: Ogiltigt antal argument" +#: ../errors.h:1818 +#, fuzzy, c-format +msgid "E707: Function name conflicts with variable: %s" +msgstr "E746: Funktionsnamn matchar inte skriptfilnamn: %s" -msgid "E177: Count cannot be specified twice" -msgstr "E177: Antal kan inte anges två gånger" +#: ../errors.h:1820 +msgid "E708: [:] must come last" +msgstr "E708: [:] måste komma sist" -msgid "E178: Invalid default value for count" -msgstr "E178: Ogiltigt standardvärde för antal" +#: ../errors.h:1822 +#, fuzzy +msgid "E709: [:] requires a List or Blob value" +msgstr "E709: [:] kräver ett List-värde" -# TODO: Capitalise first word of message? -msgid "E179: Argument required for -complete" -msgstr "E179: argument krävs för -complete" +#: ../errors.h:1824 +#, fuzzy +msgid "E710: List value has more items than targets" +msgstr "E710: List-värde har mer föremål än mål" + +#: ../errors.h:1826 +#, fuzzy +msgid "E711: List value does not have enough items" +msgstr "E711: List-värde har inte tillräckligt med föremål" +#: ../errors.h:1828 #, c-format -msgid "E181: Invalid attribute: %s" -msgstr "E181: Ogiltigt attribut: %s" +msgid "E712: Argument of %s must be a List or Dictionary" +msgstr "E712: Argument av %s måste vara en Lista eller Tabell" -msgid "E182: Invalid command name" -msgstr "E182: Ogiltigt kommandonamn" +#: ../errors.h:1830 +msgid "E713: Cannot use empty key for Dictionary" +msgstr "E713: Kan inte använda tom nyckel för Tabell" -msgid "E183: User defined commands must start with an uppercase letter" -msgstr "E183: Användardefinierade kommandon måste börja med en stor bokstav" +#: ../errors.h:1832 +msgid "E714: List required" +msgstr "E714: Lista krävs" -#, c-format -msgid "E184: No such user-defined command: %s" -msgstr "E184: Inget sådant användardefinierat kommando: %s" +#: ../errors.h:1834 +msgid "E715: Dictionary required" +msgstr "E715: Tabell krävs" -#, c-format -msgid "E180: Invalid complete value: %s" -msgstr "E180: Ogiltigt kompletteringsvärde: %s" +#: ../errors.h:1836 +#, fuzzy, c-format +msgid "E716: Key not present in Dictionary: \"%s\"" +msgstr "E716: Tangent finns inte i Tabell: %s" -msgid "E468: Completion argument only allowed for custom completion" -msgstr "E468: Kompletteringsargument bara tillåtet för specialkomplettering" +#: ../errors.h:1838 +msgid "E717: Dictionary entry already exists" +msgstr "E717: Tabell-post existerar redan" -msgid "E467: Custom completion requires a function argument" -msgstr "E467: Specialkomplettering kräver ett funktionsargument" +#: ../errors.h:1840 +msgid "E718: Funcref required" +msgstr "E718: Funcref krävs" +#: ../errors.h:1842 +#, fuzzy +msgid "E719: Cannot slice a Dictionary" +msgstr "E719: Kan inte använda [:] med en Tabell" + +#: ../errors.h:1844 #, c-format -msgid "E185: Cannot find color scheme %s" -msgstr "E185: Kan inte hitta färgschema %s" +msgid "E720: Missing colon in Dictionary: %s" +msgstr "E720: Saknar kolon i Tabell: %s" -msgid "Greetings, Vim user!" -msgstr "Välkommen, Vim-användare!" +#: ../errors.h:1846 +#, c-format +msgid "E721: Duplicate key in Dictionary: \"%s\"" +msgstr "E721: Duplicerad nyckel i Tabell: \"%s\"" -msgid "E784: Cannot close last tab page" -msgstr "E784: Kan inte stänga senaste flik" +#: ../errors.h:1848 +#, c-format +msgid "E722: Missing comma in Dictionary: %s" +msgstr "E722: Saknar komma i Tabell: %s" -msgid "Already only one tab page" -msgstr "Redan bara en flik" +#: ../errors.h:1850 +#, c-format +msgid "E723: Missing end of Dictionary '}': %s" +msgstr "E723: Saknar slut på Tabell '}': %s" -msgid "Edit File in new window" -msgstr "Redigera fil i nytt fönster" +# TODO: Capitalise first word of message? +#: ../errors.h:1852 +msgid "E724: Variable nested too deep for displaying" +msgstr "E724: variabel nästlad för djupt för att visas" +#: ../errors.h:1854 #, c-format -msgid "Tab page %d" -msgstr "Flik %d" +msgid "E725: Calling dict function without Dictionary: %s" +msgstr "E725: Anropar tabell-funktion utan Tabell: %s" -msgid "No swap file" -msgstr "Ingen växlingsfil" +#: ../errors.h:1856 +msgid "E726: Stride is zero" +msgstr "E726: Kliv är noll" -msgid "Append File" -msgstr "Lägg till fil" +#: ../errors.h:1858 +msgid "E727: Start past end" +msgstr "E727: Start efter slut" -msgid "E747: Cannot change directory, buffer is modified (add ! to override)" -msgstr "" -"E747: Kan inte ändra katalog, buffert är ändrad (lägg till ! för att tvinga)" +#: ../errors.h:1860 +msgid "E728: Using a Dictionary as a Number" +msgstr "E728: Använder en Tabell som en siffra" -msgid "E186: No previous directory" -msgstr "E186: Ingen tidigare katalog" +#: ../errors.h:1862 +#, fuzzy +msgid "E729: Using a Funcref as a String" +msgstr "E729: använder Funcref som en Sträng" -msgid "E187: Unknown" -msgstr "E187: Okänt" +#: ../errors.h:1864 +#, fuzzy +msgid "E730: Using a List as a String" +msgstr "E730: använder Lista som en Sträng" -msgid "E465: :winsize requires two number arguments" -msgstr "E465: :winsize kräver två sifferargument" +#: ../errors.h:1866 +#, fuzzy +msgid "E731: Using a Dictionary as a String" +msgstr "E731: använder Tabell som en Sträng" -#, c-format -msgid "Window position: X %d, Y %d" -msgstr "Fönsterposition: X %d, Y %d" +#: ../errors.h:1868 +msgid "E732: Using :endfor with :while" +msgstr "E732: Använder :endfor med :while" -msgid "E188: Obtaining window position not implemented for this platform" -msgstr "" -"E188: Förskaffa fönsterposition inte implementerat för den här plattformen" +#: ../errors.h:1870 +msgid "E733: Using :endwhile with :for" +msgstr "E733: Använder :endwhile med :for" -msgid "E466: :winpos requires two number arguments" -msgstr "E466: :winpos kräver två sifferargument" +#: ../errors.h:1872 +#, c-format +msgid "E734: Wrong variable type for %s=" +msgstr "E734: Fel variabeltyp för %s=" -msgid "Save Redirection" -msgstr "Spara omdirigering" +#: ../errors.h:1874 +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Kan bara jämföra Tabell med Tabell" -msgid "Save View" -msgstr "Spara vy" +#: ../errors.h:1876 +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: Ogiltig operation för Tabell" -msgid "Save Session" -msgstr "Spara session" +#: ../errors.h:1878 +#, c-format +msgid "E737: Key already exists: %s" +msgstr "E737: Tangenten finns redan: %s" -msgid "Save Setup" -msgstr "Spara konfiguration" +#: ../errors.h:1880 +#, c-format +msgid "E738: Can't list variables for %s" +msgstr "E738: Kan inte lista variabler för %s" +#: ../errors.h:1882 #, c-format msgid "E739: Cannot create directory: %s" msgstr "E739: Kan inte skapa katalog: %s" +#: ../errors.h:1884 +#, fuzzy, c-format +msgid "E740: Too many arguments for function %s" +msgstr "E118: För många argument till funktion: %s" + +#: ../errors.h:1886 +#, fuzzy +msgid "E741: Value is locked" +msgstr "E741: Värde är låst: %s" + +#: ../errors.h:1888 #, c-format -msgid "E189: \"%s\" exists (add ! to override)" -msgstr "E189: \"%s\" existerar (lägg till ! för att tvinga)" +msgid "E741: Value is locked: %s" +msgstr "E741: Värde är låst: %s" + +#: ../errors.h:1890 +#, fuzzy +msgid "E742: Cannot change value" +msgstr "E742: Kan inte ändra värde av %s" +#: ../errors.h:1892 #, c-format -msgid "E190: Cannot open \"%s\" for writing" -msgstr "E190: Kan inte öppna \"%s\" för skrivning" +msgid "E742: Cannot change value of %s" +msgstr "E742: Kan inte ändra värde av %s" -#. set mark -msgid "E191: Argument must be a letter or forward/backward quote" -msgstr "" -"E191: Argument måste vara en bokstav eller framåt-/bakåtvänt citattecken" +# TODO: Capitalise first word of message? +#: ../errors.h:1894 +msgid "E743: Variable nested too deep for (un)lock" +msgstr "E743: variabel nästlade för djupt för (un)lock" -msgid "E192: Recursive use of :normal too deep" -msgstr "E192: Rekursiv användning av :normal för djup" +#: ../errors.h:1898 +msgid "E744: NetBeans does not allow changes in read-only files" +msgstr "E744: NetBeans tillåter inte ändringar i skrivskyddade filer" -msgid "E194: No alternate file name to substitute for '#'" -msgstr "E194: Inget alternativt filnamn att byta ut '#' med" +#: ../errors.h:1902 +msgid "E745: Using a List as a Number" +msgstr "E745: Använder en Lista som en siffra" -# TODO: Capitalise first word of message? -msgid "E495: No autocommand file name to substitute for \"\"" -msgstr "E495: inget autokommando-filnamn att ersätta \"\" med" +#: ../errors.h:1904 +#, c-format +msgid "E746: Function name does not match script file name: %s" +msgstr "E746: Funktionsnamn matchar inte skriptfilnamn: %s" -# TODO: Capitalise first word of message? -msgid "E496: No autocommand buffer number to substitute for \"\"" -msgstr "E496: inget autokommando-buffernummer att ersätta \"\" med" +#: ../errors.h:1907 +msgid "E747: Cannot change directory, buffer is modified (add ! to override)" +msgstr "" +"E747: Kan inte ändra katalog, buffert är ändrad (lägg till ! för att tvinga)" -# TODO: Capitalise first word of message? -msgid "E497: No autocommand match name to substitute for \"\"" -msgstr "E497: inget autokommando-träffnamn att byta ut \"\" med" +#: ../errors.h:1909 +msgid "E748: No previously used register" +msgstr "E748: Inget tidigare använt register" # TODO: Capitalise first word of message? -msgid "E498: No :source file name to substitute for \"\"" -msgstr "E498: inget :source-filnamn att byta ut \"\" med" +#: ../errors.h:1911 +msgid "E749: Empty buffer" +msgstr "E749: tom buffert" -#, no-c-format -msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" -msgstr "E499: Tomt filnamn för '%' or '#', fungerar bara med \":p:h\"" +#: ../errors.h:1914 +#, fuzzy +msgid "E750: First use \":profile start {fname}\"" +msgstr "E750: Använd :profile start först" -msgid "E500: Evaluates to an empty string" -msgstr "E500: Evaluerar till en tom sträng" +#: ../errors.h:1918 +msgid "E751: Output file name must not have region name" +msgstr "E751: Utmatningsfilnamn får inte ha regionnamn" -msgid "E195: Cannot open viminfo file for reading" -msgstr "E195: Kan inte öppna viminfo-fil för läsning" +#: ../errors.h:1920 +msgid "E752: No previous spell replacement" +msgstr "E752: Ingen tidigare stavningsersättning" -msgid "E196: No digraphs in this version" -msgstr "E196: Inga digrafer i den här versionen" +#: ../errors.h:1922 +#, c-format +msgid "E753: Not found: %s" +msgstr "E753: Hittades inte: %s" -msgid "E608: Cannot :throw exceptions with 'Vim' prefix" -msgstr "E608: Kan inte :throw undantag med 'Vim'-prefix" +#: ../errors.h:1924 +#, fuzzy, c-format +msgid "E754: Only up to %d regions supported" +msgstr "E754: Bara upp till 8 regioner stöds" -#. always scroll up, don't overwrite +#: ../errors.h:1926 #, c-format -msgid "Exception thrown: %s" -msgstr "Undantag kastade: %s" +msgid "E755: Invalid region in %s" +msgstr "E755: Ogiltig region i %s" -#, c-format -msgid "Exception finished: %s" -msgstr "Undantag färdiga: %s" +#: ../errors.h:1928 +#, fuzzy +msgid "E756: Spell checking is not possible" +msgstr "E756: Stavningskontroll är inte aktiverat" -#, c-format -msgid "Exception discarded: %s" -msgstr "Undantag förkastade: %s" +#: ../errors.h:1930 +msgid "E757: This does not look like a spell file" +msgstr "E757: Det här ser inte ut som en stavningsfil" -#, c-format -msgid "%s, line %ld" -msgstr "%s, rad %ld" +#: ../errors.h:1932 +msgid "E758: Truncated spell file" +msgstr "E758: Trunkerad stavningsfil" -#. always scroll up, don't overwrite +#: ../errors.h:1934 +msgid "E759: Format error in spell file" +msgstr "E759: Formateringsfel i stavningsfil" + +#: ../errors.h:1936 #, c-format -msgid "Exception caught: %s" -msgstr "Undantag fångade: %s" +msgid "E760: No word count in %s" +msgstr "E760: Inget ordantal i %s" + +#: ../errors.h:1938 +msgid "E761: Format error in affix file FOL, LOW or UPP" +msgstr "E761: Formateringsfel i affix-fil FOL, LOW eller UPP" + +#: ../errors.h:1940 +msgid "E762: Character in FOL, LOW or UPP is out of range" +msgstr "E762: Tecken i FOL, LOW eller UPP är utanför område" -#, c-format -msgid "%s made pending" -msgstr "%s gjordes avvaktande" +#: ../errors.h:1942 +msgid "E763: Word characters differ between spell files" +msgstr "E763: Ordtecken skiljer sig mellan stavningsfiler" +#: ../errors.h:1946 #, c-format -msgid "%s resumed" -msgstr "%s återupptagen" +msgid "E764: Option '%s' is not set" +msgstr "E764: Flagga '%s' är inte satt" -#, c-format -msgid "%s discarded" -msgstr "%s förkastad" +#: ../errors.h:1950 +#, fuzzy, c-format +msgid "E765: 'spellfile' does not have %d entries" +msgstr "E765: 'spellfile' har inte %ld poster" -msgid "Exception" -msgstr "Undantag" +#: ../errors.h:1954 +msgid "E766: Insufficient arguments for printf()" +msgstr "E766: Otillräckliga argument för printf()" -msgid "Error and interrupt" -msgstr "Fel och avbrytet" +#: ../errors.h:1957 +#, fuzzy +msgid "E767: Too many arguments for printf()" +msgstr "E767: För många argument till printf()" -msgid "Error" -msgstr "Fel" +#: ../errors.h:1959 +#, c-format +msgid "E768: Swap file exists: %s (:silent! overrides)" +msgstr "E768: Växlingsfil existerar: %s (:silent! tvingar)" -#. if (pending & CSTP_INTERRUPT) -msgid "Interrupt" -msgstr "Avbryt" +#: ../errors.h:1961 +#, c-format +msgid "E769: Missing ] after %s[" +msgstr "E769: Saknar ] efter %s[" -# TODO: Capitalise first word of message? -msgid "E579: :if nesting too deep" -msgstr "E579: :if nästlad för djupt" +#: ../errors.h:1964 +msgid "E770: Unsupported section in spell file" +msgstr "E770: Ostödd sektion i stavningsfil" -msgid "E580: :endif without :if" -msgstr "E580: :endif utan :if" +#: ../errors.h:1966 +msgid "E771: Old spell file, needs to be updated" +msgstr "E771: Gammal stavningsfil, behöver bli uppdaterad" -msgid "E581: :else without :if" -msgstr "E581: :else utan :if" +#: ../errors.h:1968 +msgid "E772: Spell file is for newer version of Vim" +msgstr "E772: Stavningsfil är för nyare version av Vim" -msgid "E582: :elseif without :if" -msgstr "E582: :elseif utan :if" +#: ../errors.h:1971 +#, c-format +msgid "E773: Symlink loop for \"%s\"" +msgstr "E773: Symbolisk länk-loop för \"%s\"" -# TODO: Capitalise first word of message? -msgid "E583: Multiple :else" -msgstr "E583: flera :else" +#: ../errors.h:1974 +msgid "E774: 'operatorfunc' is empty" +msgstr "E774: 'operatorfunc' är tom" -msgid "E584: :elseif after :else" -msgstr "E584: :elseif efter :else" +#: ../errors.h:1977 +msgid "E775: Eval feature not available" +msgstr "E775: Eval-funktionen inte tillgänglig" -msgid "E585: :while/:for nesting too deep" -msgstr "E585: :while/:for nästlad för djupt" +#: ../errors.h:1981 +msgid "E776: No location list" +msgstr "E776: Ingen positionslista" -msgid "E586: :continue without :while or :for" -msgstr "E586: :continue utan :while eller :for" +#: ../errors.h:1985 +msgid "E777: String or List expected" +msgstr "E777: Sträng eller Lista förväntades" -msgid "E587: :break without :while or :for" -msgstr "E587: :break utan :while eller :for" +#: ../errors.h:1989 +#, c-format +msgid "E778: This does not look like a .sug file: %s" +msgstr "E778: Det här ser inte ut som en .sug-fil: %s" -msgid "E732: Using :endfor with :while" -msgstr "E732: Använder :endfor med :while" +#: ../errors.h:1991 +#, c-format +msgid "E779: Old .sug file, needs to be updated: %s" +msgstr "E779: Gammal .sug-fil, behöver bli uppdaterad: %s" -msgid "E733: Using :endwhile with :for" -msgstr "E733: Använder :endwhile med :for" +#: ../errors.h:1993 +#, c-format +msgid "E780: .sug file is for newer version of Vim: %s" +msgstr "E780: .sug-fil är för nyare version av Vim: %s" -msgid "E601: :try nesting too deep" -msgstr "E601: :try nästlad för djupt" +#: ../errors.h:1995 +#, c-format +msgid "E781: .sug file doesn't match .spl file: %s" +msgstr "E781: .sug-fil matchar inte .spl-fil: %s" -msgid "E603: :catch without :try" -msgstr "E603: :catch utan :try" +# TODO: Capitalise first word of message? +#: ../errors.h:1997 +#, c-format +msgid "E782: Error while reading .sug file: %s" +msgstr "E782: fel vid läsning av .sug-fil: %s" -#. Give up for a ":catch" after ":finally" and ignore it. -#. * Just parse. -msgid "E604: :catch after :finally" -msgstr "E604: :catch efter :finally" +# TODO: Capitalise first word of message? +#: ../errors.h:1999 +msgid "E783: Duplicate char in MAP entry" +msgstr "E783: dubblerat tecken i MAP-post" -msgid "E606: :finally without :try" -msgstr "E606: :finally utan :try" +#: ../errors.h:2002 +msgid "E784: Cannot close last tab page" +msgstr "E784: Kan inte stänga senaste flik" -#. Give up for a multiple ":finally" and ignore it. -# TODO: Capitalise first word of message? -msgid "E607: Multiple :finally" -msgstr "E607: flera :finally" +#: ../errors.h:2006 +msgid "E785: complete() can only be used in Insert mode" +msgstr "E785: complete() kan bara användas i infogningsläge" -msgid "E602: :endtry without :try" -msgstr "E602: :endtry utan :try" +#: ../errors.h:2009 +msgid "E786: Range not allowed" +msgstr "E786: Område otillåtet" -msgid "E193: :endfunction not inside a function" -msgstr "E193: :endfunction inte inom en funktion" +#: ../errors.h:2013 +msgid "E787: Buffer changed unexpectedly" +msgstr "E787: Buffert ändrades oväntat" +#: ../errors.h:2016 msgid "E788: Not allowed to edit another buffer now" msgstr "E788: Inte tillåtet att redigera en annan buffert nu" -msgid "tagname" -msgstr "taggnamn" - -msgid " kind file\n" -msgstr " snäll fil\n" - -msgid "'history' option is zero" -msgstr "'history'-flagga är noll" - +#: ../errors.h:2019 #, c-format -msgid "" -"\n" -"# %s History (newest to oldest):\n" -msgstr "" -"\n" -"# %s Historia (nyaste till äldsta):\n" - -msgid "Command Line" -msgstr "Kommandorad" - -msgid "Search String" -msgstr "Söksträng" - -msgid "Expression" -msgstr "Uttryck" +msgid "E789: Missing ']': %s" +msgstr "E789: Saknar ']': %s" -msgid "Input Line" -msgstr "Inmatningsrad" +#: ../errors.h:2022 +msgid "E790: undojoin is not allowed after undo" +msgstr "E790: undojoin är inte tillåtet efter undo" -msgid "E198: cmd_pchar beyond the command length" -msgstr "E198: cmd_pchar bortom kommandolängden" +#: ../errors.h:2025 +msgid "E791: Empty keymap entry" +msgstr "E791: Tomt tangentbords-post" -msgid "E199: Active window or buffer deleted" -msgstr "E199: Aktivt fönster eller buffert borttagen" +#: ../errors.h:2029 +msgid "E792: Empty menu name" +msgstr "E792: Tomt menynamn" -msgid "Illegal file name" -msgstr "Otillåtet filnamn" +#: ../errors.h:2033 +msgid "E793: No other buffer in diff mode is modifiable" +msgstr "E793: Ingen annan buffert i skiljeläge är ändringsbar" -msgid "is a directory" -msgstr "är en katalog" +#: ../errors.h:2037 +#, fuzzy +msgid "E794: Cannot set variable in the sandbox" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "is not a file" -msgstr "är inte en fil" +#: ../errors.h:2039 +#, c-format +msgid "E794: Cannot set variable in the sandbox: \"%s\"" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "is a device (disabled with 'opendevice' option)" -msgstr "är en enhet (inaktiverad med 'opendevice'-flagga)" +#: ../errors.h:2041 +#, fuzzy +msgid "E795: Cannot delete variable" +msgstr "E795: Kan inte ta bort variabel %s" -msgid "[New File]" -msgstr "[Ny fil]" +#: ../errors.h:2043 +#, c-format +msgid "E795: Cannot delete variable %s" +msgstr "E795: Kan inte ta bort variabel %s" -msgid "[New DIRECTORY]" -msgstr "[Ny KATALOG]" +#: ../errors.h:2048 +msgid "writing to device disabled with 'opendevice' option" +msgstr "skriver till en enhet inaktiverad med 'opendevice'-flagga" -msgid "[File too big]" -msgstr "[Fil för stor]" +#: ../errors.h:2052 +#, fuzzy +msgid "E797: SpellFileMissing autocommand deleted buffer" +msgstr "E246: FileChangedShell-autokommandot tog bort buffert" -msgid "[Permission Denied]" -msgstr "[Tillåtelse nekas]" +#: ../errors.h:2056 +#, c-format +msgid "E798: ID is reserved for \":match\": %d" +msgstr "" -msgid "E200: *ReadPre autocommands made the file unreadable" -msgstr "E200: *ReadPre autokommandon gjorde filen oläsbar" +#: ../errors.h:2058 +#, c-format +msgid "E799: Invalid ID: %d (must be greater than or equal to 1)" +msgstr "" -msgid "E201: *ReadPre autocommands must not change current buffer" -msgstr "E201: *ReadPre autokommandon får inte ändra nuvarande buffert" +#: ../errors.h:2062 +msgid "E800: Arabic cannot be used: Not enabled at compile time\n" +msgstr "E800: Arabiska kan inte användas: Inte aktiverat vid kompilering\n" -msgid "Vim: Reading from stdin...\n" -msgstr "Vim: Läser från standard in...\n" +#: ../errors.h:2066 +#, c-format +msgid "E801: ID already taken: %d" +msgstr "" -msgid "Reading from stdin..." -msgstr "Läser från standard in..." +#: ../errors.h:2068 +#, c-format +msgid "E802: Invalid ID: %d (must be greater than or equal to 1)" +msgstr "" -#. Re-opening the original file failed! -msgid "E202: Conversion made file unreadable!" -msgstr "E202: Konvertering gjorde filen oläsbar!" +#: ../errors.h:2070 +#, fuzzy, c-format +msgid "E803: ID not found: %d" +msgstr "E334: Meny hittades inte: %s" -msgid "[fifo/socket]" -msgstr "[fifo/uttag]" +#: ../errors.h:2075 +#, fuzzy, no-c-format +msgid "E804: Cannot use '%' with Float" +msgstr "E719: Kan inte använda [:] med en Tabell" -msgid "[fifo]" -msgstr "[fifo]" +#: ../errors.h:2077 +#, fuzzy +msgid "E805: Using a Float as a Number" +msgstr "E745: Använder en Lista som en siffra" -msgid "[socket]" -msgstr "[uttag]" +#: ../errors.h:2079 +#, fuzzy +msgid "E806: Using a Float as a String" +msgstr "E730: använder Lista som en Sträng" -msgid "[RO]" -msgstr "[EL]" +#: ../errors.h:2081 +#, fuzzy +msgid "E807: Expected Float argument for printf()" +msgstr "E766: Otillräckliga argument för printf()" -msgid "[CR missing]" -msgstr "[CR saknas]" +#: ../errors.h:2083 +#, fuzzy +msgid "E808: Number or Float required" +msgstr "E521: Nummer krävs efter =" -msgid "[NL found]" -msgstr "[NL hittat]" +#: ../errors.h:2087 +msgid "E809: #< is not available without the +eval feature" +msgstr "" -msgid "[long lines split]" -msgstr "[långa rader delade]" +#: ../errors.h:2091 +#, fuzzy +msgid "E810: Cannot read or write temp files" +msgstr "E557: Kan inte öppna termcap-fil" -msgid "[NOT converted]" -msgstr "[INTE konverterad]" +#: ../errors.h:2094 +#, fuzzy +msgid "E811: Not allowed to change buffer information now" +msgstr "E788: Inte tillåtet att redigera en annan buffert nu" -msgid "[converted]" -msgstr "[konverterad]" +#: ../errors.h:2096 +#, fuzzy +msgid "E812: Autocommands changed buffer or buffer name" +msgstr "E135: *Filter*-Autokommandon får inte ändra aktuell buffert" -msgid "[crypted]" -msgstr "[krypterad]" +#: ../errors.h:2098 +#, fuzzy +msgid "E813: Cannot close autocmd or popup window" +msgstr "E444: Kan inte stänga senaste fönstret" -#, c-format -msgid "[CONVERSION ERROR in line %ld]" -msgstr "[KONVERTERINGSFEL på rad %ld]" +#: ../errors.h:2100 +#, fuzzy +msgid "E814: Cannot close window, only autocmd window would remain" +msgstr "E444: Kan inte stänga senaste fönstret" -#, c-format -msgid "[ILLEGAL BYTE in line %ld]" -msgstr "[OTILLÅTEN BIT på rad %ld]" +#: ../errors.h:2103 +#, fuzzy +msgid "" +"E815: Sorry, this command is disabled, the MzScheme libraries could not be " +"loaded." +msgstr "" +"???: Tyvärr, det här kommandot är inaktiverat: MzScheme-biblioteket kunde " +"inte läsas in." -msgid "[READ ERRORS]" -msgstr "[LÄSFEL]" +#: ../errors.h:2107 +#, fuzzy +msgid "E816: Cannot read patch output" +msgstr "E98: Kan inte läsa skiljeutdata" -msgid "Can't find temp file for conversion" -msgstr "Kan inte hitta temporär fil för konvertering" +#: ../errors.h:2111 +msgid "E817: Blowfish big/little endian use wrong" +msgstr "" -msgid "Conversion with 'charconvert' failed" -msgstr "Konvertering med 'charconvert' misslyckades" +#: ../errors.h:2113 +#, fuzzy +msgid "E818: sha256 test failed" +msgstr "E512: Stängning misslyckades" -msgid "can't read output of 'charconvert'" -msgstr "kan inte läsa utdata av 'charconvert'" +#: ../errors.h:2115 +#, fuzzy +msgid "E819: Blowfish test failed" +msgstr "E512: Stängning misslyckades" -msgid "E676: No matching autocommands for acwrite buffer" -msgstr "E676: Inga matchande autokommandon för acwrite buffert" +#: ../errors.h:2117 +msgid "E820: sizeof(uint32_t) != 4" +msgstr "" -msgid "E203: Autocommands deleted or unloaded buffer to be written" +#: ../errors.h:2119 +msgid "E821: File is encrypted with unknown method" msgstr "" -"E203: Autokommandon tog bort eller laddade ur buffert som skulle skrivas" -msgid "E204: Autocommand changed number of lines in unexpected way" -msgstr "E204: Autokommado ändrade antal rader på ett oväntat sätt" +#: ../errors.h:2123 +#, fuzzy, c-format +msgid "E822: Cannot open undo file for reading: %s" +msgstr "E195: Kan inte öppna viminfo-fil för läsning" + +#: ../errors.h:2125 +#, fuzzy, c-format +msgid "E823: Not an undo file: %s" +msgstr "E753: Hittades inte: %s" -msgid "NetBeans disallows writes of unmodified buffers" -msgstr "NetBeans tillåter inte skrivning av omodifierade buffertar" +#: ../errors.h:2127 +#, fuzzy, c-format +msgid "E824: Incompatible undo file: %s" +msgstr "E484: Kan inte öppna fil %s" -msgid "Partial writes disallowed for NetBeans buffers" -msgstr "Delvisa skrivningar tillåts inte i NetBeans-buffertar" +#: ../errors.h:2129 +#, c-format +msgid "E825: Corrupted undo file (%s): %s" +msgstr "" -msgid "is not a file or writable device" -msgstr "är inte en fil eller skrivbar enhet" +#: ../errors.h:2132 +#, fuzzy, c-format +msgid "E826: Undo file decryption failed: %s" +msgstr "E121: Odefinierad variabel: %s" -msgid "writing to device disabled with 'opendevice' option" -msgstr "skriver till en enhet inaktiverad med 'opendevice'-flagga" +#: ../errors.h:2135 +#, fuzzy, c-format +msgid "E827: Undo file is encrypted: %s" +msgstr "E137: Viminfo-fil är inte skrivbar: %s" -msgid "is read-only (add ! to override)" -msgstr "är skrivskyddad (lägg till ! för att tvinga)" +#: ../errors.h:2138 +#, fuzzy, c-format +msgid "E828: Cannot open undo file for writing: %s" +msgstr "E212: Kan inte öppna fil för skrivning" -msgid "E506: Can't write to backup file (add ! to override)" -msgstr "E506: Kan inte skriva till säkerhetskopia (lägg till ! för att tvinga)" +#: ../errors.h:2140 +#, fuzzy, c-format +msgid "E829: Write error in undo file: %s" +msgstr "E297: Skrivfel i växelfil" -msgid "E507: Close error for backup file (add ! to override)" -msgstr "E507: Stängningsfel för säkerhetskopia (lägg till ! för att tvinga)" +#: ../errors.h:2143 +#, fuzzy, c-format +msgid "E830: Undo number %ld not found" +msgstr "Ångra-nummer %ld hittades inte" -msgid "E508: Can't read file for backup (add ! to override)" +#: ../errors.h:2149 +#, c-format +msgid "E832: Non-encrypted file has encrypted undo file: %s" msgstr "" -"E508: Kan inte läsa fil för säkerhetskopia (lägg till ! för att tvinga)" -msgid "E509: Cannot create backup file (add ! to override)" -msgstr "E509: Kan inte skapa säkerhetskopia (lägg till ! för att tvinga)" +#: ../errors.h:2153 +#, c-format +msgid "" +"E833: %s is encrypted and this version of Vim does not support encryption" +msgstr "" -msgid "E510: Can't make backup file (add ! to override)" -msgstr "E510: Kan inte göra säkerhetskopia (lägg till ! för att tvinga)" +#: ../errors.h:2156 +msgid "E834: Conflicts with value of 'listchars'" +msgstr "" -msgid "E214: Can't find temp file for writing" -msgstr "E214: Kan inte hitta temporär fil för skrivning" +#: ../errors.h:2158 +msgid "E835: Conflicts with value of 'fillchars'" +msgstr "" -msgid "E213: Cannot convert (add ! to write without conversion)" +#: ../errors.h:2161 +msgid "E836: This Vim cannot execute :python after using :py3" msgstr "" -"E213: Kan inte konvertera (lägg till ! för att skriva utan konvertering)" -msgid "E166: Can't open linked file for writing" -msgstr "E166: Kan inte öppna länkad fil för skrivning" +#: ../errors.h:2163 +msgid "E837: This Vim cannot execute :py3 after using :python" +msgstr "" -msgid "E212: Can't open file for writing" -msgstr "E212: Kan inte öppna fil för skrivning" +#: ../errors.h:2167 +msgid "E838: NetBeans is not supported with this GUI" +msgstr "" -msgid "E667: Fsync failed" -msgstr "E667: Fsync misslyckades" +#: ../errors.h:2172 +msgid "E840: Completion function deleted text" +msgstr "" -msgid "E512: Close failed" -msgstr "E512: Stängning misslyckades" +#: ../errors.h:2175 +#, fuzzy +msgid "E841: Reserved name, cannot be used for user defined command" +msgstr "E464: Otydlig användning av användardefinierat kommando" # TODO: Capitalise first word of message? -msgid "E513: Write error, conversion failed (make 'fenc' empty to override)" -msgstr "" -"E513: skrivfel, konvertering misslyckades (gör 'fenc' tom för att tvinga)" +#: ../errors.h:2177 +#, fuzzy +msgid "E842: No line number to use for \"\"" +msgstr "E498: inget :source-filnamn att byta ut \"\" med" # TODO: Capitalise first word of message? -msgid "E514: Write error (file system full?)" -msgstr "E514: skrivfel (filsystem fullt?)" +#: ../errors.h:2180 +#, fuzzy +msgid "E843: Error while updating swap file crypt" +msgstr "E782: fel vid läsning av .sug-fil: %s" -msgid " CONVERSION ERROR" -msgstr " KONVERTERINGSFEL" +#: ../errors.h:2184 +#, fuzzy +msgid "E844: Invalid cchar value" +msgstr "E474: Ogiltigt argument" -msgid "[Device]" -msgstr "[Enhet]" +#: ../errors.h:2188 +msgid "E845: Insufficient memory, word list will be incomplete" +msgstr "" -msgid "[New]" -msgstr "[Ny]" +#: ../errors.h:2191 +#, fuzzy +msgid "E846: Key code not set" +msgstr "E86: Buffert %ld existerar inte" -msgid " [a]" -msgstr " [l]" +#: ../errors.h:2194 +#, fuzzy +msgid "E847: Too many syntax includes" +msgstr "E77: För många filnamn" -msgid " appended" -msgstr " lade till" +#: ../errors.h:2196 +#, fuzzy +msgid "E848: Too many syntax clusters" +msgstr "E391: Inget sådant syntax-kluster: %s" -msgid " [w]" -msgstr " [s]" +#: ../errors.h:2199 +msgid "E849: Too many highlight and syntax groups" +msgstr "" -msgid " written" -msgstr " skriven" +#: ../errors.h:2202 +#, fuzzy +msgid "E850: Invalid register name" +msgstr "E354: Otillåtet registernamn: '%s'" -msgid "E205: Patchmode: can't save original file" -msgstr "E205: Patchläge: kan inte spara orginalfil" +#: ../errors.h:2206 +#, fuzzy +msgid "E851: Failed to create a new process for the GUI" +msgstr "E285: Misslyckades att skapa inmatningsmiljö" -# TODO: Capitalise first word of message? -msgid "E206: Patchmode: can't touch empty original file" -msgstr "E206: patchläge: kan inte skapa tom orginalfil" +#: ../errors.h:2208 +#, fuzzy +msgid "E852: The child process failed to start the GUI" +msgstr "E531: Använd \":gui\" för att starta GUI" -msgid "E207: Can't delete backup file" -msgstr "E207: Kan inte ta bort säkerhetskopia" +#: ../errors.h:2212 +#, fuzzy, c-format +msgid "E853: Duplicate argument name: %s" +msgstr "E125: Otillåtet argument: %s" + +#: ../errors.h:2215 +msgid "E854: Path too long for completion" +msgstr "" + +#: ../errors.h:2217 +msgid "E855: Autocommands caused command to abort" +msgstr "" +#: ../errors.h:2220 msgid "" -"\n" -"WARNING: Original file may be lost or damaged\n" +"E856: \"assert_fails()\" second argument must be a string or a list with one " +"or two strings" msgstr "" -"\n" -"VARNING: Orginalfilen kan vara förlorad eller skadad\n" -msgid "don't quit the editor until the file is successfully written!" -msgstr "avsluta inte redigeraren innan filen är framgångsrikt skriven" +#: ../errors.h:2222 +#, fuzzy, c-format +msgid "E857: Dictionary key \"%s\" required" +msgstr "E715: Tabell krävs" -msgid "[dos]" -msgstr "[dos]" +#: ../errors.h:2226 +msgid "E858: Eval did not return a valid python object" +msgstr "" -msgid "[dos format]" -msgstr "[dos-format]" +#: ../errors.h:2228 +msgid "E859: Failed to convert returned python object to a Vim value" +msgstr "" -msgid "[mac]" -msgstr "[mac]" +#: ../errors.h:2232 +msgid "E860: Need 'id' and 'type' or 'types' with 'both'" +msgstr "" -msgid "[mac format]" -msgstr "[mac-format]" +#: ../errors.h:2235 +#, fuzzy +msgid "E861: Cannot open a second popup with a terminal" +msgstr "E152: Kan inte öppna %s för skrivning" -msgid "[unix]" -msgstr "[unix]" +#: ../errors.h:2240 +#, fuzzy +msgid "E862: Cannot use g: here" +msgstr "E284: Kan inte ställa in IC-värden" -msgid "[unix format]" -msgstr "[unix-format]" +#: ../errors.h:2244 +msgid "E863: Not allowed for a terminal in a popup window" +msgstr "" -msgid "1 line, " -msgstr "1 rad, " +#: ../errors.h:2248 +#, no-c-format +msgid "" +"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be " +"used" +msgstr "" + +#: ../errors.h:2250 +msgid "E865: (NFA) Regexp end encountered prematurely" +msgstr "" +#: ../errors.h:2252 #, c-format -msgid "%ld lines, " -msgstr "%ld rader, " +msgid "E866: (NFA regexp) Misplaced %c" +msgstr "" -msgid "1 character" -msgstr "1 tecken" +#: ../errors.h:2254 +#, c-format +msgid "E867: (NFA regexp) Unknown operator '\\z%c'" +msgstr "" +#: ../errors.h:2256 #, c-format -msgid "%ld characters" -msgstr "%ld tecken" +msgid "E867: (NFA regexp) Unknown operator '\\%%%c'" +msgstr "" -msgid "[noeol]" -msgstr "[inget radslut]" +#: ../errors.h:2258 +msgid "E868: Error building NFA with equivalence class!" +msgstr "" -msgid "[Incomplete last line]" -msgstr "[Ofullständig sistarad]" +#: ../errors.h:2260 +#, c-format +msgid "E869: (NFA regexp) Unknown operator '\\@%c'" +msgstr "" -#. don't overwrite messages here -#. must give this prompt -#. don't use emsg() here, don't want to flush the buffers -msgid "WARNING: The file has been changed since reading it!!!" -msgstr "VARNING: Filen har ändrats sedan den lästes in!!!" +#: ../errors.h:2262 +msgid "E870: (NFA regexp) Error reading repetition limits" +msgstr "" -msgid "Do you really want to write to it" -msgstr "Vill du verkligen skriva till den" +#: ../errors.h:2264 +msgid "E871: (NFA regexp) Can't have a multi follow a multi" +msgstr "" -#, c-format -msgid "E208: Error writing to \"%s\"" -msgstr "E208: Fel vid skrivning till \"%s\"" +#: ../errors.h:2266 +msgid "E872: (NFA regexp) Too many '('" +msgstr "" -#, c-format -msgid "E209: Error closing \"%s\"" -msgstr "E209: Fel vid stängning av \"%s\"" +#: ../errors.h:2268 +msgid "E873: (NFA regexp) proper termination error" +msgstr "" -#, c-format -msgid "E210: Error reading \"%s\"" -msgstr "E210: Fel vid läsning av \"%s\"" +#: ../errors.h:2270 +msgid "E874: (NFA regexp) Could not pop the stack!" +msgstr "" -msgid "E246: FileChangedShell autocommand deleted buffer" -msgstr "E246: FileChangedShell-autokommandot tog bort buffert" +#: ../errors.h:2272 +msgid "" +"E875: (NFA regexp) (While converting from postfix to NFA), too many states " +"left on stack" +msgstr "" -#, c-format -msgid "E211: File \"%s\" no longer available" -msgstr "E211: Filen \"%s\" är inte längre tillgänglig" +#: ../errors.h:2274 +msgid "E876: (NFA regexp) Not enough space to store the whole NFA" +msgstr "" -#, c-format -msgid "" -"W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as " -"well" +#: ../errors.h:2276 +#, fuzzy, c-format +msgid "E877: (NFA regexp) Invalid character class: %d" +msgstr "E71: Ogiltigt tecken efter %s%%" + +#: ../errors.h:2278 +msgid "E878: (NFA regexp) Could not allocate memory for branch traversal!" msgstr "" -"W12: Varning: Filen \"%s\" har ändrats och bufferten ändrades i Vim också" -msgid "See \":help W12\" for more info." -msgstr "Se \":help W12\" för mer info." +#: ../errors.h:2281 +#, fuzzy +msgid "E879: (NFA regexp) Too many \\z(" +msgstr "E50: För många \\z(" -#, c-format -msgid "W11: Warning: File \"%s\" has changed since editing started" -msgstr "W11: Varning: Filen \"%s\" har ändrats sedan redigeringen började" +#: ../errors.h:2285 +msgid "E880: Can't handle SystemExit of python exception in vim" +msgstr "" -msgid "See \":help W11\" for more info." -msgstr "Se \":help W11\" för mer info." +#: ../errors.h:2288 +#, fuzzy +msgid "E881: Line count changed unexpectedly" +msgstr "E787: Buffert ändrades oväntat" -#, c-format -msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" +#: ../errors.h:2291 +#, fuzzy +msgid "E882: Uniq compare function failed" +msgstr "E702: Jämförelsefunktionen för sortering misslyckades" + +#: ../errors.h:2293 +msgid "" +"E883: Search pattern and expression register may not contain two or more " +"lines" msgstr "" -"W16: Varning: Rättigheterna på filen \"%s\" har ändrats sedan redigeringen " -"började" -msgid "See \":help W16\" for more info." -msgstr "Se \":help W16\" för mer info." +#: ../errors.h:2295 +#, fuzzy, c-format +msgid "E884: Function name cannot contain a colon: %s" +msgstr "" +"E128: Funktionsnamn måste börja med en versal eller innehålla ett kolon: %s" +#: ../errors.h:2299 #, c-format -msgid "W13: Warning: File \"%s\" has been created after editing started" -msgstr "W13: Varning: Filen \"%s\" har skapats efter redigeringen började" +msgid "E885: Not possible to change sign %s" +msgstr "" -msgid "Warning" -msgstr "Varning" +#: ../errors.h:2303 +#, fuzzy, c-format +msgid "E886: Can't rename viminfo file to %s!" +msgstr "E138: Kan inte skriva viminfo-fil %s!" +#: ../errors.h:2307 +#, fuzzy msgid "" -"&OK\n" -"&Load File" +"E887: Sorry, this command is disabled, the Python's site module could not be " +"loaded." msgstr "" -"&OK\n" -"&Läs in filen" - -#, c-format -msgid "E462: Could not prepare for reloading \"%s\"" -msgstr "E462: Kunde inte förbereda för att läsa om \"%s\"" +"E263: Tyvärr, detta kommandot är inaktiverat, Python-biblioteket kunde inte " +"läsas in." +#: ../errors.h:2310 #, c-format -msgid "E321: Could not reload \"%s\"" -msgstr "E321: Kunde inte läsa om \"%s\"" +msgid "E888: (NFA regexp) cannot repeat %s" +msgstr "" -msgid "--Deleted--" -msgstr "--Borttagen--" +#: ../errors.h:2313 +#, fuzzy +msgid "E889: Number required" +msgstr "E521: Nummer krävs efter =" -#, c-format -msgid "auto-removing autocommand: %s " -msgstr "tar bort autokommando automatiskt: %s " +#: ../errors.h:2317 +#, fuzzy, c-format +msgid "E890: Trailing char after ']': %s]%s" +msgstr "E488: Eftersläpande tecken" -#. the group doesn't exist -#, c-format -msgid "E367: No such group: \"%s\"" -msgstr "E367: Ingen sådan grupp: \"%s\"" +#: ../errors.h:2321 +#, fuzzy +msgid "E891: Using a Funcref as a Float" +msgstr "E703: Använder en Funcref som en siffra" -#, c-format -msgid "E215: Illegal character after *: %s" -msgstr "E215: Otillåtet tecken efter *: %s" +#: ../errors.h:2323 +#, fuzzy +msgid "E892: Using a String as a Float" +msgstr "E728: Använder en Tabell som en siffra" -#, c-format -msgid "E216: No such event: %s" -msgstr "E216: Ingen sådan händelse: %s" +#: ../errors.h:2325 +#, fuzzy +msgid "E893: Using a List as a Float" +msgstr "E745: Använder en Lista som en siffra" -#, c-format -msgid "E216: No such group or event: %s" -msgstr "E216: Ingen sådan grupp eller händelse: %s" +#: ../errors.h:2327 +#, fuzzy +msgid "E894: Using a Dictionary as a Float" +msgstr "E728: Använder en Tabell som en siffra" -#. Highlight title +#: ../errors.h:2331 +#, fuzzy msgid "" -"\n" -"--- Autocommands ---" +"E895: Sorry, this command is disabled, the MzScheme's racket/base module " +"could not be loaded." msgstr "" -"\n" -"--- Autokommandon ---" +"???: Tyvärr, det här kommandot är inaktiverat: MzScheme-biblioteket kunde " +"inte läsas in." -#, c-format -msgid "E680: : invalid buffer number " -msgstr "E680: : ogiltigt buffertnummer " +#: ../errors.h:2335 +#, fuzzy, c-format +msgid "E896: Argument of %s must be a List, Dictionary or Blob" +msgstr "E712: Argument av %s måste vara en Lista eller Tabell" -msgid "E217: Can't execute autocommands for ALL events" -msgstr "E217: Kan inte köra autokommandon för ALLA händelser" +#: ../errors.h:2337 +#, fuzzy +msgid "E897: List or Blob required" +msgstr "E714: Lista krävs" -msgid "No matching autocommands" -msgstr "Inga matchande autokommandon" +#: ../errors.h:2341 +msgid "E898: socket() in channel_connect()" +msgstr "" -# TODO: Capitalise first word of message? -msgid "E218: Autocommand nesting too deep" -msgstr "E218: autokommando nästlad för djupt" +#: ../errors.h:2345 +#, fuzzy, c-format +msgid "E899: Argument of %s must be a List or Blob" +msgstr "E686: Argument av %s måste vara en List" + +#: ../errors.h:2347 +msgid "E900: maxdepth must be non-negative number" +msgstr "" + +#: ../errors.h:2351 +#, c-format +msgid "E901: getaddrinfo() in channel_open(): %s" +msgstr "" + +#: ../errors.h:2354 +msgid "E901: gethostbyname() in channel_open()" +msgstr "" -#, c-format -msgid "%s Autocommands for \"%s\"" -msgstr "%s Autokommandon för \"%s\"" +#: ../errors.h:2357 +#, fuzzy +msgid "E902: Cannot connect to port" +msgstr "Kan inte ansluta till Netbeans" -#, c-format -msgid "Executing %s" -msgstr "Kör %s" +#: ../errors.h:2359 +msgid "E903: Received command with non-string argument" +msgstr "" -#, c-format -msgid "autocommand %s" -msgstr "autokommando %s" +#: ../errors.h:2361 +msgid "E904: Last argument for expr/call must be a number" +msgstr "" -msgid "E219: Missing {." -msgstr "E219: Saknar {." +#: ../errors.h:2363 +#, fuzzy +msgid "E904: Third argument for call must be a list" +msgstr "E686: Argument av %s måste vara en List" -msgid "E220: Missing }." -msgstr "E220: Saknar }." +#: ../errors.h:2365 +#, fuzzy, c-format +msgid "E905: Received unknown command: %s" +msgstr "E160: Okänt signaturkommando: %s" -msgid "E490: No fold found" -msgstr "E490: Inget veck funnet" +#: ../errors.h:2367 +#, fuzzy +msgid "E906: Not an open channel" +msgstr "E663: Vid slutet av ändringslista" -msgid "E350: Cannot create fold with current 'foldmethod'" -msgstr "E350: Kan inte skapa veck med nuvarande 'foldmethod'" +#: ../errors.h:2371 +msgid "E907: Using a special value as a Float" +msgstr "" -msgid "E351: Cannot delete fold with current 'foldmethod'" -msgstr "E351: Kan inte ta bort veck med nuvarande 'foldmethod'" +#: ../errors.h:2373 +#, fuzzy, c-format +msgid "E908: Using an invalid value as a String: %s" +msgstr "E729: använder Funcref som en Sträng" -#, c-format -msgid "+--%3ld lines folded " -msgstr "+--%3ld rader vikta " +#: ../errors.h:2375 +#, fuzzy +msgid "E909: Cannot index a special variable" +msgstr "E695: Kan inte indexera en Funcref" -msgid "E222: Add to read buffer" -msgstr "E222: Lägg till i läsbuffert" +#: ../errors.h:2379 +#, fuzzy +msgid "E910: Using a Job as a Number" +msgstr "E745: Använder en Lista som en siffra" -# TODO: Capitalise first word of message? -msgid "E223: Recursive mapping" -msgstr "E223: rekursiv mappning" +#: ../errors.h:2381 +msgid "E911: Using a Job as a Float" +msgstr "" -#, c-format -# TODO: Capitalise first word of message? -msgid "E224: Global abbreviation already exists for %s" -msgstr "E224: global förkortning existerar redan för %s" +#: ../errors.h:2383 +msgid "E912: Cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel" +msgstr "" -#, c-format -# TODO: Capitalise first word of message? -msgid "E225: Global mapping already exists for %s" -msgstr "E225: global mappning existerar redan för %s" +#: ../errors.h:2385 +#, fuzzy +msgid "E913: Using a Channel as a Number" +msgstr "E703: Använder en Funcref som en siffra" -#, c-format -# TODO: Capitalise first word of message? -msgid "E226: Abbreviation already exists for %s" -msgstr "E226: förkortning existerar redan för %s" +#: ../errors.h:2387 +msgid "E914: Using a Channel as a Float" +msgstr "" -#, c-format -# TODO: Capitalise first word of message? -msgid "E227: Mapping already exists for %s" -msgstr "E227: mappning existerar redan för %s" +#: ../errors.h:2389 +msgid "E915: in_io buffer requires in_buf or in_name to be set" +msgstr "" -msgid "No abbreviation found" -msgstr "Ingen förkortning hittades" +#: ../errors.h:2391 +#, fuzzy +msgid "E916: Not a valid job" +msgstr "E543: Inte en godkänd teckentabell" -msgid "No mapping found" -msgstr "Ingen mappning hittades" +#: ../errors.h:2393 +#, fuzzy, c-format +msgid "E917: Cannot use a callback with %s()" +msgstr "E197: Kan inte sätta språk till \"%s\"" -msgid "E228: makemap: Illegal mode" -msgstr "E228: makemap: Otillåtet läge" +#: ../errors.h:2395 +#, fuzzy, c-format +msgid "E918: Buffer must be loaded: %s" +msgstr "E681: Buffert är inte laddad" -msgid " " -msgstr " " +#: ../errors.h:2398 +#, fuzzy, c-format +msgid "E919: Directory not found in '%s': \"%s\"" +msgstr "E161: Brytpunkt hittades inte: %s" -#, c-format -msgid "E616: vim_SelFile: can't get font %s" -msgstr "E616: vim_SelFile: kan inte hämta typsnitt %s" +#: ../errors.h:2401 +msgid "E920: _io file requires _name to be set" +msgstr "" -msgid "E614: vim_SelFile: can't return to current directory" -msgstr "E614: vim_SelFile: Kan inte återvända till aktuell katalog" +#: ../errors.h:2405 +#, fuzzy +msgid "E921: Invalid callback argument" +msgstr "E474: Ogiltigt argument" -msgid "Pathname:" -msgstr "Sökväg:" +#: ../errors.h:2408 +#, fuzzy +msgid "E923: Second argument of function() must be a list or a dict" +msgstr "E712: Argument av %s måste vara en Lista eller Tabell" -msgid "E615: vim_SelFile: can't get current directory" -msgstr "E615: vim_SelFile: kan inte hämta aktuell katalog" +#: ../errors.h:2412 +msgid "E924: Current window was closed" +msgstr "" -msgid "OK" -msgstr "OK" +#: ../errors.h:2414 +msgid "E925: Current quickfix list was changed" +msgstr "" -msgid "Cancel" -msgstr "Avbryt" +#: ../errors.h:2416 +msgid "E926: Current location list was changed" +msgstr "" -msgid "Vim dialog" -msgstr "Vim-dialog" +#: ../errors.h:2421 +#, fuzzy, c-format +msgid "E927: Invalid action: '%s'" +msgstr "E383: Ogiltig söksträng: %s" + +#: ../errors.h:2424 +#, fuzzy +msgid "E928: String required" +msgstr "E397: Filnamn krävs" -msgid "Scrollbar Widget: Could not get geometry of thumb pixmap." -msgstr "Rullningslist: Kunde inte hämta geometrin på miniatyrbild." +#: ../errors.h:2428 +#, c-format +msgid "E929: Too many viminfo temp files, like %s!" +msgstr "" -msgid "E232: Cannot create BalloonEval with both message and callback" -msgstr "E232: Kan inte skapa BalloonEval med både meddelande och återkallning" +#: ../errors.h:2432 +msgid "E930: Cannot use :redir inside execute()" +msgstr "" -msgid "E229: Cannot start the GUI" -msgstr "E229: Kan inte starta GUI" +#: ../errors.h:2435 +msgid "E931: Buffer cannot be registered" +msgstr "" +#: ../errors.h:2438 #, c-format -msgid "E230: Cannot read from \"%s\"" -msgstr "E230: Kan inte läsa från \"%s\"" +msgid "E932: Closure function should not be at top level: %s" +msgstr "" -msgid "E665: Cannot start GUI, no valid font found" -msgstr "E665: Kan inte starta GUI, ingen giltig font hittad" +#: ../errors.h:2440 +#, fuzzy, c-format +msgid "E933: Function was deleted: %s" +msgstr "E129: Funktionsnamn krävs" -msgid "E231: 'guifontwide' invalid" -msgstr "E231: 'guifontwide' ogiltig" +#: ../errors.h:2444 +msgid "E934: Cannot jump to a buffer that does not have a name" +msgstr "" -msgid "E599: Value of 'imactivatekey' is invalid" -msgstr "E599: Värdet av 'imactivatekey' är ogiltigt" +#: ../errors.h:2448 +#, fuzzy, c-format +msgid "E935: Invalid submatch number: %d" +msgstr "E354: Otillåtet registernamn: '%s'" + +#: ../errors.h:2451 +#, fuzzy +msgid "E936: Cannot delete the current group" +msgstr "E351: Kan inte ta bort veck med nuvarande 'foldmethod'" +#: ../errors.h:2453 #, c-format -msgid "E254: Cannot allocate color %s" -msgstr "E254: Kan inte allokera färg %s" +msgid "E937: Attempt to delete a buffer that is in use: %s" +msgstr "" -msgid "No match at cursor, finding next" -msgstr "Ingen matchning vid markör, söker nästa" +#: ../errors.h:2456 +#, fuzzy, c-format +msgid "E938: Duplicate key in JSON: \"%s\"" +msgstr "E721: Duplicerad nyckel i Tabell: \"%s\"" -msgid "Vim dialog..." -msgstr "Vim-dialog..." +#: ../errors.h:2459 +#, fuzzy +msgid "E939: Positive count required" +msgstr "E397: Filnamn krävs" -msgid "" -"&Yes\n" -"&No\n" -"&Cancel" +#: ../errors.h:2462 +#, fuzzy, c-format +msgid "E940: Cannot lock or unlock variable %s" +msgstr "E46: Kan inte ändra skrivskyddad variabel \"%s\"" + +#: ../errors.h:2465 +msgid "E941: Already started a server" msgstr "" -"&Ja\n" -"&Nej\n" -"&Avbryt" -msgid "Input _Methods" -msgstr "Inmatnings_metoder" +#: ../errors.h:2468 +#, fuzzy +msgid "E942: +clientserver feature not available" +msgstr "E775: Eval-funktionen inte tillgänglig" -msgid "VIM - Search and Replace..." -msgstr "VIM - Sök och ersätt..." +#: ../errors.h:2474 +#, fuzzy +msgid "E944: Reverse range in character class" +msgstr "E488: Eftersläpande tecken" -msgid "VIM - Search..." -msgstr "VIM - Sök..." +#: ../errors.h:2476 +msgid "E945: Range too large in character class" +msgstr "" -msgid "Find what:" -msgstr "Hitta vad:" +#: ../errors.h:2479 +msgid "E946: Cannot make a terminal with running job modifiable" +msgstr "" -msgid "Replace with:" -msgstr "Ersätt med:" +#: ../errors.h:2481 +#, fuzzy, c-format +msgid "E947: Job still running in buffer \"%s\"" +msgstr "E94: Ingen matchande buffert för %s" -#. whole word only button -msgid "Match whole word only" -msgstr "Matcha endast hela ord" +#: ../errors.h:2483 +#, fuzzy +msgid "E948: Job still running" +msgstr " (körs fortfarande)" -#. match case button -msgid "Match case" -msgstr "Skilj på stora/små bokstäver" +#: ../errors.h:2485 +msgid "E948: Job still running (add ! to end the job)" +msgstr "" -msgid "Direction" -msgstr "Riktning" +#: ../errors.h:2488 +#, fuzzy +msgid "E949: File changed while writing" +msgstr "E80: Fel vid skrivning" -#. 'Up' and 'Down' buttons -msgid "Up" -msgstr "Upp" +#: ../errors.h:2490 +#, fuzzy, c-format +msgid "E950: Cannot convert between %s and %s" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "Down" -msgstr "Ned" +#: ../errors.h:2493 +#, fuzzy, no-c-format +msgid "E951: \\% value too large" +msgstr "E75: Namn för långt" -msgid "Find Next" -msgstr "Hitta nästa" +#: ../errors.h:2496 +#, fuzzy +msgid "E952: Autocommand caused recursive behavior" +msgstr "E169: Kommando för rekursivt" -msgid "Replace" -msgstr "Ersätt" +#: ../errors.h:2500 +#, fuzzy, c-format +msgid "E953: File exists: %s" +msgstr "E737: Tangenten finns redan: %s" -msgid "Replace All" -msgstr "Ersätt alla" +#: ../errors.h:2504 +msgid "E954: 24-bit colors are not supported on this environment" +msgstr "" -msgid "Vim: Received \"die\" request from session manager\n" -msgstr "Vim: Tog emot \"die\"-begäran från sessionshanteraren\n" +#: ../errors.h:2508 +#, fuzzy +msgid "E955: Not a terminal buffer" +msgstr "E94: Ingen matchande buffert för %s" -msgid "Close" -msgstr "Stäng" +#: ../errors.h:2511 +#, fuzzy +msgid "E956: Cannot use pattern recursively" +msgstr "E659: Kan inte anropa Python rekursivt" -msgid "New tab" -msgstr "Ny flik" +#: ../errors.h:2514 +#, fuzzy +msgid "E957: Invalid window number" +msgstr "E534: Ogiltigt brett typsnitt" -msgid "Open Tab..." -msgstr "Öppna flik..." +#: ../errors.h:2518 +msgid "E958: Job already finished" +msgstr "" -msgid "Vim: Main window unexpectedly destroyed\n" -msgstr "Vim: Huvudfönster oväntat förstört\n" +#: ../errors.h:2522 +#, fuzzy +msgid "E959: Invalid diff format." +msgstr "E534: Ogiltigt brett typsnitt" -msgid "Font Selection" -msgstr "Typsnittsval" +#: ../errors.h:2524 +msgid "E960: Problem creating the internal diff" +msgstr "" -msgid "Used CUT_BUFFER0 instead of empty selection" -msgstr "Använd CUT_BUFFER0 istället för tomt val" +# TODO: Capitalise first word of message? +#: ../errors.h:2528 +#, fuzzy +msgid "E961: No line number to use for \"\"" +msgstr "E498: inget :source-filnamn att byta ut \"\" med" -msgid "&Filter" -msgstr "&Filter" +#: ../errors.h:2530 +#, fuzzy, c-format +msgid "E962: Invalid action: '%s'" +msgstr "E383: Ogiltig söksträng: %s" -msgid "&Cancel" -msgstr "&Avbryt" +#: ../errors.h:2532 +#, c-format +msgid "E963: Setting v:%s to value with wrong type" +msgstr "" -msgid "Directories" -msgstr "Kataloger" +#: ../errors.h:2536 +#, fuzzy, c-format +msgid "E964: Invalid column number: %ld" +msgstr "E182: Ogiltigt kommandonamn" -msgid "Filter" -msgstr "Filter" +#: ../errors.h:2540 +#, fuzzy +msgid "E965: Missing property type name" +msgstr "E379: Saknar eller tomt katalognamn" -msgid "&Help" -msgstr "&Hjälp" +#: ../errors.h:2544 +#, fuzzy, c-format +msgid "E966: Invalid line number: %ld" +msgstr "E19: Markering har ogiltigt radnummer" -msgid "Files" -msgstr "Filer" +#: ../errors.h:2550 +#, fuzzy +msgid "E968: Need at least one of 'id' or 'type'" +msgstr "E593: Behöver åtminstone %d rader" -msgid "&OK" -msgstr "&OK" +#: ../errors.h:2552 +#, c-format +msgid "E969: Property type %s already defined" +msgstr "" -msgid "Selection" -msgstr "Val" +#: ../errors.h:2554 +#, fuzzy, c-format +msgid "E970: Unknown highlight group name: '%s'" +msgstr "E409: Okänt gruppnamn: %s" -msgid "Find &Next" -msgstr "Hitta &nästa" +#: ../errors.h:2556 +#, fuzzy, c-format +msgid "E971: Property type %s does not exist" +msgstr "E429: Fil \"%s\" existerar inte" -msgid "&Replace" -msgstr "&Ersätt" +#: ../errors.h:2560 +msgid "E972: Blob value does not have the right number of bytes" +msgstr "" -msgid "Replace &All" -msgstr "Ersätt &alla" +#: ../errors.h:2562 +msgid "E973: Blob literal should have an even number of hex characters" +msgstr "" -msgid "&Undo" -msgstr "&Ångra" +#: ../errors.h:2564 +#, fuzzy +msgid "E974: Using a Blob as a Number" +msgstr "E745: Använder en Lista som en siffra" -#, c-format -msgid "E671: Cannot find window title \"%s\"" -msgstr "E671: Kan inte hitta fönstertitel \"%s\"" +#: ../errors.h:2566 +#, fuzzy +msgid "E975: Using a Blob as a Float" +msgstr "E745: Använder en Lista som en siffra" -#, c-format -msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." -msgstr "E243: Argument stöds inte: \"-%s\"; Används OLE-versionen." +#: ../errors.h:2568 +#, fuzzy +msgid "E976: Using a Blob as a String" +msgstr "E730: använder Lista som en Sträng" -msgid "E672: Unable to open window inside MDI application" -msgstr "E672: Kunde inte öppna fönster inuti MDI-applikation" +#: ../errors.h:2570 +#, fuzzy +msgid "E977: Can only compare Blob with Blob" +msgstr "E691: Kan bara jämföra Lista med Lista" -msgid "Close tab" -msgstr "Stäng flik" +#: ../errors.h:2572 +#, fuzzy +msgid "E978: Invalid operation for Blob" +msgstr "E692: Ogiltig operation för Lista" -msgid "Open tab..." -msgstr "Öppna flik..." +# TODO: Capitalise first word of message? +#: ../errors.h:2574 +#, fuzzy, c-format +msgid "E979: Blob index out of range: %ld" +msgstr "E684: listindex utanför område: %ld" -msgid "Find string (use '\\\\' to find a '\\')" -msgstr "Sök sträng (använd '\\\\' för att hitta '\\')" +#: ../errors.h:2577 +#, fuzzy +msgid "E980: Lowlevel input not supported" +msgstr "E519: Flagga stöds inte" -msgid "Find & Replace (use '\\\\' to find a '\\')" -msgstr "Sök & ersätt (använd '\\\\' för att hitta '\\')" +#: ../errors.h:2581 +#, fuzzy +msgid "E981: Command not allowed in rvim" +msgstr "E145: Skalkommandon inte tillåtna i rvim" -#. We fake this: Use a filter that doesn't select anything and a default -#. * file name that won't be used. -msgid "Not Used" -msgstr "Inte använd" +#: ../errors.h:2584 +msgid "E982: ConPTY is not available" +msgstr "" -msgid "Directory\t*.nothing\n" -msgstr "Katalog\t*.nothing\n" +#: ../errors.h:2587 +#, fuzzy, c-format +msgid "E983: Duplicate argument: %s" +msgstr "E390: Otillåtet argument: %s" -msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" -msgstr "" -"Vim E458: Kan inte allokera post i färgkarta, några färger kan bli felaktiga" +#: ../errors.h:2589 +#, fuzzy +msgid "E984: :scriptversion used outside of a sourced file" +msgstr "E167: :scriptencoding används utanför en körd fil" -#, c-format -msgid "E250: Fonts for the following charsets are missing in fontset %s:" -msgstr "" -"E250: Typsnitt för följande teckenkoder saknas i typsnittsuppsättningen %s:" +# TODO: Capitalise first word of message? +#: ../errors.h:2592 +#, fuzzy +msgid "E985: .= is not supported with script version >= 2" +msgstr "E619: fil \"%s\" är inte en PostScript-resursfil som stöds" -#, c-format -msgid "E252: Fontset name: %s" -msgstr "E252: Typsnittsuppsättningsnamn: %s" +#: ../errors.h:2594 +#, fuzzy +msgid "E986: Cannot modify the tag stack within tagfunc" +msgstr "E428: Kan inte gå bortom sista matchande tagg" -#, c-format -msgid "Font '%s' is not fixed-width" -msgstr "Font '%s' är inte fast bredd" +#: ../errors.h:2596 +#, fuzzy +msgid "E987: Invalid return value from tagfunc" +msgstr "E178: Ogiltigt standardvärde för antal" -#, c-format -msgid "E253: Fontset name: %s\n" -msgstr "E253: Typsnittsuppsättningsnamn: %s\n" +#: ../errors.h:2600 +#, fuzzy +msgid "E988: GUI cannot be used. Cannot execute gvim.exe." +msgstr "E25: GUI kan inte användas: Inte aktiverat vid kompilering" -#, c-format -msgid "Font0: %s\n" -msgstr "Typsnitt0: %s\n" +#: ../errors.h:2604 +msgid "E989: Non-default argument follows default argument" +msgstr "" -#, c-format -msgid "Font1: %s\n" -msgstr "Typsnitt1: %s\n" +#: ../errors.h:2606 +#, fuzzy, c-format +msgid "E990: Missing end marker '%s'" +msgstr "E769: Saknar ] efter %s[" -#, c-format -msgid "Font%ld width is not twice that of font0\n" -msgstr "Typsnitt%ld är inte dubbelt så bred som font0\n" +#: ../errors.h:2608 +#, fuzzy +msgid "E991: Cannot use =<< here" +msgstr "E695: Kan inte indexera en Funcref" -#, c-format -msgid "Font0 width: %ld\n" -msgstr "Typsnitt0 bredd: %ld\n" +#: ../errors.h:2611 +#, fuzzy +msgid "E992: Not allowed in a modeline when 'modelineexpr' is off" +msgstr "E520: Inte tillåtet i en lägesrad" +#: ../errors.h:2614 #, c-format -msgid "" -"Font1 width: %ld\n" -"\n" +msgid "E993: Window %d is not a popup window" msgstr "" -"Typsnitt1 bredd: %ld\n" -"\n" - -msgid "Invalid font specification" -msgstr "Ogiltig typsnittsuppsättning" -msgid "&Dismiss" -msgstr "&Förkasta" +#: ../errors.h:2616 +#, fuzzy +msgid "E994: Not allowed in a popup window" +msgstr "E48: Inte tillåtet i sandlåda" -msgid "no specific match" -msgstr "ingen specifik matchning" +#: ../errors.h:2618 +#, fuzzy +msgid "E995: Cannot modify existing variable" +msgstr "E795: Kan inte ta bort variabel %s" -msgid "Vim - Font Selector" -msgstr "Vim - Typsnittsväljare" +#: ../errors.h:2620 +#, fuzzy +msgid "E996: Cannot lock a range" +msgstr "E784: Kan inte stänga senaste flik" -msgid "Name:" -msgstr "Namn:" +#: ../errors.h:2622 +msgid "E996: Cannot lock an option" +msgstr "" -#. create toggle button -msgid "Show size in Points" -msgstr "Visa storlek i punkter" +#: ../errors.h:2624 +#, fuzzy +msgid "E996: Cannot lock a list or dict" +msgstr "E90: Kan inte ladda ur senaste buffert" -msgid "Encoding:" -msgstr "Teckenkodning:" +#: ../errors.h:2626 +#, fuzzy +msgid "E996: Cannot lock an environment variable" +msgstr "miljövariabel" -msgid "Font:" -msgstr "Typsnitt:" +#: ../errors.h:2628 +#, fuzzy +msgid "E996: Cannot lock a register" +msgstr "E90: Kan inte ladda ur senaste buffert" -msgid "Style:" -msgstr "Stil:" +# TODO: Capitalise first word of message? +#: ../errors.h:2632 +#, fuzzy, c-format +msgid "E997: Tabpage not found: %d" +msgstr "E426: tagg hittades inte: %s" -msgid "Size:" -msgstr "Storlek:" +#: ../errors.h:2636 +#, c-format +msgid "E998: Reduce of an empty %s with no initial value" +msgstr "" -msgid "E256: Hangul automata ERROR" -msgstr "E256: Hangul automata FEL" +#: ../errors.h:2639 +#, fuzzy, c-format +msgid "E999: scriptversion not supported: %d" +msgstr "E519: Flagga stöds inte" -msgid "E550: Missing colon" -msgstr "E550: Saknar kolon" +#: ../errors.h:2643 +#, fuzzy, c-format +msgid "E1001: Variable not found: %s" +msgstr "E161: Brytpunkt hittades inte: %s" -msgid "E551: Illegal component" -msgstr "E551: Otillåten komponent" +#: ../errors.h:2645 +#, fuzzy, c-format +msgid "E1002: Syntax error at %s" +msgstr "E554: Syntaxfel i %s{...}" -# TODO: Capitalise first word of message? -msgid "E552: Digit expected" -msgstr "E552: siffra förväntades" +#: ../errors.h:2647 +#, fuzzy +msgid "E1003: Missing return value" +msgstr "E170: Saknar :endwhile" +#: ../errors.h:2649 #, c-format -msgid "Page %d" -msgstr "Sida %d" +msgid "E1004: White space required before and after '%s' at \"%s\"" +msgstr "" -msgid "No text to be printed" -msgstr "Ingen text att skriva ut" +#: ../errors.h:2651 +#, fuzzy +msgid "E1005: Too many argument types" +msgstr "E699: För många argument" +#: ../errors.h:2653 #, c-format -msgid "Printing page %d (%d%%)" -msgstr "Skriver ut sida %d (%d%%)" +msgid "E1006: %s is used as an argument" +msgstr "" -#, c-format -msgid " Copy %d of %d" -msgstr " Kopia %d av %d" +#: ../errors.h:2655 +#, fuzzy +msgid "E1007: Mandatory argument after optional argument" +msgstr "Skräp efter flaggargument" -#, c-format -msgid "Printed: %s" -msgstr "Skrev ut: %s" +#: ../errors.h:2657 +#, fuzzy, c-format +msgid "E1008: Missing after %s" +msgstr "E769: Saknar ] efter %s[" -msgid "Printing aborted" -msgstr "Utskrift avbruten" +#: ../errors.h:2659 +#, fuzzy, c-format +msgid "E1009: Missing > after type: %s" +msgstr "E769: Saknar ] efter %s[" -msgid "E455: Error writing to PostScript output file" -msgstr "E455: Fel vid skrivning av utdata till PostScript-fil" +#: ../errors.h:2661 +#, fuzzy, c-format +msgid "E1010: Type not recognized: %s" +msgstr "E421: Färgnamn eller nummer inte igenkänt: %s" -#, c-format -msgid "E624: Can't open file \"%s\"" -msgstr "E624: Kan inte öppna fil \"%s\"" +#: ../errors.h:2663 +#, fuzzy, c-format +msgid "E1011: Name too long: %s" +msgstr "E75: Namn för långt" +#: ../errors.h:2665 #, c-format -msgid "E457: Can't read PostScript resource file \"%s\"" -msgstr "E457: Kan inte läsa PostScript-resursfil \"%s\"" +msgid "E1012: Type mismatch; expected %s but got %s" +msgstr "" +#: ../errors.h:2667 #, c-format -# TODO: Capitalise first word of message? -msgid "E618: File \"%s\" is not a PostScript resource file" -msgstr "E618: fil \"%s\" är inte en PostScript-resursfil" +msgid "E1012: Type mismatch; expected %s but got %s in %s" +msgstr "" +#: ../errors.h:2669 #, c-format -# TODO: Capitalise first word of message? -msgid "E619: File \"%s\" is not a supported PostScript resource file" -msgstr "E619: fil \"%s\" är inte en PostScript-resursfil som stöds" +msgid "E1013: Argument %d: type mismatch, expected %s but got %s" +msgstr "" +#: ../errors.h:2671 #, c-format -msgid "E621: \"%s\" resource file has wrong version" -msgstr "E621: \"%s\"-källfilen har fel version" +msgid "E1013: Argument %d: type mismatch, expected %s but got %s in %s" +msgstr "" -msgid "E673: Incompatible multi-byte encoding and character set." -msgstr "E673: Inkompatibel flerbitskodning och teckenuppsättning." +#: ../errors.h:2673 +#, fuzzy, c-format +msgid "E1014: Invalid key: %s" +msgstr "E181: Ogiltigt attribut: %s" -msgid "E674: printmbcharset cannot be empty with multi-byte encoding." -msgstr "E674: printmbcharset kan inte vara tom med flerbitskodning." +#: ../errors.h:2675 +#, fuzzy, c-format +msgid "E1015: Name expected: %s" +msgstr "E39: Nummer väntat" -msgid "E675: No default font specified for multi-byte printing." -msgstr "E675: Ingen standardfont angiven för flerbitsutskrifter." +#: ../errors.h:2677 +#, fuzzy, c-format +msgid "E1016: Cannot declare a %s variable: %s" +msgstr "E795: Kan inte ta bort variabel %s" -msgid "E324: Can't open PostScript output file" -msgstr "E324: Kan inte öppna PostScript-utfil" +#: ../errors.h:2679 +#, fuzzy, c-format +msgid "E1016: Cannot declare an environment variable: %s" +msgstr "E795: Kan inte ta bort variabel %s" +#: ../errors.h:2681 #, c-format -msgid "E456: Can't open file \"%s\"" -msgstr "E456: Kan inte öppna fil \"%s\"" +msgid "E1017: Variable already declared: %s" +msgstr "" -msgid "E456: Can't find PostScript resource file \"prolog.ps\"" -msgstr "E456: Kan inte hitta PostScript-källfilen \"prolog.ps\"" +#: ../errors.h:2683 +#, fuzzy, c-format +msgid "E1018: Cannot assign to a constant: %s" +msgstr "E160: Okänt signaturkommando: %s" -msgid "E456: Can't find PostScript resource file \"cidfont.ps\"" -msgstr "E456: Kan inte hitta PostScript-källfilen \"cidfont.ps\"" +#: ../errors.h:2685 +#, fuzzy +msgid "E1019: Can only concatenate to string" +msgstr "E691: Kan bara jämföra Lista med Lista" -#, c-format -msgid "E456: Can't find PostScript resource file \"%s.ps\"" -msgstr "E456: Kan inte hitta PostScript-källfilen \"%s.ps\"" +#: ../errors.h:2687 +#, fuzzy, c-format +msgid "E1020: Cannot use an operator on a new variable: %s" +msgstr "E795: Kan inte ta bort variabel %s" -#, c-format -msgid "E620: Unable to convert to print encoding \"%s\"" -msgstr "E620: Kunde inte konvertera från utskriftkodning \"%s\"" +#: ../errors.h:2689 +#, fuzzy +msgid "E1021: Const requires a value" +msgstr "E709: [:] kräver ett List-värde" -msgid "Sending to printer..." -msgstr "Skickar till skrivare..." +#: ../errors.h:2691 +msgid "E1022: Type or initialization required" +msgstr "" -msgid "E365: Failed to print PostScript file" -msgstr "E365: Misslyckades med att skriva ut PostScript-fil" +#: ../errors.h:2693 +#, fuzzy, c-format +msgid "E1023: Using a Number as a Bool: %lld" +msgstr "E703: Använder en Funcref som en siffra" -msgid "Print job sent." -msgstr "Skrivarjobb skickat." +#: ../errors.h:2695 +#, fuzzy +msgid "E1024: Using a Number as a String" +msgstr "E729: använder Funcref som en Sträng" -msgid "Add a new database" -msgstr "Lägg till en ny databas" +#: ../errors.h:2697 +#, fuzzy +msgid "E1025: Using } outside of a block scope" +msgstr "E168: :finish används utanför en körd fil" -msgid "Query for a pattern" -msgstr "Fråga efter ett mönster" +#: ../errors.h:2700 +#, fuzzy +msgid "E1026: Missing }" +msgstr "E220: Saknar }." -msgid "Show this message" -msgstr "Visa detta meddelande" +# TODO: Capitalise first word of message? +#: ../errors.h:2703 +#, fuzzy +msgid "E1027: Missing return statement" +msgstr "E417: saknar argument: %s" -msgid "Kill a connection" -msgstr "Döda en anslutning" +#: ../errors.h:2705 +#, fuzzy +msgid "E1028: Compiling :def function failed" +msgstr "E702: Jämförelsefunktionen för sortering misslyckades" -msgid "Reinit all connections" -msgstr "Ominitiera alla anslutningar" +# TODO: Capitalise first word of message? +#: ../errors.h:2707 +#, fuzzy, c-format +msgid "E1029: Expected %s but got %s" +msgstr "E415: oväntat likamed-tecken: %s" -msgid "Show connections" -msgstr "Visa anslutningar" +#: ../errors.h:2709 +#, fuzzy, c-format +msgid "E1030: Using a String as a Number: \"%s\"" +msgstr "E703: Använder en Funcref som en siffra" -#, c-format -msgid "E560: Usage: cs[cope] %s" -msgstr "E560: Användning: cs[cope] %s" +#: ../errors.h:2711 +#, fuzzy +msgid "E1031: Cannot use void value" +msgstr "E284: Kan inte ställa in IC-värden" -msgid "This cscope command does not support splitting the window.\n" -msgstr "Det här scope-kommandot stöder inte delning av fönstret.\n" +#: ../errors.h:2713 +#, fuzzy +msgid "E1032: Missing :catch or :finally" +msgstr "E604: :catch efter :finally" -msgid "E562: Usage: cstag " -msgstr "E562: Användning: cstag " +#: ../errors.h:2715 +msgid "E1033: Catch unreachable after catch-all" +msgstr "" # TODO: Capitalise first word of message? -msgid "E257: cstag: Tag not found" -msgstr "E257: cstag: tagg hittades inte" - -#, c-format -msgid "E563: stat(%s) error: %d" -msgstr "E563: stat(%s)-fel: %d" +#: ../errors.h:2717 +#, fuzzy, c-format +msgid "E1034: Cannot use reserved name %s" +msgstr "E247: ingen registrerad server med namnet \"%s\"" -msgid "E563: stat error" -msgstr "E563: stat-fel" +#: ../errors.h:2720 +#, fuzzy, no-c-format +msgid "E1035: % requires number arguments" +msgstr "E465: :winsize kräver två sifferargument" -#, c-format -msgid "E564: %s is not a directory or a valid cscope database" -msgstr "E564: %s är inte en katalog eller en godkänd cscope-databas" +#: ../errors.h:2722 +#, fuzzy, c-format +msgid "E1036: %c requires number or float arguments" +msgstr "E466: :winpos kräver två sifferargument" -#, c-format -msgid "Added cscope database %s" -msgstr "Lade till cscope-databas %s" +#: ../errors.h:2724 +#, fuzzy, c-format +msgid "E1037: Cannot use \"%s\" with %s" +msgstr "E190: Kan inte öppna \"%s\" för skrivning" -#, c-format -# TODO: Capitalise first word of message? -msgid "E262: Error reading cscope connection %ld" -msgstr "E262: fel vid läsning av cscope-anslutning %ld" +#: ../errors.h:2726 +#, fuzzy +msgid "E1038: \"vim9script\" can only be used in a script" +msgstr "E785: complete() kan bara användas i infogningsläge" -# TODO: Capitalise first word of message? -msgid "E561: Unknown cscope search type" -msgstr "E561: okänd cscope-söktyp" +#: ../errors.h:2728 +msgid "E1039: \"vim9script\" must be the first command in a script" +msgstr "" -msgid "E566: Could not create cscope pipes" -msgstr "E566: Kunde inte skapa cscope-rör" +#: ../errors.h:2731 +msgid "E1040: Cannot use :scriptversion after :vim9script" +msgstr "" -msgid "E622: Could not fork for cscope" -msgstr "E622: Kunde inte grena för cscope" +#: ../errors.h:2734 +#, c-format +msgid "E1041: Redefining script item: \"%s\"" +msgstr "" -msgid "cs_create_connection exec failed" -msgstr "cs_create_connection-exekvering misslyckades" +#: ../errors.h:2736 +#, fuzzy +msgid "E1042: Export can only be used in vim9script" +msgstr "E785: complete() kan bara användas i infogningsläge" -msgid "E623: Could not spawn cscope process" -msgstr "E623: Kunde inte starta cscope-process" +#: ../errors.h:2738 +#, fuzzy +msgid "E1043: Invalid command after :export" +msgstr "E182: Ogiltigt kommandonamn" -msgid "cs_create_connection: fdopen for to_fp failed" -msgstr "cs_create_connection: fdopen för to_fp misslyckades" +#: ../errors.h:2740 +#, fuzzy +msgid "E1044: Export with invalid argument" +msgstr "E474: Ogiltigt argument" -msgid "cs_create_connection: fdopen for fr_fp failed" -msgstr "cs_create_connection: fdopen för fr_fp misslyckades" +#: ../errors.h:2744 +#, fuzzy, c-format +msgid "E1047: Syntax error in import: %s" +msgstr "E554: Syntaxfel i %s{...}" -# TODO: Capitalise first word of message? -msgid "E567: No cscope connections" -msgstr "E567: inga cscope-anslutningar" +#: ../errors.h:2746 +#, fuzzy, c-format +msgid "E1048: Item not found in script: %s" +msgstr "E486: Mönster hittades inte: %s" +#: ../errors.h:2748 #, c-format -# TODO: Capitalise first word of message? -msgid "E259: No matches found for cscope query %s of %s" -msgstr "E259: inga träffar funna för cscope-förfrågan %s av %s" +msgid "E1049: Item not exported in script: %s" +msgstr "" +#: ../errors.h:2751 #, c-format -# TODO: Capitalise first word of message? -msgid "E469: Invalid cscopequickfix flag %c for %c" -msgstr "E469: ogiltig cscopequickfix flagga %c för %c" +msgid "E1050: Colon required before a range: %s" +msgstr "" -msgid "cscope commands:\n" -msgstr "cscope-kommandon:\n" +#: ../errors.h:2754 +#, fuzzy +msgid "E1051: Wrong argument type for +" +msgstr "E734: Fel variabeltyp för %s=" -#, c-format -msgid "%-5s: %-30s (Usage: %s)" -msgstr "%-5s: %-30s (Användning: %s)" +#: ../errors.h:2756 +#, fuzzy, c-format +msgid "E1052: Cannot declare an option: %s" +msgstr "E113: Okänd flagga: %s" + +#: ../errors.h:2758 +#, fuzzy, c-format +msgid "E1053: Could not import \"%s\"" +msgstr "E321: Kunde inte läsa om \"%s\"" +#: ../errors.h:2760 #, c-format -# TODO: Capitalise first word of message? -msgid "E625: Cannot open cscope database: %s" -msgstr "E625: kan inte öppna cscope-databas: %s" +msgid "E1054: Variable already declared in the script: %s" +msgstr "" -# TODO: Capitalise first word of message? -msgid "E626: Cannot get cscope database information" -msgstr "E626: kan inte hämta cscope-databasinformation" +#: ../errors.h:2762 +#, fuzzy +msgid "E1055: Missing name after ..." +msgstr "E526: Saknar nummer efter <%s>" # TODO: Capitalise first word of message? -msgid "E568: Duplicate cscope database not added" -msgstr "E568: dubblerad cscope-databas inte lagd till" +#: ../errors.h:2764 +#, fuzzy, c-format +msgid "E1056: Expected a type: %s" +msgstr "E415: oväntat likamed-tecken: %s" + +#: ../errors.h:2766 +#, fuzzy +msgid "E1057: Missing :enddef" +msgstr "E171: Saknar :endif" -msgid "E569: maximum number of cscope connections reached" -msgstr "E569: maximalt antal av cscope-anslutningar nått" +# TODO: Capitalise first word of message? +#: ../errors.h:2768 +#, fuzzy +msgid "E1058: Function nesting too deep" +msgstr "E218: autokommando nästlad för djupt" +#: ../errors.h:2770 #, c-format -# TODO: Capitalise first word of message? -msgid "E261: Cscope connection %s not found" -msgstr "E261: cscope-anslutning %s hittades inte" +msgid "E1059: No white space allowed before colon: %s" +msgstr "" + +#: ../errors.h:2772 +#, fuzzy, c-format +msgid "E1060: Expected dot after name: %s" +msgstr "E386: Förväntade '?' eller '/' efter ';'" + +#: ../errors.h:2774 +#, fuzzy, c-format +msgid "E1061: Cannot find function %s" +msgstr "E130: Okänd funktion: %s" + +#: ../errors.h:2776 +#, fuzzy +msgid "E1062: Cannot index a Number" +msgstr "E695: Kan inte indexera en Funcref" + +#: ../errors.h:2778 +#, fuzzy +msgid "E1063: Type mismatch for v: variable" +msgstr "E706: Variabeltyp matchar inte för: %s" + +#: ../errors.h:2781 +msgid "E1064: Yank register changed while using it" +msgstr "" -#, c-format -msgid "cscope connection %s closed" -msgstr "cscope-anslutning %s stängd" +#: ../errors.h:2783 +#, fuzzy, c-format +msgid "E1065: Command cannot be shortened: %s" +msgstr "E470: Kommando avbrutet" -#. should not reach here -# TODO: Capitalise first word of message? -msgid "E570: Fatal error in cs_manage_matches" -msgstr "E570: ödesdigert fel i cs_manage_matches" +#: ../errors.h:2786 +#, fuzzy, c-format +msgid "E1066: Cannot declare a register: %s" +msgstr "E739: Kan inte skapa katalog: %s" + +#: ../errors.h:2788 +#, fuzzy, c-format +msgid "E1067: Separator mismatch: %s" +msgstr "E706: Variabeltyp matchar inte för: %s" +#: ../errors.h:2790 #, c-format -msgid "Cscope tag: %s" -msgstr "Cscope-tagg: %s" +msgid "E1068: No white space allowed before '%s': %s" +msgstr "" -msgid "" -"\n" -" # line" +#: ../errors.h:2792 +#, c-format +msgid "E1069: White space required after '%s': %s" msgstr "" -"\n" -" # rad" -msgid "filename / context / line\n" -msgstr "filnamn / sammanhang / rad\n" +#: ../errors.h:2794 +#, fuzzy, c-format +msgid "E1071: Invalid string for :import: %s" +msgstr "E181: Ogiltigt attribut: %s" -#, c-format -msgid "E609: Cscope error: %s" -msgstr "E609: Cscope-fel: %s" +#: ../errors.h:2796 +#, fuzzy, c-format +msgid "E1072: Cannot compare %s with %s" +msgstr "E691: Kan bara jämföra Lista med Lista" -msgid "All cscope databases reset" -msgstr "Alla cscope-databaser återställda" +#: ../errors.h:2798 +#, fuzzy, c-format +msgid "E1073: Name already defined: %s" +msgstr "E737: Tangenten finns redan: %s" -msgid "no cscope connections\n" -msgstr "inga cscope-anslutningar\n" +#: ../errors.h:2800 +#, fuzzy +msgid "E1074: No white space allowed after dot" +msgstr "E790: undojoin är inte tillåtet efter undo" -msgid " # pid database name prepend path\n" -msgstr " # pid databasnamn först i sökväg\n" +# TODO: Capitalise first word of message? +#: ../errors.h:2802 +#, fuzzy, c-format +msgid "E1075: Namespace not supported: %s" +msgstr "E666: kompilator stöds inte: %s" -msgid "" -"???: Sorry, this command is disabled, the MzScheme library could not be " -"loaded." -msgstr "" -"???: Tyvärr, det här kommandot är inaktiverat: MzScheme-biblioteket kunde " -"inte läsas in." +# TODO: Capitalise first word of message? +#: ../errors.h:2805 +#, fuzzy, c-format +msgid "E1077: Missing argument type for %s" +msgstr "E417: saknar argument: %s" -msgid "invalid expression" -msgstr "ogiltigt uttryck" +#: ../errors.h:2808 +msgid "E1078: Invalid command \"nested\", did you mean \"++nested\"?" +msgstr "" -msgid "expressions disabled at compile time" -msgstr "uttryck inaktiverat vid kompilering" +#: ../errors.h:2811 +#, fuzzy +msgid "E1079: Cannot declare a variable on the command line" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "hidden option" -msgstr "gömd flagga" +#: ../errors.h:2813 +#, fuzzy +msgid "E1080: Invalid assignment" +msgstr "E474: Ogiltigt argument" -msgid "unknown option" -msgstr "okänd flagga" +#: ../errors.h:2815 +#, fuzzy, c-format +msgid "E1081: Cannot unlet %s" +msgstr "E306: Kan inte öppna %s" -msgid "window index is out of range" -msgstr "fönsterindex är utanför område" +#: ../errors.h:2818 +#, fuzzy +msgid "E1082: Command modifier without command" +msgstr "E492: Inte ett redigerarkommando" -msgid "couldn't open buffer" -msgstr "kunde inte öppna buffert" +#: ../errors.h:2821 +#, fuzzy +msgid "E1083: Missing backtick" +msgstr "E110: Saknar ')'" -msgid "cannot save undo information" -msgstr "kan inte spara ångra-information" +#: ../errors.h:2823 +#, fuzzy, c-format +msgid "E1084: Cannot delete Vim9 script function %s" +msgstr "E131: Kan inte ta bort funktion %s: Den används" -msgid "cannot delete line" -msgstr "kan inte ta bort rad" +#: ../errors.h:2825 +#, fuzzy, c-format +msgid "E1085: Not a callable type: %s" +msgstr "E108: Ingen sådan variabel: \"%s\"" -msgid "cannot replace line" -msgstr "kan inte ersätta rad" +#: ../errors.h:2828 +msgid "E1087: Cannot use an index when declaring a variable" +msgstr "" -msgid "cannot insert line" -msgstr "kan inte infoga rad" +#: ../errors.h:2830 +msgid "E1088: Script cannot import itself" +msgstr "" -msgid "string cannot contain newlines" -msgstr "sträng kan inte innehålla nyrader" +#: ../errors.h:2832 +#, fuzzy, c-format +msgid "E1089: Unknown variable: %s" +msgstr "E121: Odefinierad variabel: %s" -msgid "Vim error: ~a" -msgstr "Vim-fel: ~a" +#: ../errors.h:2834 +#, fuzzy, c-format +msgid "E1090: Cannot assign to argument %s" +msgstr "E197: Kan inte sätta språk till \"%s\"" -msgid "Vim error" -msgstr "Vim-fel" +#: ../errors.h:2836 +#, fuzzy, c-format +msgid "E1091: Function is not compiled: %s" +msgstr "E160: Okänt signaturkommando: %s" -msgid "buffer is invalid" -msgstr "buffert är ogiltig" +#: ../errors.h:2838 +#, fuzzy +msgid "E1092: Cannot nest :redir" +msgstr "E97: Kan inte skapa skiljare" -msgid "window is invalid" -msgstr "fönster är ogiltigt" +#: ../errors.h:2840 +#, c-format +msgid "E1093: Expected %d items but got %d" +msgstr "" -msgid "linenr out of range" -msgstr "radnummer utanför område" +#: ../errors.h:2842 +#, fuzzy +msgid "E1094: Import can only be used in a script" +msgstr "E785: complete() kan bara användas i infogningsläge" -msgid "not allowed in the Vim sandbox" -msgstr "inte tillåtet i Vim-sandlådan" +#: ../errors.h:2844 +#, fuzzy, c-format +msgid "E1095: Unreachable code after :%s" +msgstr "E215: Otillåtet tecken efter *: %s" -msgid "" -"E263: Sorry, this command is disabled, the Python library could not be " -"loaded." +#: ../errors.h:2846 +msgid "E1096: Returning a value in a function without a return type" msgstr "" -"E263: Tyvärr, detta kommandot är inaktiverat, Python-biblioteket kunde inte " -"läsas in." - -msgid "E659: Cannot invoke Python recursively" -msgstr "E659: Kan inte anropa Python rekursivt" -msgid "can't delete OutputObject attributes" -msgstr "kan inte ta bort OutputObject-attribut" +#: ../errors.h:2848 +msgid "E1097: Line incomplete" +msgstr "" -msgid "softspace must be an integer" -msgstr "softspace måste vara ett heltal" +#: ../errors.h:2850 +#, fuzzy +msgid "E1098: String, List or Blob required" +msgstr "E714: Lista krävs" -msgid "invalid attribute" -msgstr "ogiltigt attribut" +#: ../errors.h:2852 +#, fuzzy, c-format +msgid "E1099: Unknown error while executing %s" +msgstr "E130: Okänd funktion: %s" -msgid "writelines() requires list of strings" -msgstr "writelines() kräver lista av strängar" +#: ../errors.h:2854 +#, c-format +msgid "E1100: Command not supported in Vim9 script (missing :var?): %s" +msgstr "" -msgid "E264: Python: Error initialising I/O objects" -msgstr "E264: Python: Fel vid initiering av I/O-objekt" +#: ../errors.h:2856 +#, fuzzy, c-format +msgid "E1101: Cannot declare a script variable in a function: %s" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "attempt to refer to deleted buffer" -msgstr "försök att referera till borttagen buffert" +#: ../errors.h:2858 +#, fuzzy, c-format +msgid "E1102: Lambda function not found: %s" +msgstr "E161: Brytpunkt hittades inte: %s" -msgid "line number out of range" -msgstr "radnummer utanför område" +#: ../errors.h:2860 +#, fuzzy +msgid "E1103: Dictionary not set" +msgstr "E20: Markering inte satt" -#, c-format -msgid "" -msgstr "" +#: ../errors.h:2862 +#, fuzzy +msgid "E1104: Missing >" +msgstr "E110: Saknar ')'" -msgid "invalid mark name" -msgstr "ogiltigt märknamn" +#: ../errors.h:2864 +#, fuzzy, c-format +msgid "E1105: Cannot convert %s to string" +msgstr "E152: Kan inte öppna %s för skrivning" -msgid "no such buffer" -msgstr "ingen sådan buffert" +# TODO: Capitalise first word of message? +#: ../errors.h:2866 +#, fuzzy, c-format +msgid "E1106: One argument too many" +msgid_plural "E1106: %d arguments too many" +msgstr[0] "E144: ickenumeriskt argument till :z" +msgstr[1] "E144: ickenumeriskt argument till :z" -msgid "attempt to refer to deleted window" -msgstr "försök att referera till borttaget fönster" +#: ../errors.h:2870 +msgid "E1107: String, List, Dict or Blob required" +msgstr "" -msgid "readonly attribute" -msgstr "skrivskyddad attribut" +#: ../errors.h:2873 +#, fuzzy, c-format +msgid "E1109: List item %d is not a List" +msgstr "E711: List-värde har inte tillräckligt med föremål" -msgid "cursor position outside buffer" -msgstr "markörposition utanför buffert" +#: ../errors.h:2875 +#, c-format +msgid "E1110: List item %d does not contain 3 numbers" +msgstr "" +#: ../errors.h:2877 #, c-format -msgid "" -msgstr "" +msgid "E1111: List item %d range invalid" +msgstr "" +#: ../errors.h:2879 #, c-format -msgid "" -msgstr "" +msgid "E1112: List item %d cell width invalid" +msgstr "" +#: ../errors.h:2881 #, c-format -msgid "" -msgstr "" +msgid "E1113: Overlapping ranges for 0x%lx" +msgstr "" -msgid "no such window" -msgstr "inget sådant fönster" +#: ../errors.h:2883 +#, fuzzy +msgid "E1114: Only values of 0x80 and higher supported" +msgstr "E754: Bara upp till 8 regioner stöds" -msgid "E265: $_ must be an instance of String" -msgstr "E265: $_ måste vara en instans av String" +#: ../errors.h:2885 +msgid "E1115: \"assert_fails()\" fourth argument must be a number" +msgstr "" -msgid "" -"E266: Sorry, this command is disabled, the Ruby library could not be loaded." +#: ../errors.h:2887 +msgid "E1116: \"assert_fails()\" fifth argument must be a string" msgstr "" -"E266: Tyvärr, detta kommandot är inaktiverat, Ruby-biblioteket kunde inte " -"läsas in." -# TODO: Capitalise first word of message? -msgid "E267: Unexpected return" -msgstr "E267: oväntad returnering" +#: ../errors.h:2889 +msgid "E1117: Cannot use ! with nested :def" +msgstr "" -# TODO: Capitalise first word of message? -msgid "E268: Unexpected next" -msgstr "E268: oväntad next" +#: ../errors.h:2891 +#, fuzzy +msgid "E1118: Cannot change locked list" +msgstr "E742: Kan inte ändra värde av %s" -# TODO: Capitalise first word of message? -msgid "E269: Unexpected break" -msgstr "E269: oväntad break" +#: ../errors.h:2893 +#, fuzzy +msgid "E1119: Cannot change locked list item" +msgstr "E165: Kan inte gå bortom sista filen" -# TODO: Capitalise first word of message? -msgid "E270: Unexpected redo" -msgstr "E270: oväntad redo" +#: ../errors.h:2895 +#, fuzzy +msgid "E1120: Cannot change dict" +msgstr "E530: Kan inte ändra term i GUI" -# TODO: Capitalise first word of message? -msgid "E271: Retry outside of rescue clause" -msgstr "E271: retry utanför rescue-block" +#: ../errors.h:2897 +#, fuzzy +msgid "E1121: Cannot change dict item" +msgstr "E530: Kan inte ändra term i GUI" -# TODO: Capitalise first word of message? -msgid "E272: Unhandled exception" -msgstr "E272: ohanterat undantag" +#: ../errors.h:2899 +#, fuzzy, c-format +msgid "E1122: Variable is locked: %s" +msgstr "E741: Värde är låst: %s" -#, c-format # TODO: Capitalise first word of message? -msgid "E273: Unknown longjmp status %d" -msgstr "E273: okänt longjmp-status %d" +#: ../errors.h:2901 +#, fuzzy, c-format +msgid "E1123: Missing comma before argument: %s" +msgstr "E417: saknar argument: %s" -msgid "Toggle implementation/definition" -msgstr "Växla mellan implementation/definition" +#: ../errors.h:2903 +#, c-format +msgid "E1124: \"%s\" cannot be used in legacy Vim script" +msgstr "" -msgid "Show base class of" -msgstr "Visa basklass av" +#: ../errors.h:2905 +#, fuzzy +msgid "E1125: Final requires a value" +msgstr "E709: [:] kräver ett List-värde" -msgid "Show overridden member function" -msgstr "Visa åsidosatt medlemsfunktion" +#: ../errors.h:2907 +msgid "E1126: Cannot use :let in Vim9 script" +msgstr "" -msgid "Retrieve from file" -msgstr "Hämta från fil" +#: ../errors.h:2909 +#, fuzzy +msgid "E1127: Missing name after dot" +msgstr "E526: Saknar nummer efter <%s>" -msgid "Retrieve from project" -msgstr "Hämta från projekt" +#: ../errors.h:2911 +#, fuzzy +msgid "E1128: } without {" +msgstr "E581: :else utan :if" -msgid "Retrieve from all projects" -msgstr "Hämta från alla projekt" +#: ../errors.h:2913 +#, fuzzy +msgid "E1129: Throw with empty string" +msgstr "E529: Kan inte sätta 'term' till tom sträng" -msgid "Retrieve" -msgstr "Hämta" +#: ../errors.h:2915 +#, fuzzy +msgid "E1130: Cannot add to null list" +msgstr "E306: Kan inte öppna %s" -msgid "Show source of" -msgstr "Visa källa för" +#: ../errors.h:2917 +msgid "E1131: Cannot add to null blob" +msgstr "" -msgid "Find symbol" -msgstr "Hitta symbol" +#: ../errors.h:2919 +#, fuzzy +msgid "E1132: Missing function argument" +msgstr "E126: Saknar :endfunction" -msgid "Browse class" -msgstr "Bläddra i klass" +#: ../errors.h:2921 +#, fuzzy +msgid "E1133: Cannot extend a null dict" +msgstr "E79: Kan inte expandera jokertecken" -msgid "Show class in hierarchy" -msgstr "Visa klass i hierarki" +#: ../errors.h:2923 +msgid "E1134: Cannot extend a null list" +msgstr "" -msgid "Show class in restricted hierarchy" -msgstr "Visa klass i begränsad hierarki" +#: ../errors.h:2925 +#, c-format +msgid "E1135: Using a String as a Bool: \"%s\"" +msgstr "" -msgid "Xref refers to" -msgstr "Xref refererar till" +#: ../errors.h:2928 +msgid "E1136: mapping must end with before second " +msgstr "" -msgid "Xref referred by" -msgstr "Xref refereras av" +#: ../errors.h:2932 +#, fuzzy +msgid "E1138: Using a Bool as a Number" +msgstr "E745: Använder en Lista som en siffra" -msgid "Xref has a" -msgstr "Xref har en" +#: ../errors.h:2934 +msgid "E1139: Missing matching bracket after dict key" +msgstr "" -msgid "Xref used by" -msgstr "Xref används av" +#: ../errors.h:2936 +msgid "E1140: :for argument must be a sequence of lists" +msgstr "" -msgid "Show docu of" -msgstr "Visa docu av" +#: ../errors.h:2938 +#, fuzzy +msgid "E1141: Indexable type required" +msgstr "E714: Lista krävs" -msgid "Generate docu for" -msgstr "Generera docu för" +#: ../errors.h:2940 +msgid "E1142: Calling test_garbagecollect_now() while v:testing is not set" +msgstr "" -msgid "not " -msgstr "inte " +#: ../errors.h:2942 +#, fuzzy, c-format +msgid "E1143: Empty expression: \"%s\"" +msgstr "E15: Ogiltigt uttryck: %s" -msgid "connected" -msgstr "ansluten" +#: ../errors.h:2944 +#, c-format +msgid "E1144: Command \"%s\" is not followed by white space: %s" +msgstr "" -msgid "invalid buffer number" -msgstr "ogiltigt buffertnummer" +#: ../errors.h:2946 +#, fuzzy, c-format +msgid "E1145: Missing heredoc end marker: %s" +msgstr "E114: Saknar citattecken: %s" -msgid "not implemented yet" -msgstr "inte implementerat än" +#: ../errors.h:2948 +#, fuzzy, c-format +msgid "E1146: Command not recognized: %s" +msgstr "E421: Färgnamn eller nummer inte igenkänt: %s" -#. ??? -msgid "cannot set line(s)" -msgstr "kan inte ställa in rad(er)" +#: ../errors.h:2950 +#, fuzzy +msgid "E1147: List not set" +msgstr "E114: Saknar citattecken: %s" -msgid "mark not set" -msgstr "märke inte satt" +#: ../errors.h:2952 +#, fuzzy, c-format +msgid "E1148: Cannot index a %s" +msgstr "E695: Kan inte indexera en Funcref" +#: ../errors.h:2954 #, c-format -msgid "row %d column %d" -msgstr "rad %d kolumn %d" - -msgid "cannot insert/append line" -msgstr "kan inte infoga/lägga till rad" - -msgid "unknown flag: " -msgstr "okänd flagga: " - -msgid "unknown vimOption" -msgstr "okänd vimOption" +msgid "E1149: Script variable is invalid after reload in function %s" +msgstr "" -msgid "keyboard interrupt" -msgstr "tangentbordsavbrott" +#: ../errors.h:2956 +msgid "E1150: Script variable type changed" +msgstr "" -msgid "cannot create buffer/window command: object is being deleted" -msgstr "kan inte skapa buffert/fönster-kommando: objekt håller på att tas bort" +#: ../errors.h:2958 +#, fuzzy +msgid "E1151: Mismatched endfunction" +msgstr "E126: Saknar :endfunction" -msgid "" -"cannot register callback command: buffer/window is already being deleted" -msgstr "" -"kan inte registera återkallningskommando: buffert/fönster håller redan på " -"att tas bort" +#: ../errors.h:2960 +#, fuzzy +msgid "E1152: Mismatched enddef" +msgstr "E52: Omatchade \\z(" -#. This should never happen. Famous last word? -msgid "" -"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim." -"org" -msgstr "" -"E280: TCL ÖDESDIGERT FEL: reflist trasig!? Var snäll och rapportera detta " -"till vim-dev@vim.org" +#: ../errors.h:2962 +#, fuzzy, c-format +msgid "E1153: Invalid operation for %s" +msgstr "E692: Ogiltig operation för Lista" -msgid "cannot register callback command: buffer/window reference not found" +#: ../errors.h:2964 +msgid "E1154: Divide by zero" msgstr "" -"kan inte registrera återkallningskommando: buffert-/fönsterreferens hittades " -"inte" -msgid "" -"E571: Sorry, this command is disabled: the Tcl library could not be loaded." -msgstr "" -"E571: Tyvärr, detta kommando är inaktiverat: Tcl-biblioteket kunde inte " -"läsas in." +#: ../errors.h:2967 +#, fuzzy +msgid "E1155: Cannot define autocommands for ALL events" +msgstr "E217: Kan inte köra autokommandon för ALLA händelser" -msgid "" -"E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org" -msgstr "" -"E281: TCL-FEL: Avslutningskoden är inte int!? Var snäll och rapportera detta " -"till vim-dev@vim.org" +#: ../errors.h:2969 +#, fuzzy +msgid "E1156: Cannot change the argument list recursively" +msgstr "E659: Kan inte anropa Python rekursivt" -#, c-format -# TODO: Capitalise first word of message? -msgid "E572: Exit code %d" -msgstr "E572: avslutningskod %d" +#: ../errors.h:2972 +#, fuzzy +msgid "E1157: Missing return type" +msgstr "E115: Saknar citattecken: %s" -msgid "cannot get line" -msgstr "kan inte hämta rad" +#: ../errors.h:2974 +msgid "E1158: Cannot use flatten() in Vim9 script, use flattennew()" +msgstr "" -msgid "Unable to register a command server name" -msgstr "Kunde inte registrera ett kommandoservernamn" +#: ../errors.h:2977 +#, fuzzy +msgid "E1159: Cannot split a window when closing the buffer" +msgstr "E90: Kan inte ladda ur senaste buffert" -msgid "E248: Failed to send command to the destination program" -msgstr "E248: Misslyckades att skicka kommando till målprogrammet" +#: ../errors.h:2980 +#, fuzzy +msgid "E1160: Cannot use a default for variable arguments" +msgstr "E795: Kan inte ta bort variabel %s" + +#: ../errors.h:2982 +#, fuzzy, c-format +msgid "E1161: Cannot json encode a %s" +msgstr "E306: Kan inte öppna %s" +#: ../errors.h:2984 #, c-format -msgid "E573: Invalid server id used: %s" -msgstr "E573: Ogiltigt server-id använt: %s" +msgid "E1162: Register name must be one character: %s" +msgstr "" -msgid "E251: VIM instance registry property is badly formed. Deleted!" -msgstr "E251: VIM instansregisteregenskap är dåligt format. Borttaget!" +#: ../errors.h:2986 +#, fuzzy, c-format +msgid "E1163: Variable %d: type mismatch, expected %s but got %s" +msgstr "E706: Variabeltyp matchar inte för: %s" -msgid "Unknown option argument" -msgstr "Okänt flaggargument" +#: ../errors.h:2988 +#, fuzzy, c-format +msgid "E1163: Variable %d: type mismatch, expected %s but got %s in %s" +msgstr "E706: Variabeltyp matchar inte för: %s" -msgid "Too many edit arguments" -msgstr "För många redigeringsargument" +#: ../errors.h:2991 +msgid "E1164: vim9cmd must be followed by a command" +msgstr "" -msgid "Argument missing after" -msgstr "Argument saknas efter" +#: ../errors.h:2994 +#, c-format +msgid "E1165: Cannot use a range with an assignment: %s" +msgstr "" -msgid "Garbage after option argument" -msgstr "Skräp efter flaggargument" +#: ../errors.h:2996 +#, fuzzy +msgid "E1166: Cannot use a range with a dictionary" +msgstr "E719: Kan inte använda [:] med en Tabell" -msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments" +#: ../errors.h:2998 +#, c-format +msgid "E1167: Argument name shadows existing variable: %s" msgstr "" -"För många \"+kommando\"-, \"-c kommando\"- eller \"--cmd kommando\"-argument" - -msgid "Invalid argument for" -msgstr "Ogiltigt argument för" +#: ../errors.h:3000 #, c-format -msgid "%d files to edit\n" -msgstr "%d filer att redigera\n" +msgid "E1168: Argument already declared in the script: %s" +msgstr "" -msgid "This Vim was not compiled with the diff feature." -msgstr "Denna Vim blev inte kompilerad med diff-funktionen." +#: ../errors.h:3002 +#, fuzzy, c-format +msgid "E1169: Expression too recursive: %s" +msgstr "E169: Kommando för rekursivt" -msgid "Attempt to open script file again: \"" -msgstr "Försök att öppna skriptfil igen: \"" +#: ../errors.h:3004 +msgid "E1170: Cannot use #{ to start a comment" +msgstr "" -msgid "Cannot open for reading: \"" -msgstr "Kan inte öppna för läsning: \"" +#: ../errors.h:3006 +#, fuzzy +msgid "E1171: Missing } after inline function" +msgstr "E126: Saknar :endfunction" -msgid "Cannot open for script output: \"" -msgstr "Kan inte öppna för skriptutmatning: \"" +#: ../errors.h:3008 +#, fuzzy +msgid "E1172: Cannot use default values in a lambda" +msgstr "E284: Kan inte ställa in IC-värden" -msgid "Vim: Error: Failure to start gvim from NetBeans\n" -msgstr "Vim: Fel: Misslyckades att starta gvim från NetBeans\n" +#: ../errors.h:3010 +#, fuzzy, c-format +msgid "E1173: Text found after %s: %s" +msgstr "E753: Hittades inte: %s" -msgid "Vim: Warning: Output is not to a terminal\n" -msgstr "Vim: Varning: Utmatning är inte till en terminal\n" +#: ../errors.h:3012 +#, fuzzy, c-format +msgid "E1174: String required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" -msgid "Vim: Warning: Input is not from a terminal\n" -msgstr "Vim: Varning: Inmatning är inte från en terminal\n" +#: ../errors.h:3014 +#, fuzzy, c-format +msgid "E1175: Non-empty string required for argument %d" +msgstr "E467: Specialkomplettering kräver ett funktionsargument" -#. just in case.. -msgid "pre-vimrc command line" -msgstr "pre-vimrc kommandorad" +#: ../errors.h:3016 +msgid "E1176: Misplaced command modifier" +msgstr "" -#, c-format -msgid "E282: Cannot read from \"%s\"" -msgstr "E282: Kan inte läsa från \"%s\"" +#: ../errors.h:3018 +#, fuzzy, c-format +msgid "E1177: For loop on %s not supported" +msgstr "E519: Flagga stöds inte" -msgid "" -"\n" -"More info with: \"vim -h\"\n" +#: ../errors.h:3020 +msgid "E1178: Cannot lock or unlock a local variable" msgstr "" -"\n" -"Mer info med: \"vim -h\"\n" -msgid "[file ..] edit specified file(s)" -msgstr "[fil ..] redigera angivna fil(er)" +#: ../errors.h:3024 +#, c-format +msgid "" +"E1179: Failed to extract PWD from %s, check your shell's config related to " +"OSC 7" +msgstr "" -msgid "- read text from stdin" -msgstr "- läs text från standard in" +#: ../errors.h:3028 +#, fuzzy, c-format +msgid "E1180: Variable arguments type must be a list: %s" +msgstr "E686: Argument av %s måste vara en List" -msgid "-t tag edit file where tag is defined" -msgstr "-t tagg redigera fil där tagg är definierad" +#: ../errors.h:3030 +#, fuzzy +msgid "E1181: Cannot use an underscore here" +msgstr "E185: Kan inte hitta färgschema %s" -msgid "-q [errorfile] edit file with first error" -msgstr "-q [felfil] redigera fil med första fel" +#: ../errors.h:3032 +#, fuzzy, c-format +msgid "E1182: Cannot define a dict function in Vim9 script: %s" +msgstr "E131: Kan inte ta bort funktion %s: Den används" -msgid "" -"\n" -"\n" -"Usage:" +#: ../errors.h:3034 +#, c-format +msgid "E1183: Cannot use a range with an assignment operator: %s" msgstr "" -"\n" -"\n" -"användning:" -msgid " vim [arguments] " -msgstr " vim [argument] " +#: ../errors.h:3038 +#, fuzzy +msgid "E1184: Blob not set" +msgstr "E20: Markering inte satt" -msgid "" -"\n" -" or:" +#: ../errors.h:3040 +#, fuzzy +msgid "E1185: Missing :redir END" +msgstr "E171: Saknar :endif" + +#: ../errors.h:3042 +#, c-format +msgid "E1186: Expression does not result in a value: %s" msgstr "" -"\n" -" eller:" -msgid "" -"\n" -"Where case is ignored prepend / to make flag upper case" +#: ../errors.h:3045 +msgid "E1187: Failed to source defaults.vim" msgstr "" -"\n" -"Där storlek ignoreras börja med / för att göra flagga versal" -msgid "" -"\n" -"\n" -"Arguments:\n" +#: ../errors.h:3048 +msgid "E1188: Cannot open a terminal from the command line window" msgstr "" -"\n" -"\n" -"Argument:\n" -msgid "--\t\t\tOnly file names after this" -msgstr "--\t\t\tBara filnamn efter det här" +#: ../errors.h:3052 +#, fuzzy, c-format +msgid "E1189: Cannot use :legacy with this command: %s" +msgstr "E719: Kan inte använda [:] med en Tabell" -msgid "--literal\t\tDon't expand wildcards" -msgstr "--literal\t\tExpandera inte jokertecken" +# TODO: Capitalise first word of message? +#: ../errors.h:3054 +#, fuzzy, c-format +msgid "E1190: One argument too few" +msgid_plural "E1190: %d arguments too few" +msgstr[0] "E144: ickenumeriskt argument till :z" +msgstr[1] "E144: ickenumeriskt argument till :z" + +#: ../errors.h:3058 +#, fuzzy, c-format +msgid "E1191: Call to function that failed to compile: %s" +msgstr "E725: Anropar tabell-funktion utan Tabell: %s" -msgid "-register\t\tRegister this gvim for OLE" -msgstr "-register\t\tRegistrera gvim för OLE" +#: ../errors.h:3060 +#, fuzzy +msgid "E1192: Empty function name" +msgstr "E792: Tomt menynamn" -msgid "-unregister\t\tUnregister gvim for OLE" -msgstr "-unregister\t\tAvregistrera gvim för OLE" +#: ../errors.h:3066 +msgid "E1193: cryptmethod xchacha20 not built into this Vim" +msgstr "" -msgid "-g\t\t\tRun using GUI (like \"gvim\")" -msgstr "-g\t\t\tKör som GUI (som \"gvim\")" +#: ../errors.h:3070 +msgid "E1194: Cannot encrypt header, not enough space" +msgstr "" -msgid "-f or --nofork\tForeground: Don't fork when starting GUI" -msgstr "-f eller --nofork\tFörgrund: Grena inte vid start av GUI" +#: ../errors.h:3072 +msgid "E1195: Cannot encrypt buffer, not enough space" +msgstr "" -msgid "-v\t\t\tVi mode (like \"vi\")" -msgstr "-v\t\t\tVi-läge (som \"vi\")" +#: ../errors.h:3074 +msgid "E1196: Cannot decrypt header, not enough space" +msgstr "" -msgid "-e\t\t\tEx mode (like \"ex\")" -msgstr "-e\t\t\tEx-läge (som \"ex\")" +#: ../errors.h:3077 +#, fuzzy +msgid "E1197: Cannot allocate_buffer for encryption" +msgstr "E82: Kan inte allokera någon buffert, avslutar..." -msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")" -msgstr "-s\t\t\tTyst (batch) läge (bara för \"ex\")" +#: ../errors.h:3079 +msgid "E1198: Decryption failed: Header incomplete!" +msgstr "" -msgid "-d\t\t\tDiff mode (like \"vimdiff\")" -msgstr "-d\t\t\tDiff-läge (som \"vimdiff\")" +#: ../errors.h:3082 +msgid "E1199: Cannot decrypt buffer, not enough space" +msgstr "" -msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" -msgstr "-y\t\t\tLätt läge (som \"evim\", lägeslös)" +#: ../errors.h:3085 +#, fuzzy +msgid "E1200: Decryption failed!" +msgstr "E237: Skrivarval misslyckades" -msgid "-R\t\t\tReadonly mode (like \"view\")" -msgstr "-R\t\t\tSkrivskyddat läge (som \"view\")" +#: ../errors.h:3087 +msgid "E1201: Decryption failed: pre-mature end of file!" +msgstr "" -msgid "-Z\t\t\tRestricted mode (like \"rvim\")" -msgstr "-Z\t\t\tBegränsat läge (som \"rvim\")" +#: ../errors.h:3092 +#, c-format +msgid "E1202: No white space allowed after '%s': %s" +msgstr "" -msgid "-m\t\t\tModifications (writing files) not allowed" -msgstr "-m\t\t\tModifieringar (skriva filer) inte tillåtet" +#: ../errors.h:3094 +#, fuzzy, c-format +msgid "E1203: Dot not allowed after a %s: %s" +msgstr "E790: undojoin är inte tillåtet efter undo" -msgid "-M\t\t\tModifications in text not allowed" -msgstr "-M\t\t\tModifieringar i text inte tillåtet" +#: ../errors.h:3097 +#, c-format +msgid "E1204: No Number allowed after .: '\\%%%c'" +msgstr "" -msgid "-b\t\t\tBinary mode" -msgstr "-b\t\t\tBinärläge" +#: ../errors.h:3099 +msgid "E1205: No white space allowed between option and" +msgstr "" -msgid "-l\t\t\tLisp mode" -msgstr "-l\t\t\tLisp-läge" +#: ../errors.h:3102 +#, fuzzy, c-format +msgid "E1206: Dictionary required for argument %d" +msgstr "E715: Tabell krävs" -msgid "-C\t\t\tCompatible with Vi: 'compatible'" -msgstr "-C\t\t\tKompatibelt med Vi: 'compatible'" +#: ../errors.h:3104 +#, c-format +msgid "E1207: Expression without an effect: %s" +msgstr "" -msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'" -msgstr "-N\t\t\tInte fullt Vi-kompatibel: 'nocompatible'" +#: ../errors.h:3107 +msgid "E1208: -complete used without allowing arguments" +msgstr "" -msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]" -msgstr "-V[N][fnamn]\t\tVar mångordig [nivå N] [logga meddelanden till fnamn]" +#: ../errors.h:3110 +#, fuzzy, c-format +msgid "E1209: Invalid value for a line number: \"%s\"" +msgstr "Ogiltigt värde för FLAG i %s rad %d: %s" -msgid "-D\t\t\tDebugging mode" -msgstr "-D\t\t\tFelsökningsläge" +#: ../errors.h:3112 +#, fuzzy, c-format +msgid "E1210: Number required for argument %d" +msgstr "E521: Nummer krävs efter =" -msgid "-n\t\t\tNo swap file, use memory only" -msgstr "-n\t\t\tIngen växlingsfil, använd endast minnet" +#: ../errors.h:3114 +#, fuzzy, c-format +msgid "E1211: List required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" -msgid "-r\t\t\tList swap files and exit" -msgstr "-r\t\t\tLista växlingsfiler och avsluta" +#: ../errors.h:3116 +#, fuzzy, c-format +msgid "E1212: Bool required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" -msgid "-r (with file name)\tRecover crashed session" -msgstr "-r (med filnamn)\tÅterskapa kraschad session" +#: ../errors.h:3118 +#, c-format +msgid "E1213: Redefining imported item \"%s\"" +msgstr "" -msgid "-L\t\t\tSame as -r" -msgstr "-L\t\t\tSamma som -r" +#: ../errors.h:3122 +#, c-format +msgid "E1214: Digraph must be just two characters: %s" +msgstr "" -msgid "-f\t\t\tDon't use newcli to open window" -msgstr "-f\t\t\tAnvända inte newcli för att öppna fönster" +#: ../errors.h:3124 +#, c-format +msgid "E1215: Digraph must be one character: %s" +msgstr "" -msgid "-dev \t\tUse for I/O" -msgstr "-dev \t\tAnvänd för I/O" +#: ../errors.h:3126 +msgid "" +"E1216: digraph_setlist() argument must be a list of lists with two items" +msgstr "" -msgid "-A\t\t\tStart in Arabic mode" -msgstr "-A\t\t\tStarta i arabiskt läge" +#: ../errors.h:3131 +#, c-format +msgid "E1217: Channel or Job required for argument %d" +msgstr "" -msgid "-H\t\t\tStart in Hebrew mode" -msgstr "-H\t\t\tStarta i hebreiskt läge" +#: ../errors.h:3133 +#, fuzzy, c-format +msgid "E1218: Job required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" -msgid "-F\t\t\tStart in Farsi mode" -msgstr "-F\t\t\tStarta i persiskt läge (Farsi)" +#: ../errors.h:3136 +#, fuzzy, c-format +msgid "E1219: Float or Number required for argument %d" +msgstr "E521: Nummer krävs efter =" -msgid "-T \tSet terminal type to " -msgstr "-T \tStäll in terminaltyp till " +# TODO: Capitalise first word of message? +#: ../errors.h:3138 +#, fuzzy, c-format +msgid "E1220: String or Number required for argument %d" +msgstr "E179: argument krävs för -complete" -msgid "-u \t\tUse instead of any .vimrc" -msgstr "-u \t\tAnvänd istället för någon .vimrc" +#: ../errors.h:3141 +#, c-format +msgid "E1221: String or Blob required for argument %d" +msgstr "" -msgid "-U \t\tUse instead of any .gvimrc" -msgstr "-U \t\tAnvänd istället för någon .gvimrc" +#: ../errors.h:3144 +#, fuzzy, c-format +msgid "E1222: String or List required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" -msgid "--noplugin\t\tDon't load plugin scripts" -msgstr "--noplugin\t\tLäs inte in insticksskript" +#: ../errors.h:3146 +#, c-format +msgid "E1223: String or Dictionary required for argument %d" +msgstr "" -msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" -msgstr "-p[N]\t\tÖppna N flikar (standard: en för varje fil)" +#: ../errors.h:3148 +#, c-format +msgid "E1224: String, Number or List required for argument %d" +msgstr "" -msgid "-o[N]\t\tOpen N windows (default: one for each file)" -msgstr "-o[N]\t\tÖppna N fönster (standard: ett för varje fil)" +#: ../errors.h:3150 +#, c-format +msgid "E1225: String, List or Dictionary required for argument %d" +msgstr "" -msgid "-O[N]\t\tLike -o but split vertically" -msgstr "-O[N]\t\tSom -o men dela vertikalt" +#: ../errors.h:3152 +#, fuzzy, c-format +msgid "E1226: List or Blob required for argument %d" +msgstr "E467: Specialkomplettering kräver ett funktionsargument" -msgid "+\t\t\tStart at end of file" -msgstr "+\t\t\tStarta vid slut av fil" +#: ../errors.h:3154 +#, fuzzy, c-format +msgid "E1227: List or Dictionary required for argument %d" +msgstr "E467: Specialkomplettering kräver ett funktionsargument" -msgid "+\t\tStart at line " -msgstr "+\t\tStarta på rad " +#: ../errors.h:3156 +#, c-format +msgid "E1228: List, Dictionary or Blob required for argument %d" +msgstr "" -msgid "--cmd \tExecute before loading any vimrc file" -msgstr "--cmd \tKör före inläsning av någon vimrc fil" +#: ../errors.h:3158 +#, c-format +msgid "E1229: Expected dictionary for using key \"%s\", but got %s" +msgstr "" + +#: ../errors.h:3162 +msgid "E1230: Encryption: sodium_mlock() failed" +msgstr "" + +#: ../errors.h:3165 +#, c-format +msgid "E1231: Cannot use a bar to separate commands here: %s" +msgstr "" -msgid "-c \t\tExecute after loading the first file" -msgstr "-c \tKör efter inläsning av den första filen" +#: ../errors.h:3168 +#, fuzzy +msgid "E1232: Argument of exists_compiled() must be a literal string" +msgstr "E712: Argument av %s måste vara en Lista eller Tabell" -msgid "-S \t\tSource file after loading the first file" -msgstr "-S \t\tKör fil efter inläsning av den första filen" +#: ../errors.h:3170 +#, fuzzy +msgid "E1233: exists_compiled() can only be used in a :def function" +msgstr "E785: complete() kan bara användas i infogningsläge" -msgid "-s \tRead Normal mode commands from file " -msgstr "-s \tLäs Normallägeskommandon från fil " +#: ../errors.h:3173 +msgid "E1234: legacy must be followed by a command" +msgstr "" -msgid "-w \tAppend all typed commands to file " -msgstr "-w \tLägg till alla skrivna kommandon till fil " +#: ../errors.h:3177 +#, c-format +msgid "E1236: Cannot use %s itself, it is imported" +msgstr "" -msgid "-W \tWrite all typed commands to file " -msgstr "-W \tSkriv alla skrivna kommandon till fil " +#: ../errors.h:3180 +#, fuzzy, c-format +msgid "E1237: No such user-defined command in current buffer: %s" +msgstr "E184: Inget sådant användardefinierat kommando: %s" -msgid "-x\t\t\tEdit encrypted files" -msgstr "-x\t\t\tRedigera krypterade filer" +#: ../errors.h:3183 +#, fuzzy, c-format +msgid "E1238: Blob required for argument %d" +msgstr "E466: :winpos kräver två sifferargument" -msgid "-display \tConnect Vim to this particular X-server" -msgstr "-display \tAnslut Vim till just denna X-server" +#: ../errors.h:3185 +#, fuzzy, c-format +msgid "E1239: Invalid value for blob: %d" +msgstr "E178: Ogiltigt standardvärde för antal" -msgid "-X\t\t\tDo not connect to X server" -msgstr "-X\t\t\tAnslut inte till X server" +#: ../errors.h:3188 +#, fuzzy +msgid "E1240: Resulting text too long" +msgstr "E340: Rad börjar bli för lång" -msgid "--remote \tEdit in a Vim server if possible" -msgstr "--remote \tRedigera i en Vim-server om möjligt" +#: ../errors.h:3191 +#, fuzzy, c-format +msgid "E1241: Separator not supported: %s" +msgstr "E519: Flagga stöds inte" -msgid "--remote-silent Same, don't complain if there is no server" +#: ../errors.h:3193 +#, c-format +msgid "E1242: No white space allowed before separator: %s" msgstr "" -"--remote-silent \tSamma, klaga inte om det inte finns någon server" -msgid "" -"--remote-wait As --remote but wait for files to have been edited" +#: ../errors.h:3197 +msgid "E1243: ASCII code not in 32-127 range" msgstr "" -"--remote-wait \tSom --remote men vänta på att filer har blivit " -"redigerade" -msgid "" -"--remote-wait-silent Same, don't complain if there is no server" +#: ../errors.h:3202 +#, fuzzy, c-format +msgid "E1244: Bad color string: %s" +msgstr "E383: Ogiltig söksträng: %s" + +#: ../errors.h:3205 +msgid "E1245: Cannot expand in a Vim9 function" msgstr "" -"--remote-wait-silent \tSamma, klaga inte om det inte finns någon " -"server" -msgid "--remote-tab As --remote but open tab page for each file" -msgstr "--remote-tab Som --remote men öppna flik för varje fil" +#: ../errors.h:3207 +#, fuzzy, c-format +msgid "E1246: Cannot find variable to (un)lock: %s" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "--remote-send \tSend to a Vim server and exit" -msgstr "" -"--remote-send \tSkicka till en Vim-server och avsluta" +#: ../errors.h:3210 +#, fuzzy +msgid "E1247: Line number out of range" +msgstr "radnummer utanför område" -msgid "--remote-expr \tEvaluate in a Vim server and print result" +#: ../errors.h:3213 +msgid "E1248: Closure called from invalid context" msgstr "" -"--remote-expr \tEvaluera i en Vim-server och skriv ut " -"resultatet" -msgid "--serverlist\t\tList available Vim server names and exit" -msgstr "--serverlist\t\tLista tillgängliga Vim-servernamn och avsluta" +# TODO: Capitalise first word of message? +#: ../errors.h:3216 +#, fuzzy +msgid "E1249: Highlight group name too long" +msgstr "E411: framhävningsgrupp hittades inte: %s" -msgid "--servername \tSend to/become the Vim server " -msgstr "--servername \tSkicka till/för att bli Vim-servern " +#: ../errors.h:3219 +#, fuzzy, c-format +msgid "E1250: Argument of %s must be a List, String, Dictionary or Blob" +msgstr "E712: Argument av %s måste vara en Lista eller Tabell" -msgid "-i \t\tUse instead of .viminfo" -msgstr "-i \t\tAnvänd istället för .viminfo" +#: ../errors.h:3221 +#, c-format +msgid "E1251: List, Dictionary, Blob or String required for argument %d" +msgstr "" -msgid "-h or --help\tPrint Help (this message) and exit" -msgstr "-h eller --help\tSkriv ut Hjälp (det här meddelandet) och avsluta" +#: ../errors.h:3223 +#, c-format +msgid "E1252: String, List or Blob required for argument %d" +msgstr "" -msgid "--version\t\tPrint version information and exit" -msgstr "--version\t\tSkriv ut versionsinformation och avsluta" +#: ../errors.h:3226 +#, fuzzy +msgid "E1254: Cannot use script variable in for loop" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "" -"\n" -"Arguments recognised by gvim (Motif version):\n" +#: ../errors.h:3229 +msgid "E1255: mapping must end with " msgstr "" -"\n" -"Argument som stöds av gvim (Motif-version):\n" -msgid "" -"\n" -"Arguments recognised by gvim (neXtaw version):\n" +#: ../errors.h:3232 +#, fuzzy, c-format +msgid "E1256: String or function required for argument %d" +msgstr "E467: Specialkomplettering kräver ett funktionsargument" + +#: ../errors.h:3234 +#, c-format +msgid "E1257: Imported script must use \"as\" or end in .vim: %s" msgstr "" -"\n" -"Argument som stöds av gvim (neXtaw-version):\n" -msgid "" -"\n" -"Arguments recognised by gvim (Athena version):\n" +#: ../errors.h:3236 +#, fuzzy, c-format +msgid "E1258: No '.' after imported name: %s" +msgstr "E252: Typsnittsuppsättningsnamn: %s" + +#: ../errors.h:3238 +#, fuzzy, c-format +msgid "E1259: Missing name after imported name: %s" +msgstr "E526: Saknar nummer efter <%s>" + +#: ../errors.h:3240 +#, fuzzy, c-format +msgid "E1260: Cannot unlet an imported item: %s" +msgstr "E197: Kan inte sätta språk till \"%s\"" + +#: ../errors.h:3242 +msgid "E1261: Cannot import .vim without using \"as\"" msgstr "" -"\n" -"Argument som stöds av gvim (Athena-version):\n" -msgid "-display \tRun Vim on " -msgstr "-display \tKör Vim på " +# TODO: Capitalise first word of message? +#: ../errors.h:3244 +#, fuzzy, c-format +msgid "E1262: Cannot import the same script twice: %s" +msgstr "E625: kan inte öppna cscope-databas: %s" -msgid "-iconic\t\tStart Vim iconified" -msgstr "-iconic\t\tStarta Vim som ikon" +#: ../errors.h:3246 +msgid "E1263: Cannot use name with # in Vim9 script, use export instead" +msgstr "" -msgid "-name \t\tUse resource as if vim was " -msgstr "-name \t\tAnvänd resurs som om vim var " +#: ../errors.h:3248 +#, c-format +msgid "E1264: Autoload import cannot use absolute or relative path: %s" +msgstr "" -msgid "\t\t\t (Unimplemented)\n" -msgstr "\t\t\t (Oimplementerat)\n" +#: ../errors.h:3250 +#, fuzzy +msgid "E1265: Cannot use a partial here" +msgstr "E165: Kan inte gå bortom sista filen" -msgid "-background \tUse for the background (also: -bg)" -msgstr "-background \tAnvänd för bakgrunden (även: -bg)" +#: ../errors.h:3254 +msgid "" +"E1266: Critical error in python3 initialization, check your python3 " +"installation" +msgstr "" -msgid "-foreground \tUse for normal text (also: -fg)" -msgstr "-foreground \tAnvänd för vanlig text (även: -fg)" +#: ../errors.h:3258 +#, fuzzy, c-format +msgid "E1267: Function name must start with a capital: %s" +msgstr "E704: Variabelnamn för Funcref måste börja med en versal: %s" -msgid "-font \t\tUse for normal text (also: -fn)" -msgstr "-font \t\tAnvänd för vanlig text (även: -fn)" +#: ../errors.h:3260 +#, c-format +msgid "E1268: Cannot use s: in Vim9 script: %s" +msgstr "" -msgid "-boldfont \tUse for bold text" -msgstr "­boldfont \tAnvänd för fet text" +#: ../errors.h:3262 +#, fuzzy, c-format +msgid "E1269: Cannot create a Vim9 script variable in a function: %s" +msgstr "E794: Kan inte sätta variabel i sandlådan: \"%s\"" -msgid "-italicfont \tUse for italic text" -msgstr "-italicfont \tAnvänd för kursiv text" +#: ../errors.h:3265 +msgid "E1270: Cannot use :s\\/sub/ in Vim9 script" +msgstr "" -msgid "-geometry \tUse for initial geometry (also: -geom)" +#: ../errors.h:3268 +#, c-format +msgid "E1271: Compiling closure without context: %s" msgstr "" -"-geometry \tAnvänd för inledande fönsterplacering (även: -geom)" -msgid "-borderwidth \tUse a border width of (also: -bw)" -msgstr "-borderwidth \tAnvänd en rambredd med (även: -bw)" +#: ../errors.h:3270 +#, fuzzy, c-format +msgid "E1272: Using type not in a script context: %s" +msgstr "E120: Använder inte i ett skriptsammanhang: %s" -msgid "-scrollbarwidth Use a scrollbar width of (also: -sw)" +#: ../errors.h:3273 +#, c-format +msgid "E1273: (NFA regexp) missing value in '\\%%%c'" msgstr "" -"-scrollbarwidth Använd en rullningslistbredd på (även: -sw)" -msgid "-menuheight \tUse a menu bar height of (also: -mh)" -msgstr "-menuheight \tAnvänd en menyradshöjd med (även: -mh)" +# TODO: Capitalise first word of message? +#: ../errors.h:3275 +#, fuzzy +msgid "E1274: No script file name to substitute for \"