diff options
Diffstat (limited to 'runtime')
28 files changed, 1891 insertions, 1058 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index acd0f5caa..cd6604102 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 8.2. Last change: 2022 Apr 25 +*builtin.txt* For Vim version 8.2. Last change: 2022 May 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2425,7 +2425,7 @@ feedkeys({string} [, {mode}]) *feedkeys()* all typeahead will be consumed by the last call. 'c' Remove any script context when executing, so that legacy script syntax applies, "s:var" does not work, - etc. Note that if the keys being using set a script + etc. Note that if the string being fed sets a script context this still applies. '!' When used with 'x' will not end Insert mode. Can be used in a test when a timer is set to exit Insert mode diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index ff6995d00..d3e0a9ca1 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 8.2. Last change: 2022 Mar 05 +*change.txt* For Vim version 8.2. Last change: 2022 May 07 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index 8b491345a..b2928a5e8 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 8.2. Last change: 2022 Apr 09 +*cmdline.txt* For Vim version 8.2. Last change: 2022 Apr 29 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 39208e48d..ac6102361 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.2. Last change: 2022 Apr 17 +*eval.txt* For Vim version 8.2. Last change: 2022 May 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -523,8 +523,8 @@ only appear once. Examples: > A key is always a String. You can use a Number, it will be converted to a String automatically. Thus the String '4' and the number 4 will find the same entry. Note that the String '04' and the Number 04 are different, since the -Number will be converted to the String '4'. The empty string can also be used -as a key. +Number will be converted to the String '4', leading zeros are dropped. The +empty string can also be used as a key. In |Vim9| script literaly keys can be used if the key consists of alphanumeric characters, underscore and dash, see |vim9-literal-dict|. @@ -534,7 +534,8 @@ legacy script. This does require the key to consist only of ASCII letters, digits, '-' and '_'. Example: > :let mydict = #{zero: 0, one_key: 1, two-key: 2, 333: 3} Note that 333 here is the string "333". Empty keys are not possible with #{}. -In |Vim9| script the #{} form cannot be used. +In |Vim9| script the #{} form cannot be used because it can be confused with +the start of a comment. A value can be any expression. Using a Dictionary for a value creates a nested Dictionary: > @@ -3252,20 +3253,20 @@ text... {endmarker}. If "eval" is not specified, then each line of text is - used as a |literal-string|. If "eval" is specified, - then any Vim expression in the form ``={expr}`` is - evaluated and the result replaces the expression. + used as a |literal-string|, except that single quotes + doe not need to be doubled. + If "eval" is specified, then any Vim expression in the + form {expr} is evaluated and the result replaces the + expression, like with |interp-string|. Example where $HOME is expanded: > let lines =<< trim eval END some text - See the file `=$HOME`/.vimrc + See the file {$HOME}/.vimrc more text END < There can be multiple Vim expressions in a single line but an expression cannot span multiple lines. If any expression evaluation fails, then the assignment fails. - once the "`=" has been found {expr} and a backtick - must follow. {expr} cannot be empty. {endmarker} must not contain white space. {endmarker} cannot start with a lower case character. @@ -3318,10 +3319,10 @@ text... DATA let code =<< trim eval CODE - let v = `=10 + 20` - let h = "`=$HOME`" - let s = "`=Str1()` abc `=Str2()`" - let n = `=MyFunc(3, 4)` + let v = {10 + 20} + let h = "{$HOME}" + let s = "{Str1()} abc {Str2()}" + let n = {MyFunc(3, 4)} CODE < *E121* diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 124cfee5e..866823341 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 8.2. Last change: 2022 Apr 13 +*options.txt* For Vim version 8.2. Last change: 2022 May 07 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index f8b5cacef..09549b50b 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 8.2. Last change: 2022 Apr 06 +*quickref.txt* For Vim version 8.2. Last change: 2022 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1350,7 +1350,7 @@ Context-sensitive completion on the command-line: |CTRL-W_^| CTRL-W ^ split window and edit alternate file |CTRL-W_n| CTRL-W n or :new create new empty window |CTRL-W_q| CTRL-W q or :q[uit] quit editing and close window -|CTRL-W_c| CTRL-W c or :cl[ose] make buffer hidden and close window +|CTRL-W_c| CTRL-W c or :clo[se] make buffer hidden and close window |CTRL-W_o| CTRL-W o or :on[ly] make current window only one on the screen diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt index 012619515..8035d3cfd 100644 --- a/runtime/doc/scroll.txt +++ b/runtime/doc/scroll.txt @@ -1,4 +1,4 @@ -*scroll.txt* For Vim version 8.2. Last change: 2022 Apr 03 +*scroll.txt* For Vim version 8.2. Last change: 2022 May 07 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index e0919b84f..9e9a0f166 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 8.2. Last change: 2022 Apr 24 +*syntax.txt* For Vim version 8.2. Last change: 2022 May 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5238,6 +5238,9 @@ These are the default highlighting groups. These groups are used by the 'highlight' option default. Note that the highlighting depends on the value of 'background'. You can see the current settings with the ":highlight" command. +When possible the name is highlighted in the used colors. If this makes it +unreadable use Visual selection. + *hl-ColorColumn* ColorColumn used for the columns set with 'colorcolumn' *hl-Conceal* @@ -5329,6 +5332,8 @@ Search Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out. *hl-CurSearch* CurSearch Current match for the last search pattern (see 'hlsearch'). + Note: this is correct after a search, but may get outdated if + changes are made or the screen is redrawn. *hl-SpecialKey* SpecialKey Meta and special keys listed with ":map", also for text used to show unprintable characters in the text, 'listchars'. diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 1a84eb425..5bf28e250 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 8.2. Last change: 2022 Apr 27 +*todo.txt* For Vim version 8.2. Last change: 2022 May 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41,7 +41,6 @@ browser use: https://github.com/vim/vim/issues/1234 Once Vim9 is stable: - Use Vim9 for more runtime files. - Check code coverage, add more tests if needed. - vim9execute.c line 3500 vim9expr.c vim9instr.c vim9script.c @@ -128,6 +127,9 @@ Text properties: - Popup attached to text property stays visible when text is deleted with "cc". (#7737) "C" works OK. "dd" also files in a buffer with a single line. +- Add text property that shifts text to make room for annotation (e.g. + variable type). Like the opposite of conceal. Requires fixing the cursor + positioning and mouse clicks as with conceal mode. - Auto-indenting may cause highlighting to shift. (#7719) - "cc" does not call inserted_bytes(). (Axel Forsman, #5763) - Combining text property with 'cursorline' does not always work (Billie @@ -152,6 +154,7 @@ Terminal debugger: - Make prompt-buffer variant work better. - Add option to not open the program window. It's not used when attaching to an already running program. (M. Kelly) +- Use the optional token on requests, match the result with it. #10300 - When only gdb window exists, on "quit" edit another buffer. - Termdebug does not work when Vim was built with mzscheme: gdb hangs just after "run". Everything else works, including communication channel. Not @@ -203,7 +206,11 @@ Terminal emulator window: - When 'encoding' is not utf-8, or the job is using another encoding, setup conversions. +String interpolation: Handle backslash and quotes in the expression normally, +do not require escaping. + Add autocmd functions. PR #10291 + a couple of outstanding comments, wait for Yegappan to respond Can deref_func_name() and deref_function_name() be merged? @@ -223,9 +230,6 @@ pass it on with modifications. Test_communicate_ipv6(): is flaky on many systems Fails in line 64 of Ch_communicate, no exception is thrown. -Patch for Template string: #4634 -Have another look at the implementation. - Rename getdigraphlist -> digraph_getlist() etc. Can "CSI nr X" be used instead of outputting spaces? Is it faster? #8002 @@ -328,6 +332,8 @@ Missing filetype test for bashrc, PKGBUILD, etc. Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co changes. +Add ??= operator, "a ??= b" works like "a = a ?? b". #10343 + Add an option to start_timer() to return from the input loop with K_IGNORE. This is useful e.g. when a popup was created that disables mappings, we need to return from vgetc() to make this happen. #7011 diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index adf03537b..187712904 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 8.2. Last change: 2022 Apr 14 +*vim9.txt* For Vim version 8.2. Last change: 2022 Apr 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -857,10 +857,16 @@ like in JavaScript: > var dict = {["key" .. nr]: value} The key type can be string, number, bool or float. Other types result in an -error. A number can be given with and without the []: > - var dict = {123: 'without', [456]: 'with'} +error. Without using [] the value is used as a string, keeping leading zeros. +An expression given with [] is evaluated and then converted to a string. +Leading zeros will then be dropped: > + var dict = {000123: 'without', [000456]: 'with'} echo dict - {'456': 'with', '123': 'without'} + {'456': 'with', '000123': 'without'} +A float only works inside [] because the dot is not accepted otherwise: > + var dict = {[00.013]: 'float'} + echo dict + {'0.013': 'float'} No :xit, :t, :k, :append, :change or :insert ~ diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt index e9862b1b2..d703d986c 100644 --- a/runtime/doc/visual.txt +++ b/runtime/doc/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 8.2. Last change: 2022 Jan 20 +*visual.txt* For Vim version 8.2. Last change: 2022 May 06 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/ftplugin/wget.vim b/runtime/ftplugin/wget.vim new file mode 100644 index 000000000..7a1022182 --- /dev/null +++ b/runtime/ftplugin/wget.vim @@ -0,0 +1,29 @@ +" Vim filetype plugin file +" Language: Wget configuration file (/etc/wgetrc ~/.wgetrc) +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Last Change: 2022 Apr 28 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=:#,:// +setlocal commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let b:undo_ftplugin = "setl fo< com< cms<" + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Wget Configuration File (wgetrc, .wgetrc)\twgetrc;.wgetrc\n" . + \ "All Files (*.*)\t*.*\n" + let b:undo_ftplugin ..= " | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 diff --git a/runtime/ftplugin/wget2.vim b/runtime/ftplugin/wget2.vim new file mode 100644 index 000000000..a6845f6df --- /dev/null +++ b/runtime/ftplugin/wget2.vim @@ -0,0 +1,29 @@ +" Vim filetype plugin file +" Language: Wget2 configuration file (/etc/wget2rc ~/.wget2rc) +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Last Change: 2022 Apr 28 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=:#,:// +setlocal commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let b:undo_ftplugin = "setl fo< com< cms<" + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Wget2 Configuration File (wget2rc, .wget2rc)\twget2rc;.wget2rc\n" . + \ "All Files (*.*)\t*.*\n" + let b:undo_ftplugin ..= " | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop index 3c5ff1ce4..d25a04fbe 100644 --- a/runtime/gvim.desktop +++ b/runtime/gvim.desktop @@ -12,6 +12,7 @@ Name[it]=GVim Name[ru]=GVim Name[sr]=GVim Name[tr]=GVim +Name[uk]=GVim Name=GVim # Translators: This is the Generic Application Name used in the Vim desktop file GenericName[ca]=Editor de text @@ -25,6 +26,7 @@ GenericName[ja]=テキストエディタ GenericName[ru]=Текстовый редактор GenericName[sr]=Едитор текст GenericName[tr]=Metin Düzenleyici +GenericName[uk]=Редактор Тексту GenericName=Text Editor # Translators: This is the comment used in the Vim desktop file Comment[ca]=Edita fitxers de text @@ -38,6 +40,7 @@ Comment[ja]=テキストファイルを編集します Comment[ru]=Редактирование текстовых файлов Comment[sr]=Уређујте текст фајлове Comment[tr]=Metin dosyaları düzenleyin +Comment[uk]=Редагувати текстові файли Comment=Edit text files # The translations should come from the po file. Leave them here for now, they will # be overwritten by the po file when generating the desktop.file! @@ -97,9 +100,8 @@ Comment[sv]=Redigera textfiler Comment[ta]=உரை கோப்புகளை தொகுக்கவும் Comment[th]=แก้ไขแฟ้มข้อความ Comment[tk]=Metin faýllary editle -Comment[uk]=Редактор текстових файлів Comment[vi]=Soạn thảo tập tin văn bản -Comment[wa]=Asspougnî des fitchîs tecses +Comment[wa]=Asspougnî des fitcs tecses Comment[zh_CN]=编辑文本文件 Comment[zh_TW]=編輯文字檔 TryExec=gvim @@ -118,6 +120,7 @@ Keywords[ja]=テキスト;エディタ; Keywords[ru]=текст;текстовый редактор; Keywords[sr]=Текст;едитор; Keywords[tr]=Metin;düzenleyici; +Keywords[uk]=текст;редактор; Keywords=Text;editor; # Translators: This is the Icon file name. Do NOT translate Icon=gvim diff --git a/runtime/indent/testdir/yaml.in b/runtime/indent/testdir/yaml.in index 32ddc6095..bf99668da 100644 --- a/runtime/indent/testdir/yaml.in +++ b/runtime/indent/testdir/yaml.in @@ -14,11 +14,6 @@ map: val # END_INDENT # START_INDENT -map: multiline -value -# END_INDENT - -# START_INDENT map: | line1 line2 diff --git a/runtime/indent/testdir/yaml.ok b/runtime/indent/testdir/yaml.ok index becdb1bae..8b38633e7 100644 --- a/runtime/indent/testdir/yaml.ok +++ b/runtime/indent/testdir/yaml.ok @@ -14,11 +14,6 @@ map: val # END_INDENT # START_INDENT -map: multiline - value -# END_INDENT - -# START_INDENT map: | line1 line2 diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim index ed57e68d8..1f798416e 100644 --- a/runtime/indent/yaml.vim +++ b/runtime/indent/yaml.vim @@ -2,7 +2,7 @@ " Language: YAML " Maintainer: Nikolai Pavlov <zyx.vim@gmail.com> " Last Update: Lukas Reineke -" Last Change: 2021 Aug 13 +" Last Change: 2022 May 02 " Only load this indent file when no other was loaded. if exists('b:did_indent') @@ -54,7 +54,7 @@ let s:c_ns_anchor_name = s:c_ns_anchor_char.'+' let s:c_ns_anchor_property = '\v\&'.s:c_ns_anchor_name let s:ns_word_char = '\v[[:alnum:]_\-]' -let s:ns_tag_char = '\v%('.s:ns_word_char.'|[#/;?:@&=+$.~*''()])' +let s:ns_tag_char = '\v%(%\x\x|'.s:ns_word_char.'|[#/;?:@&=+$.~*''()])' let s:c_named_tag_handle = '\v\!'.s:ns_word_char.'+\!' let s:c_secondary_tag_handle = '\v\!\!' let s:c_primary_tag_handle = '\v\!' @@ -63,7 +63,7 @@ let s:c_tag_handle = '\v%('.s:c_named_tag_handle. \ '|'.s:c_primary_tag_handle.')' let s:c_ns_shorthand_tag = '\v'.s:c_tag_handle . s:ns_tag_char.'+' let s:c_non_specific_tag = '\v\!' -let s:ns_uri_char = '\v%('.s:ns_word_char.'\v|[#/;?:@&=+$,.!~*''()[\]])' +let s:ns_uri_char = '\v%(%\x\x|'.s:ns_word_char.'\v|[#/;?:@&=+$,.!~*''()[\]])' let s:c_verbatim_tag = '\v\!\<'.s:ns_uri_char.'+\>' let s:c_ns_tag_property = '\v'.s:c_verbatim_tag. \ '\v|'.s:c_ns_shorthand_tag. diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim index 63d25db52..9f84e6dfb 100644 --- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -2,7 +2,7 @@ " " Author: Bram Moolenaar " Copyright: Vim license applies, see ":help license" -" Last Change: 2022 Apr 16 +" Last Change: 2022 May 04 " " WORK IN PROGRESS - The basics works stable, more to come " Note: In general you need at least GDB 7.12 because this provides the @@ -915,7 +915,7 @@ func s:DeleteCommands() if empty(s:k_map_saved) nunmap K else - call mapset('n', 0, s:k_map_saved) + call mapset(s:k_map_saved) endif unlet s:k_map_saved endif diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim index 251696780..f5a50bfac 100644 --- a/runtime/syntax/help.vim +++ b/runtime/syntax/help.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Vim help file " Maintainer: Bram Moolenaar (Bram@vim.org) -" Last Change: 2021 Jun 13 +" Last Change: 2022 May 01 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -215,6 +215,12 @@ hi def link helpError Error hi def link helpTodo Todo hi def link helpURL String +if expand('%:p') == $VIMRUNTIME .. '/doc/syntax.txt' + " highlight groups with their respective color + import 'dist/vimhelp.vim' + call vimhelp.HighlightGroups() +endif + let b:current_syntax = "help" let &cpo = s:cpo_save diff --git a/runtime/syntax/i3config.vim b/runtime/syntax/i3config.vim index a2f50e50b..6163da29e 100644 --- a/runtime/syntax/i3config.vim +++ b/runtime/syntax/i3config.vim @@ -3,7 +3,7 @@ " Original Author: Mohamed Boughaba <mohamed dot bgb at gmail dot com> " Maintainer: Quentin Hibon (github user hiqua) " Version: 0.4 -" Last Change: 2022 Jan 15 +" Last Change: 2022 May 05 " References: " http://i3wm.org/docs/userguide.html#configuring @@ -50,6 +50,10 @@ syn match i3ConfigVariable /\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?/ contains=i3Confi syn keyword i3ConfigInitializeKeyword set contained syn match i3ConfigInitialize /^\s*set\s\+.*$/ contains=i3ConfigVariable,i3ConfigInitializeKeyword,i3ConfigColor,i3ConfigString +" Include +syn keyword i3ConfigIncludeKeyword include contained +syn match i3ConfigInclude /^\s*include\s\+.*$/ contains=i3ConfigIncludeKeyword,i3ConfigString,i3ConfigVariable + " Gaps syn keyword i3ConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained syn match i3ConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=i3ConfigGapStyleKeyword,i3ConfigNumber,i3ConfigVariable @@ -221,6 +225,7 @@ hi def link i3ConfigAssignSpecial Special hi def link i3ConfigFontNamespace PreProc hi def link i3ConfigBindArgument PreProc hi def link i3ConfigNoStartupId PreProc +hi def link i3ConfigIncludeKeyword Identifier hi def link i3ConfigFontKeyword Identifier hi def link i3ConfigBindKeyword Identifier hi def link i3ConfigOrientation Identifier diff --git a/runtime/syntax/plsql.vim b/runtime/syntax/plsql.vim index 0ac53d03f..7b36c0a18 100644 --- a/runtime/syntax/plsql.vim +++ b/runtime/syntax/plsql.vim @@ -4,7 +4,7 @@ " Previous Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com) " Previous Maintainer: C. Laurence Gonsalves (clgonsal@kami.com) " URL: https://github.com/lee-lindley/vim_plsql_syntax -" Last Change: April 25, 2022 +" Last Change: April 28, 2022 " History Lee Lindley (lee dot lindley at gmail dot com) " updated to 19c keywords. refined quoting. " separated reserved, non-reserved keywords and functions @@ -23,9 +23,6 @@ " To enable folding (It does setlocal foldmethod=syntax) " let plsql_fold = 1 " -" If you want to try procedure folding, it has issues -" let plsql_procedure_fold = 1 -" " From my vimrc file -- turn syntax and syntax folding on, " associate file suffixes as plsql, open all the folds on file open " let plsql_fold = 1 @@ -67,23 +64,23 @@ syn match plsqlSymbol "[;,.()]" " Operators. and words that would be something else if not in operator mode syn match plsqlOperator "[-+*/=<>@"]" -syn match plsqlOperator "\%\(\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\*\*\|!=\|\~=\)" -syn match plsqlOperator "\<\%\(NOT\|AND\|OR\|LIKE\|BETWEEN\|IN\)\>" +syn match plsqlOperator "\(\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\*\*\|!=\|\~=\)" +syn match plsqlOperator "\<\(NOT\|AND\|OR\|LIKE\|BETWEEN\|IN\)\>" syn match plsqlBooleanLiteral "\<NULL\>" -syn match plsqlOperator "\<IS\\_s\+\%\(NOT\_s\+\)\?NULL\>" +syn match plsqlOperator "\<IS\\_s\+\(NOT\_s\+\)\?NULL\>" " " conditional compilation Preprocessor directives and sqlplus define sigil syn match plsqlPseudo "$[$a-z][a-z0-9$_#]*" syn match plsqlPseudo "&" -syn match plsqlReserved "\<\%\(CREATE\|THEN\|UPDATE\|INSERT\|SET\)\>" -syn match plsqlKeyword "\<\%\(REPLACE\|PACKAGE\|FUNCTION\|PROCEDURE\|TYPE|BODY\|WHEN\|MATCHED\)\>" +syn match plsqlReserved "\<\(CREATE\|THEN\|UPDATE\|INSERT\|SET\)\>" +syn match plsqlKeyword "\<\(REPLACE\|PACKAGE\|FUNCTION\|PROCEDURE\|TYPE|BODY\|WHEN\|MATCHED\)\>" syn region plsqlUpdate \ matchgroup=plsqlReserved \ start="\<UPDATE\>" \ end="\<SET\>" \ contains=@plsqlIdentifiers -syn match plsqlReserved "\<WHEN\_s\+\%\(NOT\_s\+\)\?MATCHED\_s\+THEN\_s\+\%\(UPDATE\|INSERT\)\%\(\_s\+SET\)\?" +syn match plsqlReserved "\<WHEN\_s\+\(NOT\_s\+\)\?MATCHED\_s\+THEN\_s\+\(UPDATE\|INSERT\)\(\_s\+SET\)\?" " " Oracle's non-reserved keywords @@ -463,7 +460,9 @@ syn keyword plsqlReserved OCIDURATION OCIINTERVAL OCILOBLOCATOR OCINUMBER OCIRAW syn keyword plsqlReserved OCIROWID OCISTRING OCITYPE OF ON OPTION ORACLE ORADATA ORDER ORLANY ORLVARY syn keyword plsqlReserved OUT OVERRIDING PARALLEL_ENABLE PARAMETER PASCAL PCTFREE PIPE PIPELINED POLYMORPHIC syn keyword plsqlReserved PRAGMA PRIOR PUBLIC RAISE RECORD RELIES_ON REM RENAME RESOURCE RESULT REVOKE ROWID -syn keyword plsqlReserved SB1 SB2 SELECT SEPARATE SHARE SHORT SIZE SIZE_T SPARSE SQLCODE SQLDATA +syn keyword plsqlReserved SB1 SB2 +syn match plsqlReserved "\<SELECT\>" +syn keyword plsqlReserved SEPARATE SHARE SHORT SIZE SIZE_T SPARSE SQLCODE SQLDATA syn keyword plsqlReserved SQLNAME SQLSTATE STANDARD START STORED STRUCT STYLE SYNONYM TABLE TDO syn keyword plsqlReserved TRANSACTIONAL TRIGGER UB1 UB4 UNION UNIQUE UNSIGNED UNTRUSTED VALIST syn keyword plsqlReserved VALUES VARIABLE VIEW VOID WHERE WITH @@ -517,28 +516,30 @@ syn match plsqlFunction "\.PREV\>"hs=s+1 syn match plsqlFunction "\.NEXT\>"hs=s+1 if exists("plsql_legacy_sql_keywords") -" Some of Oracle's SQL keywords. -syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY -syn keyword plsqlSQLKeyword ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE -syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER -syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT -syn keyword plsqlSQLKeyword CONSTRAINT CRASH CURRENT DATA DATABASE -syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT -syn keyword plsqlSQLKeyword DROP DUAL EXCLUSIVE EXISTS EXTENDS EXTRACT -syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP -syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING -syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD -syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE ISOLATION KEY LIBRARY -syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET -syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE -syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION ORDER ORGANIZATION -syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC -syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK -syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA SELECT SEPARATE SESSION SET -syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM -syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT -syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE -syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH + " Some of Oracle's SQL keywords. + syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY + syn keyword plsqlSQLKeyword ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE + syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER + syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT + syn keyword plsqlSQLKeyword CONSTRAINT CRASH CURRENT DATA DATABASE + syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT + syn keyword plsqlSQLKeyword DROP DUAL EXCLUSIVE EXISTS EXTENDS EXTRACT + syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP + syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING + syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD + syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE ISOLATION KEY LIBRARY + syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET + syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE + syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION ORDER ORGANIZATION + syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC + syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK + syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA + syn match plsqlSQLKeyword "\<SELECT\>" + syn keyword plsqlSQLKeyword SEPARATE SESSION SET + syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM + syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT + syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE + syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH endif @@ -565,17 +566,16 @@ syn keyword plsqlException TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR syn keyword plsqlException ZERO_DIVIDE if exists("plsql_highlight_triggers") - syn keyword plsqlTrigger INSERTING UPDATING DELETING + syn keyword plsqlTrigger INSERTING UPDATING DELETING endif -" so can not contain it for folding +" so can not contain it for folding. May no longer be necessary and can change them to plsqlKeyword syn match plsqlBEGIN "\<BEGIN\>" syn match plsqlEND "\<END\>" -syn match plsqlISAS "\<\%\(IS\|AS\)\>" - +syn match plsqlISAS "\<\(IS\|AS\)\>" " Various types of comments. - syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend extend contains=@plsqlCommentGroup,plsqlSpaceError +syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend extend contains=@plsqlCommentGroup,plsqlSpaceError if exists("plsql_fold") syntax region plsqlComment \ start="/\*" end="\*/" @@ -599,11 +599,12 @@ syn match plsqlStringError "'.*$" " Various types of literals. " the + and - get sucked up as operators. Not sure how to take precedence here. Something to do with word boundaries. " most other syntax files do not try to includ +/- in the number token, so leave them as unary operators +" even though the oracle documentation counts the sign as part of the numeric literal syn match plsqlNumbers transparent "\<\d\|\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral syn match plsqlNumbersCom contained transparent "\<\d\|\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral syn match plsqlIntLiteral contained "\d\+" -syn match plsqlFloatLiteral contained "\d\+\.\%\(\d\+\%\([eE][+-]\?\d\+\)\?\)\?" -syn match plsqlFloatLiteral contained "\.\%\(\d\+\%\([eE][+-]\?\d\+\)\?\)" +syn match plsqlFloatLiteral contained "\d\+\.\(\d\+\([eE][+-]\?\d\+\)\?\)\?[fd]\?" +syn match plsqlFloatLiteral contained "\.\(\d\+\([eE][+-]\?\d\+\)\?\)[fd]\?" " double quoted strings in SQL are database object names. Should be a subgroup of Normal. " We will use Character group as a proxy for that so color can be chosen close to Normal @@ -639,146 +640,82 @@ syn match plsqlAttribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTF syn cluster plsqlParenGroup contains=plsqlParenError,@plsqlCommentGroup,plsqlCommentSkip,plsqlIntLiteral,plsqlFloatLiteral,plsqlNumbersCom if exists("plsql_bracket_error") - if exists("plsql_fold") - syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket fold keepend extend transparent - else - syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket - endif - syn match plsqlParenError "[\])]" - syn match plsqlErrInParen contained "[{}]" - syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen - syn match plsqlErrInBracket contained "[);{}]" + " I suspect this code was copied from c.vim and never properly considered. Do + " we even use braces or brackets in sql or pl/sql? + if exists("plsql_fold") + syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket fold keepend extend transparent + else + syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket + endif + syn match plsqlParenError "[\])]" + syn match plsqlErrInParen contained "[{}]" + syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen + syn match plsqlErrInBracket contained "[);{}]" else - if exists("plsql_fold") - syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,@plsqlFoldingGroupIgnore,plsqlErrInParen fold keepend extend transparent - else - syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,@plsqlFoldingGroupIgnore,plsqlErrInParen - endif - "syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,@plsqlProcedureGroup,plsqlBlock,plsqlBlockCont,plsqlPackage,plsqlProcedureJava - syn match plsqlParenError ")" - syn match plsqlErrInParen contained "[{}]" + if exists("plsql_fold") + syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen fold keepend extend transparent + else + syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen + endif + syn match plsqlParenError ")" + " should this not be parens isntead of brackets? I never quite followed what this was doing + syn match plsqlErrInParen contained "[{}]" endif syn match plsqlReserved "\<BODY\>" -syn match plsqlReserved "\<CREATE\_s\+\%\(OR\_s\+REPLACE\_s\+\)\?" -" Loops. -syn match plsqlRepeat "\<\%\(FOR\|WHILE\|LOOP\|FORALL\)\>" -syn match plsqlRepeat "\<END\_s\+LOOP\>" -syn match plsqlConditional "\<\%\(ELSIF\|IF\|ELSE\)\>" -"syn match plsqlConditional "\<END\>\_s\+\<IF\>" +syn match plsqlReserved "\<CREATE\_s\+\(OR\_s\+REPLACE\_s\+\)\?" +" Loops +syn match plsqlRepeat "\<\(FOR\|WHILE\|LOOP\|FORALL\)\>" +syn match plsqlRepeat "\<END\_s\+LOOP\>" +" conditionals +syn match plsqlConditional "\<\(ELSIF\|IF\|ELSE\)\>" +syn match plsqlConditional "\<END\>\_s\+\<IF\>" +syn match plsqlCase "\<END\>\_s\+\<CASE\>" syn match plsqlCase "\<CASE\>" -"syn match plsqlCase "\<END\>\s_\+\<CASE\>" if exists("plsql_fold") setlocal foldmethod=syntax syn sync fromstart - syn cluster plsqlFoldingGroupIgnore contains=plsqlProcedureDeclaration - - "syntax match plsqlWhiteSpaceGroup "\_s\+" contained transparent - - - if exists("plsql_procedure_fold") - " this fails when a begin/end block is in a procedure. Unable to figure out why. - Lee + syn cluster plsqlProcedureGroup contains=plsqlProcedure + syn cluster plsqlOnlyGroup contains=@plsqlProcedure,plsqlConditionalBlock,plsqlLoopBlock,plsqlBlock - syntax region plsqlProcedure - "\ start="\(create\(\_s\+or\_s\+replace\)\?\_s\+\)\?\<\(procedure\|function\)\>\_s\+\z([a-z][a-z0-9$_#]*\)" - \ start="\(create\(\_s\+or\_s\+replace\)\?\_s\+\)\?\<\(procedure\|function\)\>\_s\+\z([a-z][a-z0-9$_#]*\)\([^;]\|\n\)\{-}\(\_s\+\<\(is\|as\)\>\)\@=" - \ end="\(\<end\>\(\_s\+\z1\)\?\_s*;\)" + syntax region plsqlUpdateSet + \ start="\(\<update\>\_s\+\(\<set\>\)\@![a-z][a-z0-9$_#]*\_s\+\(\(\<set\>\)\@![a-z][a-z0-9$_#]*\_s\+\)\?\)\|\(\<when\>\_s\+\<matched\>\_s\+\<then\>\_s\+\<update\>\_s\+\)\<set\>" + \ end="\(\_s*\(;\|\<from\>\|\<where\>\|\<when\>\)\)\@=" \ fold - \ extend - \ transparent \ keepend - \ contains=plsqlProcedureDeclaration,plsqlProcedureBlock,@plsqlCommentAll,plsqlKeyword,plsqlReserved,plsqlTypeAttribute,plsqlStorage - - syntax region plsqlProcedureDeclaration + \ extend \ transparent + \ contains=ALLBUT,@plsqlOnlyGroup,plsqlSelect + + syntax region plsqlSelect + \ start="\<select\>" + \ end="\(\_s*\<from\>\)\@=" \ fold - "\ start="\<\(is\|as\)\>\(\(\_.\)\{-}\<begin\>\)\@=" - \ start="\<\(is\|as\)\>" - \ end="\(\_s\+\<begin\>\)\@=" - \ nextgroup=plsqlProcedureBlock - \ contained - \ contains=ALLBUT,plsqlBlockCont,plsqlBlock,plsqlErrInBracket,plsqlPackage,plsqlProcedureDeclaration - ",plsqlProcedureBlock \ keepend - "\ extend -" must have keepend which is weird because it is 0 lenght - " ,plsqlEnd,plsqlISAS - - syntax region plsqlProcedureBlock - \ start="\<begin\>" - "\ skip="\_s\+\<begin\>\_.\{-}\<end\>\_s*;" - \ matchgroup=NONE - \ end="\(\<end\>\(\_s\+\(if\|loop\|case\)\@![a-z][a-z0-9$_#]*\)\?\_s*;\)" - "\ end="\(\<end\>\)\@=" - \ fold - \ contained - \ transparent - \ keepend - "\ extend - \ contains=ALLBUT,plsqlPackage,plsqlProcedure,plsqlProcedureBlock,plsqlProcedureDeclaration,plsqlProcedureJava,plsqlBlock - - "syn cluster plsqlProcedureGroup contains=plsqlProcedure,plsqlProcedureDeclaration,plsqlProcedureBlock - syn cluster plsqlProcedureGroup contains=plsqlProcedure,plsqlProcedureDeclaration,plsqlProcedureBlock - - " for inside packages - syn region plsqlProcedureSpec - \ start="\(procedure\|function\)\(\([^;]\|\n\)\{-}\<\(is\|as\)\>\)\@!" - "\ start="\(procedure\|function\)\(\([^;]\|\n\)\{-}\<\(is\|as\)\>\)\@!\(\_.*;\)\@=" - \ end=";" - \ keepend extend - \ contains=@plsqlIdentifiers,plsqlKeyword,plsqlReserved,@plsqlCommentAll,plsqlParen - \ transparent - - syntax region plsqlBlockCont + \ extend \ transparent - \ start="\<begin\>" - \ end="\<end\>\_s*;" + \ contains=ALLBUT,@plsqlOnlyGroup,plsqlUpdateSet + + " this is brute force and requires you have the procedure/function name in the END + " statement. ALthough Oracle makes it optional, we cannot. If you do not + " have it, then you can fold the BEGIN/END block of the procedure but not + " the specification of it (other than a paren group). You also cannot fold + " BEGIN/END blocks in the procedure body. Local procedures will fold as + " long as the END statement includes the procedure/function name. + " As for why we cannot make it work any other way, I don't know. It is + " something to do with both plsqlBlock and plsqlProcedure both consuming BEGIN and END, + " even if we use a lookahead for one of them. + syntax region plsqlProcedure + "\ start="\(create\(\_s\+or\_s\+replace\)\?\_s\+\)\?\<\(procedure\|function\)\>\_s\+\z([a-z][a-z0-9$_#]*\)" + \ start="\<\(procedure\|function\)\>\_s\+\(\z([a-z][a-z0-9$_#]*\)\)\([^;]\|\n\)\{-}\<\(is\|as\)\>\_.\{-}\(\<end\>\_s\+\2\_s*;\)\@=" + \ end="\<end\>\_s\+\z1\_s*;" \ fold + \ keepend \ extend - \ contained - \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava,plsqlBlock - \ keepend - "\ end="\<end\>\_s*\;" - - syntax region plsqlProcedureJava - \ matchgroup=NONE - \ start="\(\/\*\(\(\*\/\)\@!\_.\)*\*\/\_s*\)\?\(\(\(overriding\_s*\)\?member\|constructor\|static\)\_s*\)\?\<\(procedure\|function\)\>\_s*\(\k*\)\_[^;]\{-}\<\(is\|as\)\>\_s*language\_s*java\_s*name" - \ matchgroup=plsqlStringLiteral - \ end="'\_[^']*'\_s*;" - \ keepend extend - \ fold - \ contains=ALLBUT,plsqlProcedure,plsqlProcedureDeclaration,plsqlProcedureBlock,plsqlBlockCont,plsqlBlock,plsqlProcedureJava,plsqlErrInBracket,plsqlStringLiteral - - -" syntax region plsqlPackage -" \ start="\<create\>\_s\+\(or\_s\+replace\_s\+\)\?package\_s\+\(body\_s\+\)\?\z([a-z][a-z0-9$_#]*\)\>" -" \ matchgroup=plsqlEnd -" \ end="\<end\>\(\%\(\_s\+\z1\)\?\_s*;\)\@=" -" \ fold -" \ transparent -" \ keepend extend -" \ contains=plsqlProcedure,plsqlBlockCont,@plsqlCommentAll,plsqlKeyword,plsqlReserved,@plsqlIdentifiers -" "\ contains=ALLBUT,plsqlPackage,plsqlProcedureDeclaration,plsqlBlock,plsqlConditionalBlock,plsqlLoopBlock,plsqlCaseBlock - - if exists("plsql_syntax_test_flag") - hi plsqlProcedureDeclaration guifg='blue' - hi plsqlProcedureBlock guifg='red' - hi plsqlProcedure guifg='green' - hi plsqlCaseBlock guifg='pink' - hi plsqlBlock NONE - else - hi plsqlPackage NONE - hi plsqlProcedureDeclaration NONE - hi plsqlProcedureBlock NONE - hi plsqlProcedure NONE - hi plsqlBlock NONE - hi plsqlCaseBlock NONE - endif - - " end plsql_procedure_fold - endif + \ transparent + \ contains=ALLBUT,plsqlBlock syntax region plsqlBlock \ start="\<begin\>" @@ -809,7 +746,6 @@ if exists("plsql_fold") \ contained \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava - " Conditionals. syn region plsqlConditionalBlock \ transparent \ start="\<if\>\(\_s*;\)\@!" @@ -827,45 +763,45 @@ endif " Define the default highlighting. " Only when an item doesn't have highlighting yet. - hi def link plsqlAttribute Macro - hi def link plsqlBlockError Error - hi def link plsqlBooleanLiteral Boolean - hi def link plsqlQuotedIdentifier Character - hi def link plsqlComment Comment - hi def link plsqlCommentL Comment - hi def link plsqlConditional Keyword - hi def link plsqlCase Conditional - hi def link plsqlError Error - hi def link plsqlErrInBracket Error - hi def link plsqlErrInBlock Error - hi def link plsqlErrInParen Error - hi def link plsqlException Function - hi def link plsqlFloatLiteral Float - hi def link plsqlFunction Function - hi def link plsqlGarbage Error - hi def link plsqlHostIdentifier Label - hi def link plsqlIdentifier Normal - hi def link plsqlIntLiteral Number - hi def link plsqlOperator Operator - hi def link plsqlParenError Error - hi def link plsqlSpaceError Error - hi def link plsqlPseudo PreProc - hi def link plsqlKeyword Keyword - hi def link plsqlEND Keyword - hi def link plsqlBEGIN Keyword - hi def link plsqlISAS Statement - hi def link plsqlReserved Statement - hi def link plsqlRepeat Repeat - hi def link plsqlStorage StorageClass - hi def link plsqlFunction Function - hi def link plsqlStringError Error - hi def link plsqlStringLiteral String - hi def link plsqlCommentString String - hi def link plsqlComment2String String - hi def link plsqlTrigger Function - hi def link plsqlTypeAttribute StorageClass - hi def link plsqlTodo Todo -" to be able to change them, need override whether defined or not +hi def link plsqlAttribute Macro +hi def link plsqlBlockError Error +hi def link plsqlBooleanLiteral Boolean +hi def link plsqlQuotedIdentifier Character +hi def link plsqlComment Comment +hi def link plsqlCommentL Comment +hi def link plsqlConditional Conditional +hi def link plsqlCase Conditional +hi def link plsqlError Error +hi def link plsqlErrInBracket Error +hi def link plsqlErrInBlock Error +hi def link plsqlErrInParen Error +hi def link plsqlException Function +hi def link plsqlFloatLiteral Float +hi def link plsqlFunction Function +hi def link plsqlGarbage Error +hi def link plsqlHostIdentifier Label +hi def link plsqlIdentifier Normal +hi def link plsqlIntLiteral Number +hi def link plsqlOperator Operator +hi def link plsqlParenError Error +hi def link plsqlSpaceError Error +hi def link plsqlPseudo PreProc +hi def link plsqlKeyword Keyword +hi def link plsqlEND Keyword +hi def link plsqlBEGIN Keyword +hi def link plsqlISAS Statement +hi def link plsqlReserved Statement +hi def link plsqlRepeat Repeat +hi def link plsqlStorage StorageClass +hi def link plsqlFunction Function +hi def link plsqlStringError Error +hi def link plsqlStringLiteral String +hi def link plsqlCommentString String +hi def link plsqlComment2String String +hi def link plsqlTrigger Function +hi def link plsqlTypeAttribute StorageClass +hi def link plsqlTodo Todo +" to be able to change them after loading, need override whether defined or not if exists("plsql_legacy_sql_keywords") hi link plsqlSQLKeyword Function hi link plsqlSymbol Normal @@ -876,6 +812,8 @@ else endif let b:current_syntax = "plsql" + +" restore setting from when we entered this file let &cpo = s:cpo_sav unlet! s:cpo_sav diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 65b977603..67329ba45 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Vim 8.2 script " Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> -" Last Change: April 26, 2022 -" Version: 8.2-36 +" Last Change: May 07, 2022 +" Version: 8.2-38 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM " Automatically generated keyword lists: {{{1 @@ -79,12 +79,12 @@ syn match vimHLGroup contained "Conceal" syn case match " Function Names {{{2 -syn keyword vimFuncName contained abs argc assert_equal assert_match atan browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filter floor foldlevel function getchangelist getcmdline getcursorcharpos getftime getmarklist getreg gettagstack getwinposy has histdel hlID index inputsave isdirectory job_getchannel job_stop json_encode line listener_add log10 maplist matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq winbufnr win_getid win_id2win winnr win_splitmove -syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath extend finddir fmod foldtext garbagecollect getchar getcmdpos getcwd getftype getmatches getreginfo gettext getwinvar has_key histget hlset input inputsecret isinf job_info join keys line2byte listener_flush luaeval mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values wincol win_gettype winlayout winrestcmd winwidth -syn keyword vimFuncName contained add arglistid assert_exception assert_notequal balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extendnew findfile fnameescape foldtextresult get getcharmod getcmdtype getenv getimstatus getmousepos getregtype getwininfo glob haslocaldir histnr hostname inputdialog insert islocked job_setoptions js_decode len lispindent listener_remove map mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol windowsversion win_gotoid winline winrestview wordcount -syn keyword vimFuncName contained and argv assert_fails assert_notmatch balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled feedkeys flatten fnamemodify foreground getbufinfo getcharpos getcmdwintype getfontname getjumplist getpid gettabinfo getwinpos glob2regpat hasmapto hlexists iconv inputlist interrupt isnan job_start js_encode libcall list2blob localtime maparg match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile visualmode win_execute winheight win_move_separator winsaveview writefile -syn keyword vimFuncName contained append asin assert_false assert_report balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp filereadable flattennew foldclosed fullcommand getbufline getcharsearch getcompletion getfperm getline getpos gettabvar getwinposx globpath histadd hlget indent inputrestore invert items job_status json_decode libcallnr list2str log mapcheck matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor -syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filewritable float2nr foldclosedend funcref getbufvar getcharstr getcurpos getfsize getloclist getqflist gettabwinvar +syn keyword vimFuncName contained abs argc assert_equal assert_match atan browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filter floor foldlevel function getchangelist getcmdcompltype getcompletion getfperm getline getpos gettabvar getwinposx has histget hlset input inputsecret isdirectory job_getchannel job_stop json_encode line listener_add log10 maplist matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq winbufnr win_getid win_id2win winnr win_splitmove +syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath extend finddir fmod foldtext garbagecollect getchar getcmdline getcurpos getfsize getloclist getqflist gettabwinvar getwinposy has_key histnr hostname inputdialog insert isinf job_info join keys line2byte listener_flush luaeval mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values wincol win_gettype winlayout winrestcmd winwidth +syn keyword vimFuncName contained add arglistid assert_exception assert_notequal balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extendnew findfile fnameescape foldtextresult get getcharmod getcmdpos getcursorcharpos getftime getmarklist getreg gettagstack getwinvar haslocaldir hlexists iconv inputlist interrupt islocked job_setoptions js_decode len lispindent listener_remove map mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol windowsversion win_gotoid winline winrestview wordcount +syn keyword vimFuncName contained and argv assert_fails assert_notmatch balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled feedkeys flatten fnamemodify foreground getbufinfo getcharpos getcmdscreenpos getcwd getftype getmatches getreginfo gettext glob hasmapto hlget indent inputrestore invert isnan job_start js_encode libcall list2blob localtime maparg match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile visualmode win_execute winheight win_move_separator winsaveview writefile +syn keyword vimFuncName contained append asin assert_false assert_report balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp filereadable flattennew foldclosed fullcommand getbufline getcharsearch getcmdtype getenv getimstatus getmousepos getregtype getwininfo glob2regpat histadd hlID index inputsave isabsolutepath items job_status json_decode libcallnr list2str log mapcheck matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor +syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filewritable float2nr foldclosedend funcref getbufvar getcharstr getcmdwintype getfontname getjumplist getpid gettabinfo getwinpos globpath histdel "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 diff --git a/runtime/syntax/wget.vim b/runtime/syntax/wget.vim index 2587022f2..8178d02ba 100644 --- a/runtime/syntax/wget.vim +++ b/runtime/syntax/wget.vim @@ -1,7 +1,9 @@ " Vim syntax file " Language: Wget configuration file (/etc/wgetrc ~/.wgetrc) " Maintainer: Doug Kearns <dougkearns@gmail.com> -" Last Change: 2013 Jun 1 +" Last Change: 2022 Apr 28 + +" GNU Wget 1.21 built on linux-gnu. if exists("b:current_syntax") finish @@ -18,155 +20,206 @@ syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline syn case ignore -syn keyword wgetBoolean on off contained -syn keyword wgetNumber inf contained -syn case match -syn match wgetNumber "\<\%(\d\+\|inf\)\>" contained -syn match wgetQuota "\<\d\+[kKmM]\>" contained -syn match wgetTime "\<\d\+[smhdw]\>" contained +syn keyword wgetBoolean on off yes no contained +syn keyword wgetNumber inf contained + +syn match wgetNumber "\<\d\+>" contained +syn match wgetQuota "\<\d\+[kmgt]\>" contained +syn match wgetTime "\<\d\+[smhdw]\>" contained "{{{ Commands -let s:commands = map([ - \ "accept", - \ "add_hostdir", - \ "adjust_extension", - \ "always_rest", - \ "ask_password", - \ "auth_no_challenge", - \ "background", - \ "backup_converted", - \ "backups", - \ "base", - \ "bind_address", - \ "ca_certificate", - \ "ca_directory", - \ "cache", - \ "certificate", - \ "certificate_type", - \ "check_certificate", - \ "connect_timeout", - \ "content_disposition", - \ "continue", - \ "convert_links", - \ "cookies", - \ "cut_dirs", - \ "debug", - \ "default_page", - \ "delete_after", - \ "dns_cache", - \ "dns_timeout", - \ "dir_prefix", - \ "dir_struct", - \ "domains", - \ "dot_bytes", - \ "dots_in_line", - \ "dot_spacing", - \ "dot_style", - \ "egd_file", - \ "exclude_directories", - \ "exclude_domains", - \ "follow_ftp", - \ "follow_tags", - \ "force_html", - \ "ftp_passwd", - \ "ftp_password", - \ "ftp_user", - \ "ftp_proxy", - \ "glob", - \ "header", - \ "html_extension", - \ "htmlify", - \ "http_keep_alive", - \ "http_passwd", - \ "http_password", - \ "http_proxy", - \ "https_proxy", - \ "http_user", - \ "ignore_case", - \ "ignore_length", - \ "ignore_tags", - \ "include_directories", - \ "inet4_only", - \ "inet6_only", - \ "input", - \ "iri", - \ "keep_session_cookies", - \ "kill_longer", - \ "limit_rate", - \ "load_cookies", - \ "locale", - \ "local_encoding", - \ "logfile", - \ "login", - \ "max_redirect", - \ "mirror", - \ "netrc", - \ "no_clobber", - \ "no_parent", - \ "no_proxy", - \ "numtries", - \ "output_document", - \ "page_requisites", - \ "passive_ftp", - \ "passwd", - \ "password", - \ "post_data", - \ "post_file", - \ "prefer_family", - \ "preserve_permissions", - \ "private_key", - \ "private_key_type", - \ "progress", - \ "protocol_directories", - \ "proxy_passwd", - \ "proxy_password", - \ "proxy_user", - \ "quiet", - \ "quota", - \ "random_file", - \ "random_wait", - \ "read_timeout", - \ "reclevel", - \ "recursive", - \ "referer", - \ "reject", - \ "relative_only", - \ "remote_encoding", - \ "remove_listing", - \ "restrict_file_names", - \ "retr_symlinks", - \ "retry_connrefused", - \ "robots", - \ "save_cookies", - \ "save_headers", - \ "secure_protocol", - \ "server_response", - \ "show_all_dns_entries", - \ "simple_host_check", - \ "span_hosts", - \ "spider", - \ "strict_comments", - \ "sslcertfile", - \ "sslcertkey", - \ "timeout", - \ "time_stamping", - \ "use_server_timestamps", - \ "tries", - \ "trust_server_names", - \ "user", - \ "use_proxy", - \ "user_agent", - \ "verbose", - \ "wait", - \ "wait_retry"], - \ "substitute(v:val, '_', '[-_]\\\\=', 'g')") +let s:commands =<< trim EOL + accept + accept_regex + add_host_dir + adjust_extension + always_rest + ask_password + auth_no_challenge + background + backup_converted + backups + base + bind_address + bind_dns_address + body_data + body_file + ca_certificate + ca_directory + cache + certificate + certificate_type + check_certificate + choose_config + ciphers + compression + connect_timeout + content_disposition + content_on_error + continue + convert_file_only + convert_links + cookies + crl_file + cut_dirs + debug + default_page + delete_after + dns_cache + dns_servers + dns_timeout + dir_prefix + dir_struct + domains + dot_bytes + dots_in_line + dot_spacing + dot_style + egd_file + exclude_directories + exclude_domains + follow_ftp + follow_tags + force_html + ftp_passwd + ftp_password + ftp_user + ftp_proxy + ftps_clear_data_connection + ftps_fallback_to_ftp + ftps_implicit + ftps_resume_ssl + hsts + hsts_file + ftp_stmlf + glob + header + html_extension + htmlify + http_keep_alive + http_passwd + http_password + http_proxy + https_proxy + https_only + http_user + if_modified_since + ignore_case + ignore_length + ignore_tags + include_directories + inet4_only + inet6_only + input + input_meta_link + iri + keep_bad_hash + keep_session_cookies + kill_longer + limit_rate + load_cookies + locale + local_encoding + logfile + login + max_redirect + metalink_index + metalink_over_http + method + mirror + netrc + no_clobber + no_config + no_parent + no_proxy + numtries + output_document + page_requisites + passive_ftp + passwd + password + pinned_pubkey + post_data + post_file + prefer_family + preferred_location + preserve_permissions + private_key + private_key_type + progress + protocol_directories + proxy_passwd + proxy_password + proxy_user + quiet + quota + random_file + random_wait + read_timeout + rec_level + recursive + referer + regex_type + reject + rejected_log + reject_regex + relative_only + remote_encoding + remove_listing + report_speed + restrict_file_names + retr_symlinks + retry_connrefused + retry_on_host_error + retry_on_http_error + robots + save_cookies + save_headers + secure_protocol + server_response + show_all_dns_entries + show_progress + simple_host_check + span_hosts + spider + start_pos + strict_comments + sslcertfile + sslcertkey + timeout + timestamping + use_server_timestamps + tries + trust_server_names + unlink + use_askpass + user + use_proxy + user_agent + verbose + wait + wait_retry + warc_cdx + warc_cdx_dedup + warc_compression + warc_digests + warc_file + warc_header + warc_keep_log + warc_max_size + warc_temp_dir + wdebug + xattr +EOL "}}} -syn case ignore +call map(s:commands, "substitute(v:val, '_', '[-_]\\\\=', 'g')") + for cmd in s:commands - exe 'syn match wgetCommand "' . cmd . '" nextgroup=wgetAssignmentOperator skipwhite contained' + exe 'syn match wgetCommand "\<' . cmd . '\>" nextgroup=wgetAssignmentOperator skipwhite contained' endfor + syn case match syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite @@ -179,6 +232,7 @@ hi def link wgetComment Comment hi def link wgetNumber Number hi def link wgetQuota Number hi def link wgetString String +hi def link wgetTime Number hi def link wgetTodo Todo let b:current_syntax = "wget" diff --git a/runtime/syntax/wget2.vim b/runtime/syntax/wget2.vim new file mode 100644 index 000000000..a63c336f0 --- /dev/null +++ b/runtime/syntax/wget2.vim @@ -0,0 +1,250 @@ +" Vim syntax file +" Language: Wget2 configuration file (/etc/wget2rc ~/.wget2rc) +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Last Change: 2022 Apr 28 + +" GNU Wget2 2.0.0 - multithreaded metalink/file/website downloader + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match wgetComment "#.*$" contains=wgetTodo contained + +syn keyword wgetTodo TODO NOTE FIXME XXX contained + +syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline +syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline + +syn case ignore + +syn keyword wgetBoolean on off yes no y n contained +syn keyword wgetNumber infinity inf contained + +syn match wgetNumber "\<\d\+>" contained +syn match wgetQuota "\<\d\+[kmgt]\>" contained +syn match wgetTime "\<\d\+[smhd]\>" contained + +"{{{ Commands +let s:commands =<< trim EOL + accept + accept-regex + adjust-extension + append-output + ask-password + auth-no-challenge + background + backup-converted + backups + base + bind-address + bind-interface + body-data + body-file + ca-certificate + ca-directory + cache + certificate + certificate-type + check-certificate + check-hostname + chunk-size + clobber + compression + config + connect-timeout + content-disposition + content-on-error + continue + convert-file-only + convert-links + cookie-suffixes + cookies + crl-file + cut-dirs + cut-file-get-vars + cut-url-get-vars + debug + default-http-port + default-https-port + default-page + delete-after + directories + directory-prefix + dns-cache + dns-cache-preload + dns-timeout + domains + download-attr + egd-file + exclude-directories + exclude-domains + execute + filter-mime-type + filter-urls + follow-tags + force-atom + force-css + force-directories + force-html + force-metalink + force-progress + force-rss + force-sitemap + fsync-policy + gnupg-homedir + header + help + host-directories + hpkp + hpkp-file + hsts + hsts-file + hsts-preload + hsts-preload-file + html-extension + http-keep-alive + http-password + http-proxy + http-proxy-password + http-proxy-user + http-user + http2 + http2-only + http2-request-window + https-enforce + https-only + https-proxy + hyperlink + if-modified-since + ignore-case + ignore-length + ignore-tags + include-directories + inet4-only + inet6-only + input-encoding + input-file + keep-extension + keep-session-cookies + level + limit-rate + list-plugins + load-cookies + local-db + local-encoding + local-plugin + max-redirect + max-threads + metalink + method + mirror + netrc + netrc-file + ocsp + ocsp-date + ocsp-file + ocsp-nonce + ocsp-server + ocsp-stapling + output-document + output-file + page-requisites + parent + password + plugin + plugin-dirs + plugin-help + plugin-opt + post-data + post-file + prefer-family + private-key + private-key-type + progress + protocol-directories + proxy + quiet + quota + random-file + random-wait + read-timeout + recursive + referer + regex-type + reject + reject-regex + remote-encoding + report-speed + restrict-file-names + retry-connrefused + retry-on-http-error + robots + save-content-on + save-cookies + save-headers + secure-protocol + server-response + signature-extensions + span-hosts + spider + start-pos + stats-dns + stats-ocsp + stats-server + stats-site + stats-tls + strict-comments + tcp-fastopen + timeout + timestamping + tls-false-start + tls-resume + tls-session-file + tries + trust-server-names + unlink + use-askpass + use-server-timestamps + user + user-agent + verbose + verify-save-failed + verify-sig + version + wait + waitretry + xattr +EOL +"}}} + +call map(s:commands, "substitute(v:val, '_', '[-_]\\\\=', 'g')") + +for cmd in s:commands + exe 'syn match wgetCommand "\<' . cmd . '\>" nextgroup=wgetAssignmentOperator skipwhite contained' +endfor + +syn case match + +syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite +syn match wgetAssignmentOperator "=" nextgroup=wgetString,wgetBoolean,wgetNumber,wgetQuota,wgetTime skipwhite contained + +hi def link wgetAssignmentOperator Special +hi def link wgetBoolean Boolean +hi def link wgetCommand Identifier +hi def link wgetComment Comment +hi def link wgetNumber Number +hi def link wgetQuota Number +hi def link wgetString String +hi def link wgetTime Number +hi def link wgetTodo Todo + +let b:current_syntax = "wget" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 fdm=marker: diff --git a/runtime/tutor/Makefile b/runtime/tutor/Makefile index b7b984a5c..3d1d560de 100644 --- a/runtime/tutor/Makefile +++ b/runtime/tutor/Makefile @@ -11,7 +11,7 @@ all: tutor.utf-8 \ tutor.de.utf-8 \ tutor.el tutor.el.cp737 \ tutor.eo \ - tutor.es.utf-8 \ + tutor.es \ tutor.fr.utf-8 \ tutor.hr tutor.hr.cp1250 \ tutor.hu tutor.hu.cp1250 \ @@ -48,8 +48,8 @@ tutor.el: tutor.el.utf-8 tutor.el.cp737: tutor.el.utf-8 iconv -f UTF-8 -t cp737 tutor.el.utf-8 > tutor.el.cp737 -tutor.es.utf-8: tutor.es - iconv -f ISO-8859-1 -t UTF-8 tutor.es > tutor.es.utf-8 +tutor.es: tutor.es.utf-8 + iconv -f UTF-8 -t ISO-8859-1 tutor.es.utf-8 > tutor.es tutor.fr.utf-8: tutor.fr iconv -f ISO-8859-1 -t UTF-8 tutor.fr > tutor.fr.utf-8 diff --git a/runtime/tutor/tutor.es b/runtime/tutor/tutor.es index c4b5c21c2..7619fbc49 100644 --- a/runtime/tutor/tutor.es +++ b/runtime/tutor/tutor.es @@ -1,84 +1,84 @@ =============================================================================== -= B i e n v e n i d o a l t u t o r d e V I M - Versin 1.4 = += B i e n v e n i d o a l t u t o r d e V I M - Versin 1.7 = =============================================================================== - Vim es un editor muy potente que dispone de muchos mandatos, demasiados + Vim es un editor muy potente que dispone de muchos comandos, demasiados para ser explicados en un tutor como ste. Este tutor est diseado - para describir suficientes mandatos para que usted sea capaz de + para describir suficientes comandos para que usted sea capaz de aprender fcilmente a usar Vim como un editor de propsito general. - El tiempo necesario para completar el tutor es aproximadamente de 25-30 + El tiempo necesario para completar el tutor es aproximadamente de 30 minutos, dependiendo de cunto tiempo se dedique a la experimentacin. - Los mandatos de estas lecciones modificarn el texto. Haga una copia de + Los comandos de estas lecciones modificarn el texto. Haga una copia de este fichero para practicar (con vimtutor esto ya es una copia). Es importante recordar que este tutor est pensado para ensear con - la prctica. Esto significa que es necesario ejecutar los mandatos - para aprenderlos adecuadamente. Si nicamente se lee el texto, se - olvidarn los mandatos. + la prctica. Esto significa que es necesario ejecutar los comandos + para aprenderlos adecuadamente. Si nicamente lee el texto, se le + olvidarn los comandos. - Ahora, asegrese de que la tecla de bloqueo de maysculas no est + Ahora, asegrese de que la tecla de bloqueo de maysculas NO est activada y pulse la tecla j lo suficiente para mover el cursor de forma que la Leccin 1.1 ocupe completamente la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 1.1: MOVIMIENTOS DEL CURSOR + Leccin 1.1: MOVER EL CURSOR - ** Para mover el cursor, pulse las teclas h,j,k,l de la forma que se indica. ** + ** Para mover el cursor, pulse las teclas h,j,k,l de la forma indicada. ** ^ - k Indicacin: La tecla h est a la izquierda y mueve a la izquierda. - < h l > La tecla l est a la derecha y mueve a la derecha. + k Indicacin: La tecla h est a la izquierda y lo mueve a la izquierda. + < h l > La tecla l est a la derecha y lo mueve a la derecha. j La tecla j parece una flecha que apunta hacia abajo. v 1. Mueva el cursor por la pantalla hasta que se sienta cmodo con ello. - 2. Mantenga pulsada la tecla j hasta que se repita automgicamente. ----> Ahora ya sabe como llegar a la leccin siguiente. + 2. Mantenga pulsada la tecla (j) hasta que se repita automgicamente. + Ahora ya sabe como llegar a la leccin siguiente. - 3. Utilizando la tecla abajo, vaya a la Leccin 1.2. + 3. Utilizando la tecla abajo, vaya a la leccin 1.2. -Nota: Si alguna vez no est seguro sobre algo que ha tecleado, pulse <ESC> +NOTA: Si alguna vez no est seguro sobre algo que ha tecleado, pulse <ESC> para situarse en modo Normal. Luego vuelva a teclear la orden que deseaba. -Nota: Las teclas de movimiento del cursor tambin funcionan. Pero usando +NOTA: Las teclas de movimiento del cursor tambin funcionan. Pero usando hjkl podr moverse mucho ms rpido una vez que se acostumbre a ello. + De verdad! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 1.2: ENTRANDO Y SALIENDO DE VIM + Leccin 1.2: SALIR DE VIM - NOTA: Antes de ejecutar alguno de los pasos siguientes lea primero + NOTA: Antes de ejecutar alguno de los siguientes pasos lea primero la leccin entera!! 1. Pulse la tecla <ESC> (para asegurarse de que est en modo Normal). - 2. Escriba: :q! <INTRO> + 2. Escriba: :q! <INTRO> + Esto provoca la salida del editor DESCARTANDO cualquier cambio que haya hecho. ----> Esto provoca la salida del editor SIN guardar ningn cambio que se haya - hecho. Si quiere guardar los cambios y salir escriba: - :wq <INTRO> + 3. Regrese aqu ejecutando el comando que le trajo a este tutor. + ste puede haber sido: vimtutor <INTRO> - 3. Cuando vea el smbolo del sistema, escriba el mandato que le trajo a este - tutor. ste puede haber sido: vimtutor <INTRO> - Normalmente se usara: vim tutor <INTRO> + 4. Si ha memorizado estos pasos y se siente con confianza, ejecute los + pasos 1 a 3 para salir y volver a entrar al editor. ----> 'vim' significa entrar al editor, 'tutor' es el fichero a editar. +NOTA: :q! <INTRO> descarta cualquier cambio que haya realizado. + En prximas lecciones aprender cmo guardar los cambios en un archivo. + + 5. Mueva el cursor hasta la Leccin 1.3. - 4. Si ha memorizado estos pasos y se se siente con confianza, ejecute los - pasos 1 a 3 para salir y volver a entrar al editor. Despus mueva el - cursor hasta la Leccin 1.3. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 1.3: EDICIN DE TEXTO - BORRADO -** Estando en modo Normal pulse x para borrar el carcter sobre el cursor. **j +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 1.3: EDITAR TEXTO - BORRAR + ** Pulse x para eliminar el carcter bajo el cursor. ** 1. Mueva el cursor a la lnea de abajo sealada con --->. - 2. Para corregir los errores, mueva el cursor hasta que est bajo el + 2. Para corregir los errores, mueva el cursor hasta que est sobre el carcter que va a ser borrado. - 3. Pulse la tecla x para borrar el carcter sobrante. + 3. Pulse la tecla x para eliminar el carcter no deseado. 4. Repita los pasos 2 a 4 hasta que la frase sea la correcta. @@ -86,20 +86,20 @@ Nota: Las teclas de movimiento del cursor tambin funcionan. Pero usando 5. Ahora que la lnea esta correcta, contine con la Leccin 1.4. - NOTA: A medida que vaya avanzando en este tutor no intente memorizar, aprenda practicando. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 1.4: EDICIN DE TEXTO - INSERCIN - ** Estando en modo Normal pulse i para insertar texto. ** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 1.4: EDITAR TEXTO - BORRAR + ** Pulse i para insertar texto. ** 1. Mueva el cursor a la primera lnea de abajo sealada con --->. - 2. Para que la primera lnea sea igual a la segunda, mueva el cursor bajo el - primer carcter que sigue al texto que ha de ser insertado. + 2. Para hacer que la primera lnea sea igual que la segunda, mueva el + cursor hasta que est sobre el carcter ANTES del cual el texto va a ser + insertado. 3. Pulse i y escriba los caracteres a aadir. @@ -109,9 +109,55 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, ---> Flta texto en esta . ---> Falta algo de texto en esta lnea. - 5. Cuando se sienta cmodo insertando texto pase al resumen que est ms - abajo. + 5. Cuando se sienta cmodo insertando texto pase vaya a la leccin 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 1.5: EDITAR TEXTO - AADIR + + + ** Pulse A para aadir texto. ** + + 1. Mueva el cursor a la primera lnea inferior marcada con --->. + No importa sobre qu carcter est el cursor en esta lnea. + + 2. Pulse A y escriba el texto necesario. + + 3. Cuando el texto haya sido aadido pulse <ESC> para volver al modo Normal. + 4. Mueva el cursor a la segunda lnea marcada con ---> y repita los + pasos 2 y 3 para corregir esta frase. + +---> Falta algn texto en es + Falta algn texto en esta lnea. +---> Tambin falta alg + Tambin falta algn texto aqu. + + 5. Cuando se sienta cmodo aadiendo texto pase a la leccin 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 1.6: EDITAR UN ARCHIVO + + ** Use :wq para guardar un archivo y salir ** + + !! NOTA: Antes de ejecutar los siguientes pasos, lea la leccin 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 leccin 1.2: :q! + + 2. En el smbolo del sistema escriba este comando: vim archivo.txt <INTRO> + 'vim' es el comando para arrancar el editor Vim, 'archivo.txt' + es el nombre del archivo que quiere editar + Utilice el nombre de un archivo que pueda cambiar. + + 3. Inserte y elimine texto como ya aprendi en las lecciones anteriores. + + 4. Guarde el archivo con los cambios y salga de Vim con: :wq <INTRO> + + 5. Si ha salido de vimtutor en el paso 1 reinicie vimtutor y baje hasta + el siguiente sumario. + + 6. Despus de leer los pasos anteriores y haberlos entendido: hgalos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIN 1 @@ -120,55 +166,59 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. h (izquierda) j (abajo) k (arriba) l (derecha) - 2. Para acceder a Vim (desde el smbolo del sistema %) escriba: - vim FILENAME <INTRO> + 2. Para acceder a Vim desde el smbolo del sistema escriba: + vim NOMBREARCHIVO <INTRO> 3. Para salir de Vim escriba: <ESC> :q! <INTRO> para eliminar todos los cambios. + O escriba: <ESC> :wq <INTRO> para guardar los cambios. - 4. Para borrar un carcter sobre el cursor en modo Normal pulse: x + 4. Para borrar un carcter bajo el cursor en modo Normal pulse: x - 5. Para insertar texto en la posicin del cursor estando en modo Normal: - pulse i escriba el texto pulse <ESC> + 5. Para insertar o aadir texto escriba: + i escriba el texto a insertar <ESC> inserta el texto antes del cursor + A escriba el texto a aadir <ESC> aade texto al final de la lnea -NOTA: Pulsando <ESC> se vuelve al modo Normal o cancela un mandato no deseado - o incompleto. +NOTA: Pulsando <ESC> se vuelve al modo Normal o cancela una orden no deseada + o incompleta. Ahora contine con la Leccin 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 2.1: MANDATOS PARA BORRAR + Leccin 2.1: COMANDOS PARA BORRAR - ** Escriba dw para borrar hasta el final de una palabra ** + ** Escriba dw para borrar una palabra ** 1. Pulse <ESC> para asegurarse de que est en el modo Normal. - 2. Mueva el cursor a la lnea de abajo sealada con --->. + 2. Mueva el cursor a la lnea inferior sealada con --->. 3. Mueva el cursor al comienzo de una palabra que desee borrar. 4. Pulse dw para hacer que la palabra desaparezca. - - NOTA: Las letras dw aparecern en la ltima lnea de la pantalla cuando - las escriba. Si escribe algo equivocado pulse <ESC> y comience de nuevo. - + NOTA: La letra d aparecer en la ltima lnea inferior derecha + de la pantalla mientras la escribe. Vim est esperando que escriba w . + Si ve otro carcter que no sea d escribi algo mal, pulse <ESC> y + comience de nuevo. ---> Hay algunas palabras psalo 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 + leccin 2.2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 2.2: MS MANDATOS PARA BORRAR + Leccin 2.2: MS COMANDOS PARA BORRAR ** Escriba d$ para borrar hasta el final de la lnea. ** - 1. Pulse <ESC> para asegurarse de que est en el modo Normal. - 2. Mueva el cursor a la lnea de abajo sealada con --->. + 2. Mueva el cursor a la lnea inferior sealada con --->. 3. Mueva el cursor al final de la lnea correcta (DESPUS del primer . ). @@ -176,319 +226,391 @@ Ahora contine con la Leccin 2. ---> Alguien ha escrito el final de esta lnea dos veces. esta lnea dos veces. + 5. Pase a la leccin 2.3 para entender qu est pasando. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 2.3: SOBRE OPERADORES Y MOVIMIENTOS + + Muchos comandos que cambian texto estn compuestos por un operador y un + movimiento. + El formato para eliminar un comando con el operador de borrado d es el + siguiente: + d movimiento + Donde: + d - es el operador para borrar. + movimiento - es sobre lo que el comando va a operar (lista inferior). + Una lista resumida de movimientos: + w - hasta el comienzo de la siguiente palabra, EXCLUYENDO su primer + carcter. + e - hasta el final de la palabra actual, INCLUYENDO su primer carcter. + $ - hasta el final de la lnea, INCLUYENDO el ltimo carcter. +NOTA: Pulsando nicamente el movimiento estando en el modo Normal sin un + operador, mover el cursor como se especifica en la lista anterior. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 2.3: SOBRE MANDATOS Y OBJETOS + Leccin 2.4: UTILIZAR UN CONTADOR PARA UN MOVIMIENTO - El formato del mandato de borrar d es como sigue: + ** Al escribir un nmero antes de un movimiento, lo repite esas veces. ** - [nmero] d objeto O d [nmero] objeto - donde: - nmero - es cuntas veces se ha de ejecutar el mandato (opcional, defecto=1). - d - es el mandato para borrar. - objeto - es sobre lo que el mandato va a operar (lista, abajo). + 1. Mueva el cursor al comienzo de la lnea marcada con --->. - Una lista corta de objetos: - w - desde el cursor hasta el final de la palabra, incluyendo el espacio. - e - desde el cursor hasta el final de la palabra, SIN incluir el espacio. - $ - desde el cursor hasta el final de la lnea. + 2. Escriba 2w para mover el cursor dos palabras hacia adelante. + + 3. Escriba 3e para mover el cursor al final de la tercera palabra hacia + adelante. + + 4. Escriba 0 (cero) para colocar el cursor al inicio de la lnea. + + 5. Repita el paso 2 y 3 con diferentes nmeros. + +---> Esto es solo una lnea con palabra donde poder moverse. + + 6. Pase a la leccin 2.5. -NOTE: Para los aventureros, pulsando slo el objeto estando en modo Normal - sin un mandato mover el cursor como se especifica en la lista de objetos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 2.4: UNA EXCEPCIN AL 'MANDATO-OBJETO' + Leccin 2.5: UTILIZAR UN CONTADOR PARA BORRAR MAS + + + ** Al escribir un nmero con un operador lo repite esas veces. ** + + En combinacin con el operador de borrado y el movimiento mencionado + anteriormente, aada un contador antes del movimiento para eliminar ms: + d nmero movimiento + + 1. Mueva el cursos a la primera palabra en MAYSCULAS en la lnea + marcada con --->. + + 2. Escriba d2w para eliminar las dos palabras en MAYSCULAS. + + 3. Repita los pasos 1 y 2 con diferentes contadores para eliminar + las siguientes palabras en MAYSCULAS con un comando. + +---> esta ABC DE serie FGHI JK LMN OP de palabras ha sido Q RS TUV limpiada. - ** Escriba dd para borrar una lnea entera. ** - Debido a la frecuencia con que se borran lneas enteras, los diseadores - de Vim decidieron que sera ms fcil el escribir simplemente dos des en - una fila para borrar una lnea. - 1. Mueva el cursor a la segunda lnea de la lista de abajo. - 2. Escriba dd para borrar la lnea. - 3. Muvase ahora a la cuarta lnea. - 4. Escriba 2dd (recuerde nmero-mandato-objeto) para borrar las dos - lneas. - 1) Las rosas son rojas, - 2) El barro es divertido, - 3) El cielo es azul, - 4) Yo tengo un coche, - 5) Los relojes marcan la hora, - 6) El azcar es dulce, - 7) Y as eres t. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 2.5: EL MANDATO DESHACER + Leccin 2.6: OPERACIN EN LNEAS + + + ** Escriba dd para eliminar una lnea completa. ** + Debido a la frecuencia con que se elimina una lnea completa, los + diseadores de Vi, decidieron que sera ms sencillo simplemente escribir + dos letras d para eliminar una lnea. - ** Pulse u para deshacer los ltimos mandatos, + 1. Mueva el cursor a la segunda lnea del prrafo inferior. + 2. Escriba dd para eliminar la lnea. + 3. Ahora muvase a la cuarta lnea. + 4. Escriba 2dd para eliminar dos lneas a la vez. + +---> 1) Las rosas son rojas, +---> 2) El barro es divertido, +---> 3) Las violetas son azules, +---> 4) Tengo un coche, +---> 5) Los relojes dan la hora, +---> 6) El azcar es dulce +---> 7) Y tambin lo eres t. + +La duplicacin para borrar lneas tambin funcionan con los operadores +mencionados anteriormente. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 2.7: EL MANDATO DESHACER + + + ** Pulse u para deshacer los ltimos comandos, U para deshacer una lnea entera. ** - 1. Mueva el cursor a la lnea de abajo sealada con ---> y sitelo bajo el + 1. Mueva el cursor a la lnea inferior sealada con ---> y sitelo bajo el primer error. - 2. Pulse x para borrar el primer carter errneo. - 3. Pulse ahora u para deshacer el ltimo mandato ejecutado. - 4. Ahora corrija todos los errores de la lnea usando el mandato x. + 2. Pulse x para borrar el primer carcter no deseado. + 3. Pulse ahora u para deshacer el ltimo comando ejecutado. + 4. Ahora corrija todos los errores de la lnea usando el comando x. 5. Pulse ahora U mayscula para devolver la lnea a su estado original. 6. Pulse ahora u unas pocas veces para deshacer lo hecho por U y los - mandatos previos. + comandos previos. 7. Ahora pulse CTRL-R (mantenga pulsada la tecla CTRL y pulse R) unas - pocas veces para volver a ejecutar los mandatos (deshacer lo deshecho). + cuantas veces para volver a ejecutar los comandos (deshacer lo deshecho). ---> Corrrija los errores dee esttta lnea y vuuelva a ponerlos coon deshacer. - 8. Estos mandatos son muy tiles. Ahora pase al resumen de la Leccin 2. + 8. Estos son unos comandos muy tiles. Ahora vayamos al resumen de la + leccin 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIN 2 - 1. Para borrar desde el cursor hasta el final de una palabra pulse: dw - 2. Para borrar desde el cursor hasta el final de una lnea pulse: d$ - 3. Para borrar una lnea entera pulse: dd +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RESUMEN DE LA LECCIN 2 - 4. El formato de un mandato en modo Normal es: + 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 + 3. Para borrar desde el cursor hasta el final de una lnea pulse: d$ + 4. Para borrar una lnea entera pulse: dd - [nmero] mandato objeto O mandato [nmero] objeto + 5. Para repetir un movimiento precdalo con un nmero: 2w + 6. El formato para un comando de cambio es: + operador [nmero] movimiento donde: - nmero - es cuntas veces se ha de ejecutar el mandato - mandato - es lo que hay que hacer, por ejemplo, d para borrar - objeto - es sobre lo que el mandato va a operar, por ejemplo - w (palabra), $ (hasta el final de la lnea), etc. + comando - es lo que hay que hacer, por ejemplo, d para borrar + [nmero] - es un nmero opcional para repetir el movimiento + movimiento - se mueve sobre el texto sobre el que operar, como + w (palabra), $ (hasta el final de la lnea), etc. + 7. Para moverse al inicio de la lnea utilice un cero: 0 - 5. Para deshacer acciones previas pulse: u (u minscula) + 8. Para deshacer acciones previas pulse: u (u minscula) Para deshacer todos los cambios de una lnea pulse: U (U mayscula) - Para deshacer lo deshecho pulse: CTRL-R + Para deshacer lo deshecho pulse: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 3.1: EL MANDATO PUT (poner) + Leccin 3.1: EL COMANDO PUT (poner) - ** Pulse p para poner lo ltimo que ha borrado despus del cursor. ** +** Pulse p para poner (pegar) despus del cursor lo ltimo que ha borrado. ** - 1. Mueva el cursor al final de la lista de abajo. + 1. Mueva el cursor a la primera lnea inferior marcada con --->. - 2. Escriba dd para borrar la lnea y almacenarla en el buffer de Vim. + 2. Escriba dd para borrar la lnea y almacenarla en un registro de Vim. - 3. Mueva el cursor a la lnea que debe quedar por debajo de la - lnea a mover. + 3. Mueva el cursor a la lnea c) por ENCIMA de donde debera estar + la lnea eliminada. - 4. Estando en mod Normal, pulse p para restituir la lnea borrada. + 4. Pulse p para pegar la lnea borrada por debajo del cursor. 5. Repita los pasos 2 a 4 para poner todas las lneas en el orden correcto. - d) Puedes aprenderla t? - b) Las violetas son azules, - c) La inteligencia se aprende, - a) Las rosas son rojas, +---> d) Puedes aprenderla t? +---> b) Las violetas son azules, +---> c) La inteligencia se aprende, +---> a) Las rosas son rojas, + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 3.2: EL MANDATO REPLACE (remplazar) - + Leccin 3.2: EL COMANDO REEMPLAZAR - ** Pulse r y un carcter para sustituir el carcter sobre el cursor. ** + ** Pulse rx para reemplazar el carcter bajo el cursor con x . ** - 1. Mueva el cursor a la primera lnea de abajo sealada con --->. + 1. Mueva el cursor a la primera lnea inferior marcada con --->. - 2. Mueva el cursor para situarlo bajo el primer error. + 2. Mueva el cursor para situarlo sobre el primer error. - 3. Pulse r y el carcter que debe sustituir al errneo. + 3. Pulse r y despus el carcter que debera ir ah. - 4. Repita los pasos 2 y 3 hasta que la primera lnea est corregida. + 4. Repita los pasos 2 y 3 hasta que la primera sea igual a la segunda. ---> Cuendo esta lnea fue rscrita alguien pulso algunas teclas equibocadas! ---> Cuando esta lnea fue escrita alguien puls algunas teclas equivocadas! + 5. Ahora pase a la leccin 3.3. - +NOTA: Recuerde que debera aprender practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 3.3: EL MANDATO CHANGE (cambiar) + Leccin 3.3: EL COMANDO CAMBIAR - ** Para cambiar parte de una palabra o toda ella escriba cw . ** + ** Para cambiar hasta el final de una lnea, escriba ce . ** - - 1. Mueva el cursor a la primera lnea de abajo sealada con --->. + 1. Mueva el cursor a la primera lnea inferior marcada con --->. 2. Site el cursor en la u de lubrs. - 3. Escriba cw y corrija la palabra (en este caso, escriba 'nea'). + 3. Escriba ce y corrija la palabra (en este caso, escriba 'nea'). - 4. Pulse <ESC> y mueva el cursor al error siguiente (el primer carcter - que deba cambiarse). + 4. Pulse <ESC> y mueva el cursor al siguiente error que debe ser cambiado. 5. Repita los pasos 3 y 4 hasta que la primera frase sea igual a la segunda. ----> Esta lubrs tiene unas pocas pskavtad que corregir usem el mandato change. ----> Esta lnea tiene unas pocas palabras que corregir usando el mandato change. +---> Esta lubrs tiene unas pocas pskavtad que corregir usem el comando change. +---> Esta lnea tiene unas pocas palabras que corregir usando el comando change. + +Tenga en cuenta que ce elimina la palabra y entra en el modo Insertar. + cc hace lo mismo para toda la lnea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leccin 3.4: MS CAMBIOS USANDO c - ** El mandato change se utiliza con los mismos objetos que delete. ** + ** El operador change se utiliza con los mismos movimientos que delete. ** - 1. El mandato change funciona de la misma forma que delete. El formato es: + 1. El operador change funciona de la misma forma que delete. El formato es: - [nmero] c objeto O c [nmero] objeto + c [nmero] movimiento - 2. Los objetos son tambim los mismos, tales como w (palabra), $ (fin de - la lnea), etc. + 2. Los movimientos son tambin los mismos, tales como w (palabra) o + $ (fin de la lnea). - 3. Mueva el cursor a la primera lnea de abajo sealada con --->. + 3. Mueva el cursor a la primera lnea inferior sealada con --->. 4. Mueva el cursor al primer error. - 5. Escriba c$ para hacer que el resto de la lnea sea como la segunda + 5. Pulse c$ y escriba el resto de la lnea para que sea como la segunda y pulse <ESC>. ---> El final de esta lnea necesita alguna ayuda para que sea como la segunda. ----> El final de esta lnea necesita ser corregido usando el mandato c$. +---> El final de esta lnea necesita ser corregido usando el comando c$. + +NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIN 3 - 1. Para sustituir texto que ha sido borrado, pulse p . Esto Pone el texto - borrado DESPUS del cursor (si lo que se ha borrado es una lnea se - situar sobre la lnea que est sobre el cursor). + 1. Para volver a poner o pegar el texto que acaba de ser borrado, + escriba p . Esto pega el texto despus del cursor (si se borr una + lnea, al pegarla, esta se situar en la lnea debajo del cursor). 2. Para sustituir el carcter bajo el cursor, pulse r y luego el - carcter que sustituir al original. + carcter que quiere que est en ese lugar. - 3. El mandato change le permite cambiar el objeto especificado desde la - posicin del cursor hasta el final del objeto; e.g. Pulse cw para - cambiar desde el cursor hasta el final de la palabra, c$ para cambiar - hasta el final de la lnea. + 3. El operador change le permite cambiar desde la posicin del cursor + hasta donde el movimiento indicado le lleve. Por ejemplo, pulse ce + para cambiar desde el cursor hasta el final de la palabra, o c$ + para cambiar hasta el final de la lnea. 4. El formato para change es: - [nmero] c objeto O c [nmero] objeto + c [nmero] movimiento Pase ahora a la leccin siguiente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 4.1: SITUACIN EN EL FICHERO Y SU ESTADO + Leccin 4.1: UBICACIN DEL CURSOR Y ESTADO DEL ARCHIVO + ** Pulse CTRL-G para mostrar su situacin en el fichero y su estado. + Pulse G para moverse a una determinada lnea del fichero. ** - ** Pulse CTRL-g para mostrar su situacin en el fichero y su estado. - Pulse MAYU-G para moverse a una determinada lnea del fichero. ** +NOTA: Lea esta leccin entera antes de ejecutar cualquiera de los pasos!! - Nota: Lea esta leccin entera antes de ejecutar alguno de los pasos!! + 1. Mantenga pulsada la tecla Ctrl y pulse g . Le llamamos a esto CTRL-G. + Aparecer un mensaje en la parte inferior de la pgina con el nombre + del archivo y la posicin en este. Recuerde el nmero de lnea + para el paso 3. +NOTA: Quizs pueda ver la posicin del cursor en la esquina inferior derecha + de la pantalla. Esto ocurre cuando la opcin 'ruler' (regla) est + habilitada (consulte :help 'ruler' ) - 1. Mantenga pulsada la tecla Ctrl y pulse g . Aparece una lnea de estado - al final de la pantalla con el nombre del fichero y la lnea en la que - est situado. Recuerde el nmero de la lnea para el Paso 3. + 2. Pulse G para mover el cursor hasta la parte inferior del archivo. + Pulse gg para mover el cursor al inicio del archivo. - 2. Pulse Mayu-G para ir al final del fichero. + 3. Escriba el nmero de la lnea en la que estaba y despus G . Esto + le volver a la lnea en la que estaba cuando puls CTRL-G. - 3. Escriba el nmero de la lnea en la que estaba y despes Mayu-G. Esto - le volver a la lnea en la que estaba cuando puls Ctrl-g. - (Cuando escriba los nmeros NO se mostrarn en la pantalla). - - 4. Si se siente confiado en poder hacer esto ejecute los pasos 1 a 3. + 4. Si se siente seguro en poder hacer esto ejecute los pasos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 4.2: EL MANDATO SEARCH (buscar) + Leccin 4.2: EL COMANDO SEARCH (buscar) ** Escriba / seguido de una frase para buscar la frase. ** 1. En modo Normal pulse el carcter / . Fjese que tanto el carcter / como el cursor aparecen en la ltima lnea de la pantalla, lo mismo - que el mandato : . + que el comando : . 2. Escriba ahora errroor <INTRO>. Esta es la palabra que quiere buscar. - 3. Para repetir la bsqueda, simplemente pulse n . - Para busacar la misma frase en la direccin opuesta, pulse Mayu-N . + 3. Para repetir la bsqueda de la misma frase otra vez, simplemente pulse n . + Para buscar la misma frase en la direccin opuesta, pulse N . 4. Si quiere buscar una frase en la direccin opuesta (hacia arriba), - utilice el mandato ? en lugar de / . + utilice el comando ? en lugar de / . + + 5. Para regresar al lugar de donde proceda pulse CTRL-O (Mantenga pulsado + Ctrl mientras pulsa la letra o). Repita el proceso para regresar ms atrs. + CTRL-I va hacia adelante. ----> Cuando la bsqueda alcanza el final del fichero continuar desde el - principio. +---> "errroor" no es la forma correcta de escribir error, errroor es un error. - errroor no es la forma de deletrear error; errroor es un error. +NOTA: Cuando la bsqueda llega al final del archivo, continuar desde el + comienzo, a menos que la opcin 'wrapscan' haya sido desactivada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leccin 4.3: BSQUEDA PARA COMPROBAR PARNTESIS ** Pulse % para encontrar el parntesis correspondiente a ),] o } . ** - - 1. Site el cursor en cualquiera de los caracteres ), ] o } en la lnea de - abajo sealada con --->. + 1. Site el cursor en cualquiera de los caracteres (, [ o { en la lnea + inferior sealada con --->. 2. Pulse ahora el carcter % . - 3. El cursor debera situarse en el parntesis (, corchete [ o llave { - correspondiente. + 3. El cursor se mover a la pareja de cierre del parntesis, corchete + o llave correspondiente. + + 4. Pulse % para mover el cursor a la otra pareja del carcter. + + 5. Mueva el cursor a otro (,),[,],{ o } y vea lo que hace % . - 4. Pulse % para mover de nuevo el cursor al parntesis, corchete o llave - correspondiente. +---> Esto ( es una lnea de prueba con (, [, ], {, y } en ella. )) ----> Esto ( es una lnea de prueba con (, [, ], {, y } en ella. )). +NOTA: Esto es muy til en la deteccin de errores en un programa con + parntesis, corchetes o llaves sin pareja. + -Nota: Esto es muy til en la deteccin de errores en un programa con - parntesis, corchetes o llaves disparejos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 4.4: UNA FORMA DE CAMBIAR ERRORES + Leccin 4.4: EL COMANDO SUSTITUIR ** Escriba :s/viejo/nuevo/g para sustituir 'viejo' por 'nuevo'. ** - - 1. Mueva el cursor a la lnea de abajo sealada con --->. + 1. Mueva el cursor a la lnea inferior sealada con --->. 2. Escriba :s/laas/las/ <INTRO> . Tenga en cuenta que este mandato cambia slo la primera aparicin en la lnea de la expresin a cambiar. + + 3. Ahora escriba :/laas/la/g . Al aadir la opcin g esto significa + que har la sustitucin global en la lnea, cambiando todas las + ocurrencias del trmino "laas" en la lnea. ---> Laas mejores pocas para ver laas flores son laas primaveras. - 4. Para cambiar todas las apariciones de una expresin ente dos lneas - escriba :#,#s/viejo/nuevo/g donde #,# son los nmeros de las dos - lneas. Escriba :%s/viejo/nuevo/g para hacer los cambios en todo - el fichero. - - - - + 4. Para cambiar cada ocurrencia de la cadena de caracteres entre dos lneas, + Pulse :#,#s/viejo/nuevo/g donde #,# son los nmeros de lnea del rango + de lneas donde se realizar la sustitucin. + Pulse :%s/old/new/g para cambiar cada ocurrencia en todo el + archivo. + Pulse :%s/old/new/gc para encontrar cada ocurrencia en todo el + archivo, pidiendo confirmacin para + realizar la sustitucin o no. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIN 4 - 1. Ctrl-g muestra la posicin del cursor en el fichero y su estado. - Mayu-G mueve el cursor al final del fichero. Un nmero de lnea - seguido de Mayu-G mueve el cursor a la lnea con ese nmero. + 1. CTRL-G muestra la posicin del cursor en el fichero y su estado. + G mueve el cursor al final del archivo. + nmero G mueve el cursor a ese nmero de lnea. + gg mueve el cursor a la primera lnea del archivo. 2. Pulsando / seguido de una frase busca la frase hacia ADELANTE. Pulsando ? seguido de una frase busca la frase hacia ATRS. Despus de una bsqueda pulse n para encontrar la aparicin - siguiente en la misma direccin. + siguiente en la misma direccin o N para buscar en direccin opuesta. 3. Pulsando % cuando el cursor esta sobre (,), [,], { o } localiza la pareja correspondiente. - 4. Para cambiar viejo por nuevo en una lnea pulse :s/viejo/nuevo + 4. Para cambiar viejo en el primer nuevo en una lnea pulse :s/viejo/nuevo Para cambiar todos los viejo por nuevo en una lnea pulse :s/viejo/nuevo/g Para cambiar frases entre dos nmeros de lneas pulse :#,#s/viejo/nuevo/g Para cambiar viejo por nuevo en todo el fichero pulse :%s/viejo/nuevo/g @@ -499,11 +621,10 @@ Nota: Esto es muy til en la deteccin de errores en un programa con Leccin 5.1: CMO EJECUTAR UN MANDATO EXTERNO - ** Escriba :! seguido de un mandato externo para ejecutar ese mandato. ** - + ** Escriba :! seguido de un comando externo para ejecutar ese comando. ** - 1. Escriba el conocido mandato : para situar el cursor al final de la - pantalla. Esto le permitir introducir un mandato. + 1. Escriba el conocido comando : para situar el cursor al final de la + pantalla. Esto le permitir introducir un comando. 2. Ahora escriba el carcter ! (signo de admiracin). Esto le permitir ejecutar cualquier mandato del sistema. @@ -512,9 +633,11 @@ Nota: Esto es muy til en la deteccin de errores en un programa con le mostrar una lista de su directorio, igual que si estuviera en el smbolo del sistema. Si ls no funciona utilice !:dir . ---->Nota: De esta manera es posible ejecutar cualquier mandato externo. +NOTA: De esta manera es posible ejecutar cualquier comando externo, + tambin incluyendo argumentos. ---->Nota: Todos los mandatos : deben finalizarse pulsando <INTRO>. +NOTA: Todos los comando : deben finalizarse pulsando <INTRO>. + De ahora en adelante no siempre se mencionar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -522,10 +645,10 @@ Nota: Esto es muy til en la deteccin de errores en un programa con ** Para guardar los cambios hechos en un fichero, - escriba :w NOMBRE_DE_FICHERO. ** + escriba :w NOMBRE_DE_FICHERO ** - - 1. Escriba :!dir o :!ls para ver una lista de su directorio. + 1. Escriba :!dir o :!ls para ver una lista de los archivos + de su directorio. Ya sabe que debe pulsar <INTRO> despus de ello. 2. Elija un nombre de fichero que todava no exista, como TEST. @@ -533,210 +656,337 @@ Nota: Esto es muy til en la deteccin de errores en un programa con 3. Ahora escriba :w TEST (donde TEST es el nombre de fichero elegido). 4. Esta accin guarda todo el fichero (Vim Tutor) bajo el nombre TEST. - Para comprobarlo escriba :!dir de nuevo y vea su directorio. + Para comprobarlo escriba :!dir o :!ls de nuevo y vea su directorio. + +NOTA: Si saliera de Vim y volviera a entrar de nuevo con vim TEST , el + archivo sera una copia exacta del tutorial cuando lo guard. + + 5. Ahora elimine el archivo escribiendo (Windows): :!del TEST + o (Unix): :!rm TEST ----> Tenga en cuenta que si sale de Vim y entra de nuevo con el nombre de - fichero TEST, el fichero sera una copia exacta del tutor cuando lo - ha guardado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 5.3: UN MANDATO DE ESCRITURA SELECTIVO + Leccin 5.3: SELECCIONAR TEXTO PARA GUARDAR + - ** Para guardar parte del fichero escriba :#,# NOMBRE_DEL_FICHERO ** + ** Para guardar parte del archivo, escriba v movimiento :w ARCHIVO ** + 1. Mueva el cursor a esta lnea. - 1. Escriba de nuevo, una vez ms, :!dir o :!ls para obtener una lista - de su directorio y elija nombre de fichero adecuado, como TEST. + 2. Pulse v y mueva el cursor hasta el quinto elemento inferior. Vea que + el texto es resaltado. - 2. Mueva el cursor al principio de la pantalla y pulse Ctrl-g para saber - el nmero de la lnea correspondiente. RECUERDE ESTE NMERO! + 3. Pulse el carcter : en la parte inferior de la pantalla aparecer + :'<,'> - 3. Ahora mueva el cursor a la ltima lnea de la pantalla y pulse Ctrl-g - de nuevo. RECUERDE TAMBIN ESTE NMERO! + 4. Pulse w TEST , donde TEST es un nombre de archivo que an no existe. + Verifique que :'<,'>w TEST antes de pulsar <INTRO>. - 4. Para guardar SOLAMENTE una parte de un fichero, escriba :#,# w TEST - donde #,# son los nmeros que usted ha recordado (primera lnea, - ltima lnea) y TEST es su nombre de dichero. + 5. Vim escribir las lneas seleccionadas en el archivo TEST. Utilice + :!dir o :!ls para verlo. No lo elimine todava! Lo utilizaremos + en la siguiente leccin. - 5. De nuevo, vea que el fichero esta ah con :!dir pero NO lo borre. +NOTA: Al pulsar v inicia la seleccin visual. Puede mover el cursor para + hacer la seleccin ms grande o pequea. Despus puede utilizar un + operador para hacer algo con el texto. Por ejemplo, d eliminar + el texto seleccionado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leccin 5.4: RECUPERANDO Y MEZCLANDO FICHEROS + ** Para insertar el contenido de un fichero escriba :r NOMBRE_DEL_FICHERO ** - 1. Escriba :!dir para asegurarse de que su fichero TEST del ejercicio - anterior est presente. + 1. Site el cursor justo por encima de esta lnea. - 2. Situe el cursor al principio de esta pantalla. +NOTA: Despus de ejecutar el paso 2 ver texto de la leccin 5.3. Despus + DESCIENDA hasta ver de nuevo esta leccin. -NOTA: Despus de ejecutar el paso 3 se ver la Leccin 5.3. Luego muvase - hacia ABAJO para ver esta leccin de nuevo. + 2. Ahora recupere el archivo TEST utilizando el comando :r TEST donde + TEST es el nombre que ha utilizado. + El archivo que ha recuperado se colocar debajo de la lnea donde + se encuentra el cursor. - 3. Ahora recupere el fichero TEST utilizando el mandato :r TEST donde - TEST es el nombre del fichero. + 3. Para verificar que se ha recuperado el archivo, suba el cursor y + compruebe que ahora hay dos copias de la leccin 5.3, la original y + la versin del archivo. -NOTA: El fichero recuperado se sita a partir de la posicin del cursor. +NOTA: Tambin puede leer la salida de un comando externo. Por ejemplo, + :r !ls lee la salida del comando ls y lo pega debajo de la lnea + donde se encuentra el cursor. - 4. Para verificar que el fichero ha sido recuperado, mueva el cursor hacia - arriba y vea que hay dos copias de la Leccin 5.3, la original y la - versin del fichero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIN 5 - 1. :!mandato ejecuta un mandato externo. + 1. :!comando ejecuta un comando externo. Algunos ejemplos tiles son: - :!dir - muestra el contenido de un directorio. - :!del NOMBRE_DE_FICHERO - borra el fichero NOMBRE_DE FICHERO. - - 2. :#,#w NOMBRE_DE _FICHERO guarda desde la lnea # hasta la # en el - fichero NOMBRE_DE_FICHERO. - - 3. :r NOMBRE_DE _FICHERO recupera el fichero del disco NOMBRE_DE FICHERO - y lo inserta en el fichero en curso a partir de la posicin del cursor. - + (Windows) (Unix) + :!dir :!ls - muestra el contenido de un directorio. + :!del ARCHIVO :!rm ARCHIVO - borra el fichero ARCHIVO. + 2. :w ARCHIVO escribe el archivo actual de Vim en el disco con el + nombre de ARCHIVO. + 3. v movimiento :w ARCHIVO guarda las lneas seleccionadas visualmente + en el archivo ARCHIVO. + 4. :r ARCHIVO recupera del disco el archivo ARCHIVO y lo pega debajo + de la posicin del cursor. + 5. :r !dir lee la salida del comando dir y lo pega debajo de la + posicin del cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 6.1: EL MANDATO OPEN (abrir) + Leccin 6.1: EL COMANDO OPEN ** Pulse o para abrir una lnea debajo del cursor - y situarle en modo Insert ** + y situarle en modo Insertar ** + 1. Mueva el cursor a la lnea inferior sealada con --->. - 1. Mueva el cursor a la lnea de abajo sealada con --->. + 2. Pulse la letra minscula o para abrir una lnea por DEBAJO del cursor + y situarle en modo Insertar. + + 3. Ahora escriba algn texto y despus pulse <ESC> para salir del modo + insertar. - 2. Pulse o (minscula) para abrir una lnea por DEBAJO del cursor - y situarle en modo Insert. +---> Despus de pulsar o el cursor se sita en la lnea abierta en modo Insertar. - 3. Ahora copie la lnea sealada con ---> y pulse <ESC> para salir del - modo Insert. + 4. Para abrir una lnea por ENCIMA del cursor, simplemente pulse una O + mayscula, en lugar de una o minscula. Pruebe este en la lnea siguiente. + +---> Abra una lnea sobre esta pulsando O cuando el cursor est en esta lnea. ----> Luego de pulsar o el cursor se sita en la lnea abierta en modo Insert. - 4. Para abrir una lnea por encima del cursor, simplemente pulse una O - mayscula, en lugar de una o minscula. Pruebe este en la lnea siguiente. -Abra una lnea sobre sta pulsando Mayu-O cuando el cursor est en esta lnea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 6.2: EL MANDATO APPEND (aadir) + Leccin 6.2: EL COMANDO APPEND (aadir) + ** Pulse a para insertar texto DESPUS del cursor. ** + 1. Mueva el cursor al inicio de la primera lnea inferior sealada con --->. - 1. Mueva el cursor al final de la primera lnea de abajo sealada con ---> - pulsando $ en modo Normal. + 2. Escriba e hasta que el cursor est al final de ln . - 2. Escriba una a (minscula) para aadir texto DESPUS del carcter - que est sobre el cursor. (A mayscula aade texto al final de la lnea). + 3. Escriba una a (minscula) para aadir texto DESPUS del cursor. -Nota: Esto evita el pulsar i , el ltimo carcter, el texto a insertar, - <ESC>, cursor a la derecha y, finalmente, x , slo para aadir algo - al final de una lnea! + 4. Complete la palabra como en la lnea inferior. Pulse <ESC> para salir + del modo insertar. + + 5. Utilice e para moverse hasta la siguiente palabra incompleta y + repita los pasos 3 y 4. - 3. Complete ahora la primera lnea. Ntese que append es exactamente lo - mismo que modo Insert, excepto por el lugar donde se inserta el texto. +---> Esta ln le permit prati cmo aad texto a una lnea. +---> Esta lnea le permitir practicar cmo aadir texto a una lnea. ----> Esta lnea le permitir praticar ----> Esta lnea le permitir praticar el aadido de texto al final de una lnea. +NOTA: a, i y A todos entran en el modo Insertar, la nica diferencia es + dnde ubican los caracteres insertados. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 6.3: OTRA VERSIN DE REPLACE (remplazar) + Leccin 6.3: OTRA VERSIN DE REPLACE (remplazar) + ** Pulse una R mayscula para sustituir ms de un carcter. ** + 1. Mueva el cursor a la primera lnea inferior sealada con --->. Mueva + el cursor al inicio de la primera xxx . - 1. Mueva el cursor a la primera lnea de abajo sealada con --->. + 2. Ahora pulse R y escriba el nmero que aparece en la lnea inferior, + esto reemplazar el texto xxx . + + 3. Pulse <ESC> para abandonar el modo Reemplazar. Observe que el resto de + la lnea permanece sin modificaciones. - 2. Site el cursor al comienzo de la primera palabra que sea diferente - de las de la segunda lnea marcada con ---> (la palabra 'anterior'). + 4. Repita los pasos para reemplazar el texto xxx que queda. - 3. Ahora pulse R y sustituya el resto del texto de la primera lnea - escribiendo sobre el viejo texto para que la primera lnea sea igual - que la segunda. +---> Sumar 123 a xxx da un resultado de xxx. +---> Sumar 123 a 456 da un resultado de 579. ----> Para hacer que esta lnea sea igual que la anterior use las teclas. ----> Para hacer que esta lnea sea igual que la siguiente escriba R y el texto. +NOTA: El modo Reemplazar es como el modo Insertar, pero cada carcter escrito + elimina un carcter ya existente. - 4. Ntese que cuando pulse <ESC> para salir, el texto no alterado permanece. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 6.4: COPIAR Y PEGAR TEXTO -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 6.4: FIJAR OPCIONES + ** Utilice el operador y para copiar texto y p para pegarlo. ** - ** Fijar una opcin de forma que una bsqueda o sustitucin ignore la caja ** - (Para el concepto de caja de una letra, vase la nota al final del fichero) + 1. Mueva el cursor a la lnea inferior marcada con ---> y posicione el + cursor despus de "a)". + 2. Inicie el modo Visual con v y mueva el cursor justo antes de "primer". - 1. Busque 'ignorar' introduciendo: - /ignorar - Repita varias veces la bsque pulsando la tecla n + 3. Pulse y para copiar ("yank") el texto resaltado. - 2. Fije la opcin 'ic' (Ignorar la caja de la letra) escribiendo: - :set ic + 4. Mueva el cursor al final de la siguiente lnea mediante: j$ - 3. Ahora busque 'ignorar' de nuevo pulsando n - Repita la bsqueda varias veces ms pulsando la tecla n + 5. Pulse p para poner (pegar) el texto. Despus escriba: el segundo <ESC>. - 4. Fije las opciones 'hlsearch' y 'insearch': - :set hls is + 6. Utilice el modo visual para seleccionar " elemento.", y cpielo con y + mueva el cursor al final de la siguiente lnea con j$ y pegue el texto + recin copiado con p . - 5. Ahora introduzca la orden de bsqueda otra vez, y vea qu pasa: - /ignore +---> a) este es el primer elemento. + b) +NOTA: Tambin puede utilizar y como un operador: yw copia una palabra, + yy copia la lnea completa donde est el cursor, despus p pegar + esa lnea. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIN 6 + Leccin 6.5: ACTIVAR (SET) UNA OPCIN - 1. Pulsando o abre una lnea por DEBAJO del cursor y sita el cursor en - la lnea abierta en modo Insert. - Pulsando una O mayscula se abre una lnea SOBRE la que est el cursor. + ** Active una opcin para buscar o sustituir ignorando si est + en maysculas o minsculas el texto. ** - 2. Pulse una a para insertar texto DESPUS del carcter sobre el cursor. - Pulsando una A mayscula aade automticamente texto al final de la - lnea. + 1. Busque la cadena de texto 'ignorar' escribiendo: /ignorar <INTRO> + Repita la bsqueda varias veces pulsando n . - 3. Pulsando una R mayscula se entra en modo Replace hasta que, para salir, - se pulse <ESC>. + 2. Active la opcin 'ic' (Ignore case o ignorar maysculas y minsculas) + mediante: :set ic - 4. Escribiendo :set xxx fija la opcin xxx + 3. Ahora busque de nuevo 'ignorar' pulsando n + Observe que ahora tambin se encuentran Ignorar e IGNORAR. + 4. Active las opciones 'hlsearch' y 'incsearch' escribiendo: :set hls is + 5. Ahora escriba de nuevo el comando de bsqueda y vea qu ocurre: /ignore <INTRO> + 6. Para inhabilitar el ignorar la distincin de maysculas y minsculas + escriba: :set noic +NOTA: Para eliminar el resaltado de las coincidencias escriba: :nohlsearch +NOTA: Si quiere ignorar las maysculas y minsculas, solo para un comando + de bsqueda, utilice \c en la frase: /ignorar\c <INTRO> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RESUMEN DE LA LECCIN 6 + 1. Escriba o para abrir una lnea por DEBAJO de la posicin del cursor y + entrar en modo Insertar. + Escriba O para abrir una lnea por ENCIMA de la posicin del cursor y + entrar en modo Insertar + + 2. Escriba a para insertar texto DESPUS del cursor. + Escriba A para insertar texto al final de la lnea. + + 3. El comando e mueve el cursor al final de una palabra. + + 4. El operador y copia (yank) texto, p lo pega (pone). + + 5. Al escribir una R mayscula entra en el modo Reemplazar hasta que + se pulsa <ESC> . + + 6. Al escribir ":set xxx" activa la opcin "xxx". Algunas opciones son: + 'ic' 'ignorecase' ignorar maysculas/minsculas al buscar + 'is' 'incsearch' mostrar las coincidencias parciales para la bsqueda + de una frase + 'hls' 'hlsearch' resalta todas las coincidencias de la frases + Puedes utilizar tanto los nombre largos o cortos de las opciones. + + 7. Aade "no" para inhabilitar una opcin: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leccin 7: MANDATOS PARA LA AYUDA EN LNEA + Leccin 7: OBTENER AYUDA - ** Utilice el sistema de ayuda en lnea ** + ** Utilice el sistema de ayuda en lnea ** - Vim dispone de un sistema de ayuda en lnea. Para activarlo, pruebe una + Vim dispone de un sistema de ayuda en lnea. Para comenzar, pruebe una de estas tres formas: - pulse la tecla <AYUDA> (si dispone de ella) - pulse la tecla <F1> (si dispone de ella) - escriba :help <INTRO> - Escriba :q <INTRO> para cerrar la ventana de ayuda. + Lea el texto en la ventana de ayuda para descubrir cmo funciona la ayuda. + Escriba CTRL-W CTRL-W para saltar de una ventana a otra. + Escriba :q <INTRO> para cerrar la ventana de ayuda. Puede encontrar ayuda en casi cualquier tema aadiendo un argumento al - mandato :help mandato. Pruebe stos: + comando :help. Pruebe stos (no olvide pulsar <INTRO>): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 7.2: CREAR UN SCRIPT DE INICIO + + + ** Habilitar funcionalidades en Vim ** + + Vim tiene muchas ms funcionalidades que Vi, pero algunas estn + inhabilitadas de manera predeterminada. + Para empezar a utilizar ms funcionalidades debera crear un archivo + llamado "vimrc". + + 1. Comience a editar el archivo "vimrc". Esto depende de su sistema: + :e ~/.vimrc para Unix + :e ~/_vimrc para Windows + + 2. Ahora lea el contenido del archivo "vimrc" de ejemplo: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Guarde el archivo mediante: + :w + + La prxima vez que inicie Vim, este usar el resaltado de sintaxis. + Puede aadir todos sus ajustes preferidos a este archivo "vimrc". + Para ms informacin escriba :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leccin 7.3: COMPLETADO + + + ** Completado de la lnea de comandos con CTRL-D o <TAB> ** + + 1. Asegrese de que Vim no est en el modo compatible: :set nocp + + 2. Vea qu archivos existen en el directorio con: :!ls o :!dir + + 3. Escriba el inicio de un comando: :e + + 4. Pulse CTRL-D y Vim mostrar una lista de comandos que empiezan con "e". + + 5. Aada d<TAB> y Vim completar el nombre del comando a ":edit". + + 6. Ahora aada un espacio y el inicio del nombre de un archivo: :edit FIL + + 7. Pulse <TAB>. Vim completar el nombre (si solo hay uno). + +NOTA: El completado funciona con muchos comandos. Solo pulse CTRL-D o + <TAB>. Es especialmente til para :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RESUMEN DE LA LECCIN 7 + + + 1. Escriba :help o pulse <F1> o <HELP> para abrir la ventana de ayuda. + + 2. Escriba :help cmd para encontrar ayuda sobre cmd . + + 3. Escriba CTRL-W CTRL-W para saltar a otra ventana. + + 4. Escriba :q para cerrar la ventana de ayuda. + + 5. Cree un fichero vimrc de inicio para guardar sus ajustes preferidos. + + 6. Cuando escriba un comando : pulse CTRL-D para ver posibles opciones. + Pulse <TAB> para utilizar una de las opciones de completado. + + + + - :help w <INTRO> - :help c_<T <INTRO> - :help insert-index <INTRO> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -744,13 +994,15 @@ Nota: Esto evita el pulsar i , el ltimo carcter, el texto a insertar, Aqu concluye el tutor de Vim. Est pensado para dar una visin breve del editor Vim, lo suficiente para permitirle usar el editor de forma bastante sencilla. Est muy lejos de estar completo pues Vim tiene muchsimos ms - mandatos. + comandos. Lea el siguiente manual de usuario: ":help user-manual". Para lecturas y estudios posteriores se recomienda el libro: - Learning the Vi Editor - por Linda Lamb - Editorial: O'Reilly & Associates Inc. - Es un buen libro para llegar a saber casi todo lo que desee hacer con Vi. - La sexta edicin incluye tambin informacin sobre Vim. + Vim - Vi Improved - de Steve Oualline + Editado por: New Riders + El primer libro dedicado completamente a Vim. Especialmente til para + recin principiantes. + Tiene muchos ejemplos e imgenes. + Vea https://iccf-holland.org/click5.html Este tutorial ha sido escrito por Michael C. Pierce y Robert K. Ware, Colorado School of Mines utilizando ideas suministradas por Charles Smith, @@ -760,10 +1012,12 @@ Nota: Esto evita el pulsar i , el ltimo carcter, el texto a insertar, Modificado para Vim por Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + Traducido del ingls por: - Eduardo F. Amatria - Correo electrnico: eferna1@platea.pntic.mec.es + * Eduardo F. Amatria + Correo electrnico: eferna1@platea.pntic.mec.es + * Victorhck + Correo electrnico: victorhck@opensuse.org ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/runtime/tutor/tutor.es.utf-8 b/runtime/tutor/tutor.es.utf-8 index b7cb7209f..a04d453f7 100644 --- a/runtime/tutor/tutor.es.utf-8 +++ b/runtime/tutor/tutor.es.utf-8 @@ -1,84 +1,84 @@ =============================================================================== -= B i e n v e n i d o a l t u t o r d e V I M - Versión 1.4 = += B i e n v e n i d o a l t u t o r d e V I M - Versión 1.7 = =============================================================================== - Vim es un editor muy potente que dispone de muchos mandatos, demasiados + Vim es un editor muy potente que dispone de muchos comandos, demasiados para ser explicados en un tutor como éste. Este tutor está diseñado - para describir suficientes mandatos para que usted sea capaz de + para describir suficientes comandos para que usted sea capaz de aprender fácilmente a usar Vim como un editor de propósito general. - El tiempo necesario para completar el tutor es aproximadamente de 25-30 + El tiempo necesario para completar el tutor es aproximadamente de 30 minutos, dependiendo de cuánto tiempo se dedique a la experimentación. - Los mandatos de estas lecciones modificarán el texto. Haga una copia de + Los comandos de estas lecciones modificarán el texto. Haga una copia de este fichero para practicar (con «vimtutor» esto ya es una copia). Es importante recordar que este tutor está pensado para enseñar con - la práctica. Esto significa que es necesario ejecutar los mandatos - para aprenderlos adecuadamente. Si únicamente se lee el texto, se - olvidarán los mandatos. + la práctica. Esto significa que es necesario ejecutar los comandos + para aprenderlos adecuadamente. Si únicamente lee el texto, ¡se le + olvidarán los comandos. - Ahora, asegúrese de que la tecla de bloqueo de mayúsculas no está + 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. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.1: MOVIMIENTOS DEL CURSOR + Lección 1.1: MOVER EL CURSOR - ** Para mover el cursor, pulse las teclas h,j,k,l de la forma que se indica. ** + ** Para mover el cursor, pulse las teclas h,j,k,l de la forma indicada. ** ^ - k Indicación: La tecla h está a la izquierda y mueve a la izquierda. - < h l > La tecla l está a la derecha y mueve a la derecha. + k Indicación: La tecla h está a la izquierda y lo mueve a la izquierda. + < h l > La tecla l está a la derecha y lo mueve a la derecha. j La tecla j parece una flecha que apunta hacia abajo. v 1. Mueva el cursor por la pantalla hasta que se sienta cómodo con ello. - 2. Mantenga pulsada la tecla j hasta que se repita «automágicamente». ----> Ahora ya sabe como llegar a la lección siguiente. + 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.2. -Nota: Si alguna vez no está seguro sobre algo que ha tecleado, pulse <ESC> +NOTA: Si alguna vez no está seguro sobre algo que ha tecleado, pulse <ESC> para situarse en modo Normal. Luego vuelva a teclear la orden que deseaba. -Nota: Las teclas de movimiento del cursor también funcionan. Pero usando +NOTA: Las teclas de movimiento del cursor también funcionan. Pero usando hjkl podrá moverse mucho más rápido una vez que se acostumbre a ello. + ¡De verdad! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.2: ENTRANDO Y SALIENDO DE VIM + Lección 1.2: SALIR DE VIM - ¡¡ NOTA: Antes de ejecutar alguno de los pasos siguientes lea primero + ¡¡ NOTA: Antes de ejecutar alguno de los siguientes pasos lea primero la lección entera!! 1. Pulse la tecla <ESC> (para asegurarse de que está en modo Normal). - 2. Escriba: :q! <INTRO> + 2. Escriba: :q! <INTRO> + Esto provoca la salida del editor DESCARTANDO cualquier cambio que haya hecho. ----> Esto provoca la salida del editor SIN guardar ningún cambio que se haya - hecho. Si quiere guardar los cambios y salir escriba: - :wq <INTRO> + 3. Regrese aquí ejecutando el comando que le trajo a este tutor. + Éste puede haber sido: vimtutor <INTRO> - 3. Cuando vea el símbolo del sistema, escriba el mandato que le trajo a este - tutor. Éste puede haber sido: vimtutor <INTRO> - Normalmente se usaría: vim tutor <INTRO> + 4. Si ha memorizado estos pasos y se siente con confianza, ejecute los + pasos 1 a 3 para salir y volver a entrar al editor. ----> 'vim' significa entrar al editor, 'tutor' es el fichero a editar. +NOTA: :q! <INTRO> 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. - 4. Si ha memorizado estos pasos y se se siente con confianza, ejecute los - pasos 1 a 3 para salir y volver a entrar al editor. Después mueva el - cursor hasta la Lección 1.3. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.3: EDICIÓN DE TEXTO - BORRADO -** Estando en modo Normal pulse x para borrar el carácter sobre el cursor. **j +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 1.3: EDITAR TEXTO - BORRAR + ** Pulse x para eliminar el carácter bajo el cursor. ** 1. Mueva el cursor a la línea de abajo señalada con --->. - 2. Para corregir los errores, mueva el cursor hasta que esté bajo el + 2. Para corregir los errores, mueva el cursor hasta que esté sobre el carácter que va a ser borrado. - 3. Pulse la tecla x para borrar el carácter sobrante. + 3. Pulse la tecla x para eliminar el carácter no deseado. 4. Repita los pasos 2 a 4 hasta que la frase sea la correcta. @@ -86,20 +86,20 @@ Nota: Las teclas de movimiento del cursor también funcionan. Pero usando 5. Ahora que la línea esta correcta, continúe con la Lección 1.4. - NOTA: A medida que vaya avanzando en este tutor no intente memorizar, aprenda practicando. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 1.4: EDICIÓN DE TEXTO - INSERCIÓN - ** Estando en modo Normal pulse i para insertar texto. ** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 1.4: EDITAR TEXTO - BORRAR + ** Pulse i para insertar texto. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. - 2. Para que la primera línea sea igual a la segunda, mueva el cursor bajo el - primer carácter que sigue al texto que ha de ser insertado. + 2. Para hacer que la primera línea sea igual que la segunda, mueva el + cursor hasta que esté sobre el carácter ANTES del cual el texto va a ser + insertado. 3. Pulse i y escriba los caracteres a añadir. @@ -109,9 +109,55 @@ 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 al resumen que está más - abajo. + 5. Cuando se sienta cómodo insertando texto pase vaya a la lección 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 1.5: EDITAR TEXTO - AÑADIR + + + ** Pulse A para añadir texto. ** + + 1. Mueva el cursor a la primera línea inferior marcada con --->. + No importa sobre qué carácter está el cursor en esta línea. + + 2. Pulse A y escriba el texto necesario. + + 3. Cuando el texto haya sido añadido pulse <ESC> para volver al modo Normal. + 4. Mueva el cursor a la segunda línea marcada con ---> y repita los + pasos 2 y 3 para corregir esta frase. + +---> Falta algún texto en es + Falta algún texto en esta línea. +---> 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. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 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! + + 2. En el símbolo del sistema escriba este comando: vim archivo.txt <INTRO> + 'vim' es el comando para arrancar el editor Vim, 'archivo.txt' + es el nombre del archivo que quiere editar + Utilice el nombre de un archivo que pueda cambiar. + + 3. Inserte y elimine texto como ya aprendió en las lecciones anteriores. + + 4. Guarde el archivo con los cambios y salga de Vim con: :wq <INTRO> + + 5. Si ha salido de vimtutor en el paso 1 reinicie vimtutor y baje hasta + el siguiente sumario. + + 6. Después de leer los pasos anteriores y haberlos entendido: hágalos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 1 @@ -120,55 +166,59 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar, 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. h (izquierda) j (abajo) k (arriba) l (derecha) - 2. Para acceder a Vim (desde el símbolo del sistema %) escriba: - vim FILENAME <INTRO> + 2. Para acceder a Vim desde el símbolo del sistema escriba: + vim NOMBREARCHIVO <INTRO> 3. Para salir de Vim escriba: <ESC> :q! <INTRO> para eliminar todos los cambios. + O escriba: <ESC> :wq <INTRO> para guardar los cambios. - 4. Para borrar un carácter sobre el cursor en modo Normal pulse: x + 4. Para borrar un carácter bajo el cursor en modo Normal pulse: x - 5. Para insertar texto en la posición del cursor estando en modo Normal: - pulse i escriba el texto pulse <ESC> + 5. Para insertar o añadir texto escriba: + i escriba el texto a insertar <ESC> inserta el texto antes del cursor + A escriba el texto a añadir <ESC> añade texto al final de la línea -NOTA: Pulsando <ESC> se vuelve al modo Normal o cancela un mandato no deseado - o incompleto. +NOTA: Pulsando <ESC> se vuelve al modo Normal o cancela una orden no deseada + o incompleta. Ahora continúe con la Lección 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.1: MANDATOS PARA BORRAR + Lección 2.1: COMANDOS PARA BORRAR - ** Escriba dw para borrar hasta el final de una palabra ** + ** Escriba dw para borrar una palabra ** 1. Pulse <ESC> para asegurarse de que está en el modo Normal. - 2. Mueva el cursor a la línea de abajo señalada con --->. + 2. Mueva el cursor a la línea inferior señalada con --->. 3. Mueva el cursor al comienzo de una palabra que desee borrar. 4. Pulse dw para hacer que la palabra desaparezca. - - NOTA: Las letras dw aparecerán en la última línea de la pantalla cuando - las escriba. Si escribe algo equivocado pulse <ESC> y comience de nuevo. - + NOTA: La letra d aparecerá en la última línea inferior derecha + de la pantalla mientras la escribe. Vim está esperando que escriba w . + Si ve otro carácter que no sea d escribió algo mal, pulse <ESC> y + comience de nuevo. ---> 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 2.2: MÁS MANDATOS PARA BORRAR + Lección 2.2: MÁS COMANDOS PARA BORRAR ** Escriba d$ para borrar hasta el final de la línea. ** - 1. Pulse <ESC> para asegurarse de que está en el modo Normal. - 2. Mueva el cursor a la línea de abajo señalada con --->. + 2. Mueva el cursor a la línea inferior señalada con --->. 3. Mueva el cursor al final de la línea correcta (DESPUÉS del primer . ). @@ -176,319 +226,391 @@ 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. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 2.3: SOBRE OPERADORES Y MOVIMIENTOS + + Muchos comandos que cambian texto están compuestos por un operador y un + movimiento. + El formato para eliminar un comando con el operador de borrado d es el + siguiente: + d movimiento + Donde: + d - es el operador para borrar. + movimiento - es sobre lo que el comando va a operar (lista inferior). + Una lista resumida de movimientos: + w - hasta el comienzo de la siguiente palabra, EXCLUYENDO su primer + carácter. + e - hasta el final de la palabra actual, INCLUYENDO su primer carácter. + $ - hasta el final de la línea, INCLUYENDO el último carácter. +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.3: SOBRE MANDATOS Y OBJETOS + Lección 2.4: UTILIZAR UN CONTADOR PARA UN MOVIMIENTO - El formato del mandato de borrar d es como sigue: + ** Al escribir un número antes de un movimiento, lo repite esas veces. ** - [número] d objeto O d [número] objeto - donde: - número - es cuántas veces se ha de ejecutar el mandato (opcional, defecto=1). - d - es el mandato para borrar. - objeto - es sobre lo que el mandato va a operar (lista, abajo). + 1. Mueva el cursor al comienzo de la línea marcada con --->. - Una lista corta de objetos: - w - desde el cursor hasta el final de la palabra, incluyendo el espacio. - e - desde el cursor hasta el final de la palabra, SIN incluir el espacio. - $ - desde el cursor hasta el final de la línea. + 2. Escriba 2w para mover el cursor dos palabras hacia adelante. + + 3. Escriba 3e para mover el cursor al final de la tercera palabra hacia + adelante. + + 4. Escriba 0 (cero) para colocar el cursor al inicio de la línea. + + 5. Repita el paso 2 y 3 con diferentes números. + +---> Esto es solo una línea con palabra donde poder moverse. + + 6. Pase a la lección 2.5. -NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal - sin un mandato moverá el cursor como se especifica en la lista de objetos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.4: UNA EXCEPCIÓN AL 'MANDATO-OBJETO' + Lección 2.5: UTILIZAR UN CONTADOR PARA BORRAR MAS + + + ** Al escribir un número con un operador lo repite esas veces. ** + + En combinación con el operador de borrado y el movimiento mencionado + anteriormente, añada un contador antes del movimiento para eliminar más: + d número movimiento + + 1. Mueva el cursos a la primera palabra en MAYÚSCULAS en la línea + marcada con --->. + + 2. Escriba d2w para eliminar las dos palabras en MAYÚSCULAS. + + 3. Repita los pasos 1 y 2 con diferentes contadores para eliminar + las siguientes palabras en MAYÚSCULAS con un comando. + +---> esta ABC DE serie FGHI JK LMN OP de palabras ha sido Q RS TUV limpiada. - ** Escriba dd para borrar una línea entera. ** - Debido a la frecuencia con que se borran líneas enteras, los diseñadores - de Vim decidieron que sería más fácil el escribir simplemente dos des en - una fila para borrar una línea. - 1. Mueva el cursor a la segunda línea de la lista de abajo. - 2. Escriba dd para borrar la línea. - 3. Muévase ahora a la cuarta línea. - 4. Escriba 2dd (recuerde número-mandato-objeto) para borrar las dos - líneas. - 1) Las rosas son rojas, - 2) El barro es divertido, - 3) El cielo es azul, - 4) Yo tengo un coche, - 5) Los relojes marcan la hora, - 6) El azúcar es dulce, - 7) Y así eres tú. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 2.5: EL MANDATO DESHACER + Lección 2.6: OPERACIÓN EN LÍNEAS + + + ** Escriba dd para eliminar una línea completa. ** + Debido a la frecuencia con que se elimina una línea completa, los + diseñadores de Vi, decidieron que sería más sencillo simplemente escribir + dos letras d para eliminar una línea. - ** Pulse u para deshacer los últimos mandatos, + 1. Mueva el cursor a la segunda línea del párrafo inferior. + 2. Escriba dd para eliminar la línea. + 3. Ahora muévase a la cuarta línea. + 4. Escriba 2dd para eliminar dos líneas a la vez. + +---> 1) Las rosas son rojas, +---> 2) El barro es divertido, +---> 3) Las violetas son azules, +---> 4) Tengo un coche, +---> 5) Los relojes dan la hora, +---> 6) El azúcar es dulce +---> 7) Y también lo eres tú. + +La duplicación para borrar líneas también funcionan con los operadores +mencionados anteriormente. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 2.7: EL MANDATO DESHACER + + + ** Pulse u para deshacer los últimos comandos, U para deshacer una línea entera. ** - 1. Mueva el cursor a la línea de abajo señalada con ---> y sitúelo bajo el + 1. Mueva el cursor a la línea inferior señalada con ---> y sitúelo bajo el primer error. - 2. Pulse x para borrar el primer caráter erróneo. - 3. Pulse ahora u para deshacer el último mandato ejecutado. - 4. Ahora corrija todos los errores de la línea usando el mandato x. + 2. Pulse x para borrar el primer carácter no deseado. + 3. Pulse ahora u para deshacer el último comando ejecutado. + 4. Ahora corrija todos los errores de la línea usando el comando x. 5. Pulse ahora U mayúscula para devolver la línea a su estado original. 6. Pulse ahora u unas pocas veces para deshacer lo hecho por U y los - mandatos previos. + comandos previos. 7. Ahora pulse CTRL-R (mantenga pulsada la tecla CTRL y pulse R) unas - pocas veces para volver a ejecutar los mandatos (deshacer lo deshecho). + cuantas veces para volver a ejecutar los comandos (deshacer lo deshecho). ---> Corrrija los errores dee esttta línea y vuuelva a ponerlos coon deshacer. - 8. Estos mandatos son muy útiles. Ahora pase al resumen de la Lección 2. + 8. Estos son unos comandos muy útiles. Ahora vayamos al resumen de la + lección 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 2 - 1. Para borrar desde el cursor hasta el final de una palabra pulse: dw - 2. Para borrar desde el cursor hasta el final de una línea pulse: d$ - 3. Para borrar una línea entera pulse: dd +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RESUMEN DE LA LECCIÓN 2 - 4. El formato de un mandato en modo Normal es: + 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 + 3. Para borrar desde el cursor hasta el final de una línea pulse: d$ + 4. Para borrar una línea entera pulse: dd - [número] mandato objeto O mandato [número] objeto + 5. Para repetir un movimiento precédalo con un número: 2w + 6. El formato para un comando de cambio es: + operador [número] movimiento donde: - número - es cuántas veces se ha de ejecutar el mandato - mandato - es lo que hay que hacer, por ejemplo, d para borrar - objeto - es sobre lo que el mandato va a operar, por ejemplo - w (palabra), $ (hasta el final de la línea), etc. + comando - es lo que hay que hacer, por ejemplo, d para borrar + [número] - es un número opcional para repetir el movimiento + movimiento - se mueve sobre el texto sobre el que operar, como + w (palabra), $ (hasta el final de la línea), etc. + 7. Para moverse al inicio de la línea utilice un cero: 0 - 5. Para deshacer acciones previas pulse: u (u minúscula) + 8. Para deshacer acciones previas pulse: u (u minúscula) Para deshacer todos los cambios de una línea pulse: U (U mayúscula) - Para deshacer lo deshecho pulse: CTRL-R + Para deshacer lo deshecho pulse: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.1: EL MANDATO «PUT» (poner) + Lección 3.1: EL COMANDO «PUT» (poner) - ** Pulse p para poner lo último que ha borrado después del cursor. ** +** Pulse p para poner (pegar) después del cursor lo último que ha borrado. ** - 1. Mueva el cursor al final de la lista de abajo. + 1. Mueva el cursor a la primera línea inferior marcada con --->. - 2. Escriba dd para borrar la línea y almacenarla en el buffer de Vim. + 2. Escriba dd para borrar la línea y almacenarla en un registro de Vim. - 3. Mueva el cursor a la línea que debe quedar por debajo de la - línea a mover. + 3. Mueva el cursor a la línea c) por ENCIMA de donde debería estar + la línea eliminada. - 4. Estando en mod Normal, pulse p para restituir la línea borrada. + 4. Pulse p para pegar la línea borrada por debajo del cursor. 5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto. - d) ¿Puedes aprenderla tú? - b) Las violetas son azules, - c) La inteligencia se aprende, - a) Las rosas son rojas, +---> d) ¿Puedes aprenderla tú? +---> b) Las violetas son azules, +---> c) La inteligencia se aprende, +---> a) Las rosas son rojas, + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.2: EL MANDATO «REPLACE» (remplazar) - + Lección 3.2: EL COMANDO REEMPLAZAR - ** Pulse r y un carácter para sustituir el carácter sobre el cursor. ** + ** Pulse rx para reemplazar el carácter bajo el cursor con x . ** - 1. Mueva el cursor a la primera línea de abajo señalada con --->. + 1. Mueva el cursor a la primera línea inferior marcada con --->. - 2. Mueva el cursor para situarlo bajo el primer error. + 2. Mueva el cursor para situarlo sobre el primer error. - 3. Pulse r y el carácter que debe sustituir al erróneo. + 3. Pulse r y después el carácter que debería ir ahí. - 4. Repita los pasos 2 y 3 hasta que la primera línea esté corregida. + 4. Repita los pasos 2 y 3 hasta que la primera sea igual a la segunda. ---> ¡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. - +NOTA: Recuerde que debería aprender practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 3.3: EL MANDATO «CHANGE» (cambiar) + Lección 3.3: EL COMANDO CAMBIAR - ** Para cambiar parte de una palabra o toda ella escriba cw . ** + ** Para cambiar hasta el final de una línea, escriba ce . ** - - 1. Mueva el cursor a la primera línea de abajo señalada con --->. + 1. Mueva el cursor a la primera línea inferior marcada con --->. 2. Sitúe el cursor en la u de lubrs. - 3. Escriba cw y corrija la palabra (en este caso, escriba 'ínea'). + 3. Escriba ce y corrija la palabra (en este caso, escriba 'ínea'). - 4. Pulse <ESC> y mueva el cursor al error siguiente (el primer carácter - que deba cambiarse). + 4. Pulse <ESC> y mueva el cursor al siguiente error que debe ser cambiado. 5. Repita los pasos 3 y 4 hasta que la primera frase sea igual a la segunda. ----> Esta lubrs tiene unas pocas pskavtad que corregir usem el mandato change. ----> Esta línea tiene unas pocas palabras que corregir usando el mandato change. +---> Esta lubrs tiene unas pocas pskavtad que corregir usem el comando change. +---> Esta línea tiene unas pocas palabras que corregir usando el comando change. + +Tenga en cuenta que ce elimina la palabra y entra en el modo Insertar. + cc hace lo mismo para toda la línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.4: MÁS CAMBIOS USANDO c - ** El mandato change se utiliza con los mismos objetos que delete. ** + ** El operador change se utiliza con los mismos movimientos que delete. ** - 1. El mandato change funciona de la misma forma que delete. El formato es: + 1. El operador change funciona de la misma forma que delete. El formato es: - [número] c objeto O c [número] objeto + c [número] movimiento - 2. Los objetos son tambiém los mismos, tales como w (palabra), $ (fin de - la línea), etc. + 2. Los movimientos son también los mismos, tales como w (palabra) o + $ (fin de la línea). - 3. Mueva el cursor a la primera línea de abajo señalada con --->. + 3. Mueva el cursor a la primera línea inferior señalada con --->. 4. Mueva el cursor al primer error. - 5. Escriba c$ para hacer que el resto de la línea sea como la segunda + 5. Pulse c$ y escriba el resto de la línea para que sea como la segunda y pulse <ESC>. ---> El final de esta línea necesita alguna ayuda para que sea como la segunda. ----> El final de esta línea necesita ser corregido usando el mandato c$. +---> El final de esta línea necesita ser corregido usando el comando c$. + +NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 3 - 1. Para sustituir texto que ha sido borrado, pulse p . Esto Pone el texto - borrado DESPUÉS del cursor (si lo que se ha borrado es una línea se - situará sobre la línea que está sobre el cursor). + 1. Para volver a poner o pegar el texto que acaba de ser borrado, + escriba p . Esto pega el texto después del cursor (si se borró una + línea, al pegarla, esta se situará en la línea debajo del cursor). 2. Para sustituir el carácter bajo el cursor, pulse r y luego el - carácter que sustituirá al original. + carácter que quiere que esté en ese lugar. - 3. El mandato change le permite cambiar el objeto especificado desde la - posición del cursor hasta el final del objeto; e.g. Pulse cw para - cambiar desde el cursor hasta el final de la palabra, c$ para cambiar - hasta el final de la línea. + 3. El operador change le permite cambiar desde la posición del cursor + hasta donde el movimiento indicado le lleve. Por ejemplo, pulse ce + para cambiar desde el cursor hasta el final de la palabra, o c$ + para cambiar hasta el final de la línea. 4. El formato para change es: - [número] c objeto O c [número] objeto + c [número] movimiento Pase ahora a la lección siguiente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.1: SITUACIÓN EN EL FICHERO Y SU ESTADO + Lección 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. ** - ** Pulse CTRL-g para mostrar su situación en el fichero y su estado. - Pulse MAYU-G para moverse a una determinada línea del fichero. ** +NOTA: ¡¡Lea esta lección entera antes de ejecutar cualquiera de los pasos!! - Nota: ¡¡Lea esta lección entera antes de ejecutar alguno de los pasos!! + 1. Mantenga pulsada la tecla Ctrl y pulse g . Le llamamos a esto CTRL-G. + Aparecerá un mensaje en la parte inferior de la página con el nombre + del archivo y la posición en este. Recuerde el número de línea + para el paso 3. +NOTA: Quizás pueda ver la posición del cursor en la esquina inferior derecha + de la pantalla. Esto ocurre cuando la opción 'ruler' (regla) está + habilitada (consulte :help 'ruler' ) - 1. Mantenga pulsada la tecla Ctrl y pulse g . Aparece una línea de estado - al final de la pantalla con el nombre del fichero y la línea en la que - está situado. Recuerde el número de la línea para el Paso 3. + 2. Pulse G para mover el cursor hasta la parte inferior del archivo. + Pulse gg para mover el cursor al inicio del archivo. - 2. Pulse Mayu-G para ir al final del fichero. + 3. Escriba el número de la línea en la que estaba y después G . Esto + le volverá a la línea en la que estaba cuando pulsó CTRL-G. - 3. Escriba el número de la línea en la que estaba y despúes Mayu-G. Esto - le volverá a la línea en la que estaba cuando pulsó Ctrl-g. - (Cuando escriba los números NO se mostrarán en la pantalla). - - 4. Si se siente confiado en poder hacer esto ejecute los pasos 1 a 3. + 4. Si se siente seguro en poder hacer esto ejecute los pasos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.2: EL MANDATO «SEARCH» (buscar) + Lección 4.2: EL COMANDO «SEARCH» (buscar) ** Escriba / seguido de una frase para buscar la frase. ** 1. En modo Normal pulse el carácter / . Fíjese que tanto el carácter / como el cursor aparecen en la última línea de la pantalla, lo mismo - que el mandato : . + que el comando : . 2. Escriba ahora errroor <INTRO>. Esta es la palabra que quiere buscar. - 3. Para repetir la búsqueda, simplemente pulse n . - Para busacar la misma frase en la dirección opuesta, pulse Mayu-N . + 3. Para repetir la búsqueda de la misma frase otra vez, simplemente pulse n . + Para buscar la misma frase en la dirección opuesta, pulse N . 4. Si quiere buscar una frase en la dirección opuesta (hacia arriba), - utilice el mandato ? en lugar de / . + utilice el comando ? en lugar de / . + + 5. Para regresar al lugar de donde procedía pulse CTRL-O (Mantenga pulsado + Ctrl mientras pulsa la letra o). Repita el proceso para regresar más atrás. + CTRL-I va hacia adelante. ----> Cuando la búsqueda alcanza el final del fichero continuará desde el - principio. +---> "errroor" no es la forma correcta de escribir error, errroor es un error. - «errroor» no es la forma de deletrear error; errroor es un error. +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 ** Pulse % para encontrar el paréntesis correspondiente a ),] o } . ** - - 1. Sitúe el cursor en cualquiera de los caracteres ), ] o } en la línea de - abajo señalada con --->. + 1. Sitúe el cursor en cualquiera de los caracteres (, [ o { en la línea + inferior señalada con --->. 2. Pulse ahora el carácter % . - 3. El cursor debería situarse en el paréntesis (, corchete [ o llave { - correspondiente. + 3. El cursor se moverá a la pareja de cierre del paréntesis, corchete + o llave correspondiente. + + 4. Pulse % para mover el cursor a la otra pareja del carácter. + + 5. Mueva el cursor a otro (,),[,],{ o } y vea lo que hace % . - 4. Pulse % para mover de nuevo el cursor al paréntesis, corchete o llave - correspondiente. +---> Esto ( es una línea de prueba con (, [, ], {, y } en ella. )) ----> Esto ( es una línea de prueba con (, [, ], {, y } en ella. )). +NOTA: ¡Esto es muy útil en la detección de errores en un programa con + paréntesis, corchetes o llaves sin pareja. + -Nota: ¡Esto es muy útil en la detección de errores en un programa con - paréntesis, corchetes o llaves disparejos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 4.4: UNA FORMA DE CAMBIAR ERRORES + Lección 4.4: EL COMANDO SUSTITUIR ** Escriba :s/viejo/nuevo/g para sustituir 'viejo' por 'nuevo'. ** - - 1. Mueva el cursor a la línea de abajo señalada con --->. + 1. Mueva el cursor a la línea inferior señalada con --->. 2. Escriba :s/laas/las/ <INTRO> . Tenga en cuenta que este mandato cambia sólo la primera aparición en la línea de la expresión a cambiar. + + 3. Ahora escriba :/laas/la/g . Al añadir la opción g esto significa + que hará la sustitución global en la línea, cambiando todas las + ocurrencias del término "laas" en la línea. ---> Laas mejores épocas para ver laas flores son laas primaveras. - 4. Para cambiar todas las apariciones de una expresión ente dos líneas - escriba :#,#s/viejo/nuevo/g donde #,# son los números de las dos - líneas. Escriba :%s/viejo/nuevo/g para hacer los cambios en todo - el fichero. - - - - + 4. Para cambiar cada ocurrencia de la cadena de caracteres entre dos líneas, + Pulse :#,#s/viejo/nuevo/g donde #,# son los números de línea del rango + de líneas donde se realizará la sustitución. + Pulse :%s/old/new/g para cambiar cada ocurrencia en todo el + archivo. + Pulse :%s/old/new/gc para encontrar cada ocurrencia en todo el + archivo, pidiendo confirmación para + realizar la sustitución o no. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 4 - 1. Ctrl-g muestra la posición del cursor en el fichero y su estado. - Mayu-G mueve el cursor al final del fichero. Un número de línea - seguido de Mayu-G mueve el cursor a la línea con ese número. + 1. CTRL-G muestra la posición del cursor en el fichero y su estado. + G mueve el cursor al final del archivo. + número G mueve el cursor a ese número de línea. + gg mueve el cursor a la primera línea del archivo. 2. Pulsando / seguido de una frase busca la frase hacia ADELANTE. Pulsando ? seguido de una frase busca la frase hacia ATRÁS. Después de una búsqueda pulse n para encontrar la aparición - siguiente en la misma dirección. + siguiente en la misma dirección o N para buscar en dirección opuesta. 3. Pulsando % cuando el cursor esta sobre (,), [,], { o } localiza la pareja correspondiente. - 4. Para cambiar viejo por nuevo en una línea pulse :s/viejo/nuevo + 4. Para cambiar viejo en el primer nuevo en una línea pulse :s/viejo/nuevo Para cambiar todos los viejo por nuevo en una línea pulse :s/viejo/nuevo/g Para cambiar frases entre dos números de líneas pulse :#,#s/viejo/nuevo/g Para cambiar viejo por nuevo en todo el fichero pulse :%s/viejo/nuevo/g @@ -499,11 +621,10 @@ 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 - ** Escriba :! seguido de un mandato externo para ejecutar ese mandato. ** - + ** Escriba :! seguido de un comando externo para ejecutar ese comando. ** - 1. Escriba el conocido mandato : para situar el cursor al final de la - pantalla. Esto le permitirá introducir un mandato. + 1. Escriba el conocido comando : para situar el cursor al final de la + pantalla. Esto le permitirá introducir un comando. 2. Ahora escriba el carácter ! (signo de admiración). Esto le permitirá ejecutar cualquier mandato del sistema. @@ -512,9 +633,11 @@ Nota: ¡Esto es muy útil en la detección de errores en un programa con le mostrará una lista de su directorio, igual que si estuviera en el símbolo del sistema. Si ls no funciona utilice !:dir . ---->Nota: De esta manera es posible ejecutar cualquier mandato externo. +NOTA: De esta manera es posible ejecutar cualquier comando externo, + también incluyendo argumentos. ---->Nota: Todos los mandatos : deben finalizarse pulsando <INTRO>. +NOTA: Todos los comando : deben finalizarse pulsando <INTRO>. + De ahora en adelante no siempre se mencionará. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -522,10 +645,10 @@ Nota: ¡Esto es muy útil en la detección de errores en un programa con ** Para guardar los cambios hechos en un fichero, - escriba :w NOMBRE_DE_FICHERO. ** + escriba :w NOMBRE_DE_FICHERO ** - - 1. Escriba :!dir o :!ls para ver una lista de su directorio. + 1. Escriba :!dir o :!ls para ver una lista de los archivos + de su directorio. Ya sabe que debe pulsar <INTRO> después de ello. 2. Elija un nombre de fichero que todavía no exista, como TEST. @@ -533,210 +656,337 @@ Nota: ¡Esto es muy útil en la detección de errores en un programa con 3. Ahora escriba :w TEST (donde TEST es el nombre de fichero elegido). 4. Esta acción guarda todo el fichero (Vim Tutor) bajo el nombre TEST. - Para comprobarlo escriba :!dir de nuevo y vea su directorio. + Para comprobarlo escriba :!dir o :!ls de nuevo y vea su directorio. + +NOTA: Si saliera de Vim y volviera a entrar de nuevo con vim TEST , el + archivo sería una copia exacta del tutorial cuando lo guardó. + + 5. Ahora elimine el archivo escribiendo (Windows): :!del TEST + o (Unix): :!rm TEST ----> Tenga en cuenta que si sale de Vim y entra de nuevo con el nombre de - fichero TEST, el fichero sería una copia exacta del tutor cuando lo - ha guardado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 5.3: UN MANDATO DE ESCRITURA SELECTIVO + Lección 5.3: SELECCIONAR TEXTO PARA GUARDAR + - ** Para guardar parte del fichero escriba :#,# NOMBRE_DEL_FICHERO ** + ** Para guardar parte del archivo, escriba v movimiento :w ARCHIVO ** + 1. Mueva el cursor a esta línea. - 1. Escriba de nuevo, una vez más, :!dir o :!ls para obtener una lista - de su directorio y elija nombre de fichero adecuado, como TEST. + 2. Pulse v y mueva el cursor hasta el quinto elemento inferior. Vea que + el texto es resaltado. - 2. Mueva el cursor al principio de la pantalla y pulse Ctrl-g para saber - el número de la línea correspondiente. ¡RECUERDE ESTE NÚMERO! + 3. Pulse el carácter : en la parte inferior de la pantalla aparecerá + :'<,'> - 3. Ahora mueva el cursor a la última línea de la pantalla y pulse Ctrl-g - de nuevo. ¡RECUERDE TAMBIÉN ESTE NÚMERO! + 4. Pulse w TEST , donde TEST es un nombre de archivo que aún no existe. + Verifique que :'<,'>w TEST antes de pulsar <INTRO>. - 4. Para guardar SOLAMENTE una parte de un fichero, escriba :#,# w TEST - donde #,# son los números que usted ha recordado (primera línea, - última línea) y TEST es su nombre de dichero. + 5. Vim escribirá las líneas seleccionadas en el archivo TEST. Utilice + :!dir o :!ls para verlo. ¡No lo elimine todavía! Lo utilizaremos + en la siguiente lección. - 5. De nuevo, vea que el fichero esta ahí con :!dir pero NO lo borre. +NOTA: Al pulsar v inicia la selección visual. Puede mover el cursor para + hacer la selección más grande o pequeña. Después puede utilizar un + operador para hacer algo con el texto. Por ejemplo, d eliminará + el texto seleccionado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.4: RECUPERANDO Y MEZCLANDO FICHEROS + ** Para insertar el contenido de un fichero escriba :r NOMBRE_DEL_FICHERO ** - 1. Escriba :!dir para asegurarse de que su fichero TEST del ejercicio - anterior está presente. + 1. Sitúe el cursor justo por encima de esta línea. - 2. Situe el cursor al principio de esta pantalla. +NOTA: Después de ejecutar el paso 2 verá texto de la lección 5.3. Después + DESCIENDA hasta ver de nuevo esta lección. -NOTA: Después de ejecutar el paso 3 se verá la Lección 5.3. Luego muévase - hacia ABAJO para ver esta lección de nuevo. + 2. Ahora recupere el archivo TEST utilizando el comando :r TEST donde + TEST es el nombre que ha utilizado. + El archivo que ha recuperado se colocará debajo de la línea donde + se encuentra el cursor. - 3. Ahora recupere el fichero TEST utilizando el mandato :r TEST donde - TEST es el nombre del fichero. + 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 + la versión del archivo. -NOTA: El fichero recuperado se sitúa a partir de la posición del cursor. +NOTA: También puede leer la salida de un comando externo. Por ejemplo, + :r !ls lee la salida del comando ls y lo pega debajo de la línea + donde se encuentra el cursor. - 4. Para verificar que el fichero ha sido recuperado, mueva el cursor hacia - arriba y vea que hay dos copias de la Lección 5.3, la original y la - versión del fichero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 5 - 1. :!mandato ejecuta un mandato externo. + 1. :!comando ejecuta un comando externo. Algunos ejemplos útiles son: - :!dir - muestra el contenido de un directorio. - :!del NOMBRE_DE_FICHERO - borra el fichero NOMBRE_DE FICHERO. - - 2. :#,#w NOMBRE_DE _FICHERO guarda desde la línea # hasta la # en el - fichero NOMBRE_DE_FICHERO. - - 3. :r NOMBRE_DE _FICHERO recupera el fichero del disco NOMBRE_DE FICHERO - y lo inserta en el fichero en curso a partir de la posición del cursor. - + (Windows) (Unix) + :!dir :!ls - muestra el contenido de un directorio. + :!del ARCHIVO :!rm ARCHIVO - borra el fichero ARCHIVO. + 2. :w ARCHIVO escribe el archivo actual de Vim en el disco con el + nombre de ARCHIVO. + 3. v movimiento :w ARCHIVO guarda las líneas seleccionadas visualmente + en el archivo ARCHIVO. + 4. :r ARCHIVO recupera del disco el archivo ARCHIVO y lo pega debajo + de la posición del cursor. + 5. :r !dir lee la salida del comando dir y lo pega debajo de la + posición del cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.1: EL MANDATO «OPEN» (abrir) + Lección 6.1: EL COMANDO OPEN ** Pulse o para abrir una línea debajo del cursor - y situarle en modo Insert ** + y situarle en modo Insertar ** + 1. Mueva el cursor a la línea inferior señalada con --->. - 1. Mueva el cursor a la línea de abajo señalada con --->. + 2. Pulse la letra minúscula o para abrir una línea por DEBAJO del cursor + y situarle en modo Insertar. + + 3. Ahora escriba algún texto y después pulse <ESC> para salir del modo + insertar. - 2. Pulse o (minúscula) para abrir una línea por DEBAJO del cursor - y situarle en modo Insert. +---> Después de pulsar o el cursor se sitúa en la línea abierta en modo Insertar. - 3. Ahora copie la línea señalada con ---> y pulse <ESC> para salir del - modo Insert. + 4. Para abrir una línea por ENCIMA del cursor, simplemente pulse una O + mayúscula, en lugar de una o minúscula. Pruebe este en la línea siguiente. + +---> Abra una línea sobre esta pulsando O cuando el cursor está en esta línea. ----> Luego de pulsar o el cursor se sitúa en la línea abierta en modo Insert. - 4. Para abrir una línea por encima del cursor, simplemente pulse una O - mayúscula, en lugar de una o minúscula. Pruebe este en la línea siguiente. -Abra una línea sobre ésta pulsando Mayu-O cuando el cursor está en esta línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.2: EL MANDATO «APPEND» (añadir) + Lección 6.2: EL COMANDO APPEND (añadir) + ** Pulse a para insertar texto DESPUÉS del cursor. ** + 1. Mueva el cursor al inicio de la primera línea inferior señalada con --->. - 1. Mueva el cursor al final de la primera línea de abajo señalada con ---> - pulsando $ en modo Normal. + 2. Escriba e hasta que el cursor esté al final de lín . - 2. Escriba una a (minúscula) para añadir texto DESPUÉS del carácter - que está sobre el cursor. (A mayúscula añade texto al final de la línea). + 3. Escriba una a (minúscula) para añadir texto DESPUÉS del cursor. -Nota: ¡Esto evita el pulsar i , el último carácter, el texto a insertar, - <ESC>, cursor a la derecha y, finalmente, x , sólo para añadir algo - al final de una línea! + 4. Complete la palabra como en la línea inferior. Pulse <ESC> para salir + del modo insertar. + + 5. Utilice e para moverse hasta la siguiente palabra incompleta y + repita los pasos 3 y 4. - 3. Complete ahora la primera línea. Nótese que append es exactamente lo - mismo que modo Insert, excepto por el lugar donde se inserta el texto. +---> Esta lín le permit prati cómo añad texto a una línea. +---> Esta línea le permitirá practicar cómo añadir texto a una línea. ----> Esta línea le permitirá praticar ----> Esta línea le permitirá praticar el añadido de texto al final de una línea. +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 6.3: OTRA VERSIÓN DE REPLACE (remplazar) + ** Pulse una R mayúscula para sustituir más de un carácter. ** + 1. Mueva el cursor a la primera línea inferior señalada con --->. Mueva + el cursor al inicio de la primera xxx . - 1. Mueva el cursor a la primera línea de abajo señalada con --->. + 2. Ahora pulse R y escriba el número que aparece en la línea inferior, + esto reemplazará el texto xxx . + + 3. Pulse <ESC> para abandonar el modo Reemplazar. Observe que el resto de + la línea permanece sin modificaciones. - 2. Sitúe el cursor al comienzo de la primera palabra que sea diferente - de las de la segunda línea marcada con ---> (la palabra 'anterior'). + 4. Repita los pasos para reemplazar el texto xxx que queda. - 3. Ahora pulse R y sustituya el resto del texto de la primera línea - escribiendo sobre el viejo texto para que la primera línea sea igual - que la segunda. +---> Sumar 123 a xxx da un resultado de xxx. +---> Sumar 123 a 456 da un resultado de 579. ----> Para hacer que esta línea sea igual que la anterior use las teclas. ----> Para hacer que esta línea sea igual que la siguiente escriba R y el texto. +NOTA: El modo Reemplazar es como el modo Insertar, pero cada carácter escrito + elimina un carácter ya existente. - 4. Nótese que cuando pulse <ESC> para salir, el texto no alterado permanece. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 6.4: COPIAR Y PEGAR TEXTO -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 6.4: FIJAR OPCIONES + ** Utilice el operador y para copiar texto y p para pegarlo. ** - ** Fijar una opción de forma que una búsqueda o sustitución ignore la caja ** - (Para el concepto de caja de una letra, véase la nota al final del fichero) + 1. Mueva el cursor a la línea inferior marcada con ---> y posicione el + cursor después de "a)". + 2. Inicie el modo Visual con v y mueva el cursor justo antes de "primer". - 1. Busque 'ignorar' introduciendo: - /ignorar - Repita varias veces la búsque pulsando la tecla n + 3. Pulse y para copiar ("yank") el texto resaltado. - 2. Fije la opción 'ic' (Ignorar la caja de la letra) escribiendo: - :set ic + 4. Mueva el cursor al final de la siguiente línea mediante: j$ - 3. Ahora busque 'ignorar' de nuevo pulsando n - Repita la búsqueda varias veces más pulsando la tecla n + 5. Pulse p para poner (pegar) el texto. Después escriba: el segundo <ESC>. - 4. Fije las opciones 'hlsearch' y 'insearch': - :set hls is + 6. Utilice el modo visual para seleccionar " elemento.", y cópielo con y + mueva el cursor al final de la siguiente línea con j$ y pegue el texto + recién copiado con p . - 5. Ahora introduzca la orden de búsqueda otra vez, y vea qué pasa: - /ignore +---> a) este es el primer elemento. + b) +NOTA: También puede utilizar y como un operador: yw copia una palabra, + yy copia la línea completa donde está el cursor, después p pegará + esa línea. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RESUMEN DE LA LECCIÓN 6 + Lección 6.5: ACTIVAR (SET) UNA OPCIÓN - 1. Pulsando o abre una línea por DEBAJO del cursor y sitúa el cursor en - la línea abierta en modo Insert. - Pulsando una O mayúscula se abre una línea SOBRE la que está el cursor. + ** Active una opción para buscar o sustituir ignorando si está + en mayúsculas o minúsculas el texto. ** - 2. Pulse una a para insertar texto DESPUÉS del carácter sobre el cursor. - Pulsando una A mayúscula añade automáticamente texto al final de la - línea. + 1. Busque la cadena de texto 'ignorar' escribiendo: /ignorar <INTRO> + Repita la búsqueda varias veces pulsando n . - 3. Pulsando una R mayúscula se entra en modo Replace hasta que, para salir, - se pulse <ESC>. + 2. Active la opción 'ic' (Ignore case o ignorar mayúsculas y minúsculas) + mediante: :set ic - 4. Escribiendo «:set xxx» fija la opción «xxx» + 3. Ahora busque de nuevo 'ignorar' pulsando n + Observe que ahora también se encuentran Ignorar e IGNORAR. + 4. Active las opciones 'hlsearch' y 'incsearch' escribiendo: :set hls is + 5. Ahora escriba de nuevo el comando de búsqueda y vea qué ocurre: /ignore <INTRO> + 6. Para inhabilitar el ignorar la distinción de mayúsculas y minúsculas + escriba: :set noic +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 <INTRO> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RESUMEN DE LA LECCIÓN 6 + 1. Escriba o para abrir una línea por DEBAJO de la posición del cursor y + entrar en modo Insertar. + Escriba O para abrir una línea por ENCIMA de la posición del cursor y + entrar en modo Insertar + + 2. Escriba a para insertar texto DESPUÉS del cursor. + Escriba A para insertar texto al final de la línea. + + 3. El comando e mueve el cursor al final de una palabra. + + 4. El operador y copia (yank) texto, p lo pega (pone). + + 5. Al escribir una R mayúscula entra en el modo Reemplazar hasta que + se pulsa <ESC> . + + 6. Al escribir ":set xxx" activa la opción "xxx". Algunas opciones son: + 'ic' 'ignorecase' ignorar mayúsculas/minúsculas al buscar + 'is' 'incsearch' mostrar las coincidencias parciales para la búsqueda + de una frase + 'hls' 'hlsearch' resalta todas las coincidencias de la frases + Puedes utilizar tanto los nombre largos o cortos de las opciones. + + 7. Añade "no" para inhabilitar una opción: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lección 7: MANDATOS PARA LA AYUDA EN LÍNEA + Lección 7: OBTENER AYUDA - ** Utilice el sistema de ayuda en línea ** + ** Utilice el sistema de ayuda en línea ** - Vim dispone de un sistema de ayuda en línea. Para activarlo, pruebe una + Vim dispone de un sistema de ayuda en línea. Para comenzar, pruebe una de estas tres formas: - pulse la tecla <AYUDA> (si dispone de ella) - pulse la tecla <F1> (si dispone de ella) - escriba :help <INTRO> - Escriba :q <INTRO> para cerrar la ventana de ayuda. + Lea el texto en la ventana de ayuda para descubrir cómo funciona la ayuda. + Escriba CTRL-W CTRL-W para saltar de una ventana a otra. + Escriba :q <INTRO> para cerrar la ventana de ayuda. Puede encontrar ayuda en casi cualquier tema añadiendo un argumento al - mandato «:help» mandato. Pruebe éstos: + comando «:help». Pruebe éstos (no olvide pulsar <INTRO>): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 7.2: CREAR UN SCRIPT DE INICIO + + + ** Habilitar funcionalidades en Vim ** + + Vim tiene muchas más funcionalidades que Vi, pero algunas están + inhabilitadas de manera predeterminada. + Para empezar a utilizar más funcionalidades debería crear un archivo + llamado "vimrc". + + 1. Comience a editar el archivo "vimrc". Esto depende de su sistema: + :e ~/.vimrc para Unix + :e ~/_vimrc para Windows + + 2. Ahora lea el contenido del archivo "vimrc" de ejemplo: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Guarde el archivo mediante: + :w + + La próxima vez que inicie Vim, este usará el resaltado de sintaxis. + Puede añadir todos sus ajustes preferidos a este archivo "vimrc". + Para más información escriba :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lección 7.3: COMPLETADO + + + ** Completado de la línea de comandos con CTRL-D o <TAB> ** + + 1. Asegúrese de que Vim no está en el modo compatible: :set nocp + + 2. Vea qué archivos existen en el directorio con: :!ls o :!dir + + 3. Escriba el inicio de un comando: :e + + 4. Pulse CTRL-D y Vim mostrará una lista de comandos que empiezan con "e". + + 5. Añada d<TAB> y Vim completará el nombre del comando a ":edit". + + 6. Ahora añada un espacio y el inicio del nombre de un archivo: :edit FIL + + 7. Pulse <TAB>. Vim completará el nombre (si solo hay uno). + +NOTA: El completado funciona con muchos comandos. Solo pulse CTRL-D o + <TAB>. Es especialmente útil para :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RESUMEN DE LA LECCIÓN 7 + + + 1. Escriba :help o pulse <F1> o <HELP> para abrir la ventana de ayuda. + + 2. Escriba :help cmd para encontrar ayuda sobre cmd . + + 3. Escriba CTRL-W CTRL-W para saltar a otra ventana. + + 4. Escriba :q para cerrar la ventana de ayuda. + + 5. Cree un fichero vimrc de inicio para guardar sus ajustes preferidos. + + 6. Cuando escriba un comando : pulse CTRL-D para ver posibles opciones. + Pulse <TAB> para utilizar una de las opciones de completado. + + + + - :help w <INTRO> - :help c_<T <INTRO> - :help insert-index <INTRO> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -744,13 +994,15 @@ Nota: ¡Esto evita el pulsar i , el último carácter, el texto a insertar, Aquí concluye el tutor de Vim. Está pensado para dar una visión breve del editor Vim, lo suficiente para permitirle usar el editor de forma bastante sencilla. Está muy lejos de estar completo pues Vim tiene muchísimos más - mandatos. + comandos. Lea el siguiente manual de usuario: ":help user-manual". Para lecturas y estudios posteriores se recomienda el libro: - Learning the Vi Editor - por Linda Lamb - Editorial: O'Reilly & Associates Inc. - Es un buen libro para llegar a saber casi todo lo que desee hacer con Vi. - La sexta edición incluye también información sobre Vim. + Vim - Vi Improved - de Steve Oualline + Editado por: New Riders + El primer libro dedicado completamente a Vim. Especialmente útil para + recién principiantes. + Tiene muchos ejemplos e imágenes. + Vea https://iccf-holland.org/click5.html Este tutorial ha sido escrito por Michael C. Pierce y Robert K. Ware, Colorado School of Mines utilizando ideas suministradas por Charles Smith, @@ -760,10 +1012,12 @@ Nota: ¡Esto evita el pulsar i , el último carácter, el texto a insertar, Modificado para Vim por Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + Traducido del inglés por: - Eduardo F. Amatria - Correo electrónico: eferna1@platea.pntic.mec.es + * Eduardo F. Amatria + Correo electrónico: eferna1@platea.pntic.mec.es + * Victorhck + Correo electrónico: victorhck@opensuse.org ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/runtime/vim.desktop b/runtime/vim.desktop index cd3bdef9b..b8835508b 100644 --- a/runtime/vim.desktop +++ b/runtime/vim.desktop @@ -12,6 +12,7 @@ Name[it]=Vim Name[ru]=Vim Name[sr]=Vim Name[tr]=Vim +Name[uk]=Vim Name=Vim # Translators: This is the Generic Application Name used in the Vim desktop file GenericName[ca]=Editor de text @@ -25,6 +26,7 @@ GenericName[ja]=テキストエディタ GenericName[ru]=Текстовый редактор GenericName[sr]=Едитор текст GenericName[tr]=Metin Düzenleyici +GenericName[uk]=Редактор Тексту GenericName=Text Editor # Translators: This is the comment used in the Vim desktop file Comment[ca]=Edita fitxers de text @@ -38,6 +40,7 @@ Comment[ja]=テキストファイルを編集します Comment[ru]=Редактирование текстовых файлов Comment[sr]=Уређујте текст фајлове Comment[tr]=Metin dosyaları düzenleyin +Comment[uk]=Редагувати текстові файли Comment=Edit text files # The translations should come from the po file. Leave them here for now, they will # be overwritten by the po file when generating the desktop.file. @@ -97,7 +100,6 @@ Comment[sv]=Redigera textfiler Comment[ta]=உரை கோப்புகளை தொகுக்கவும் Comment[th]=แก้ไขแฟ้มข้อความ Comment[tk]=Metin faýllary editle -Comment[uk]=Редактор текстових файлів Comment[vi]=Soạn thảo tập tin văn bản Comment[wa]=Asspougnî des fitchîs tecses Comment[zh_CN]=编辑文本文件 @@ -118,6 +120,7 @@ Keywords[ja]=テキスト;エディタ; Keywords[ru]=текст;текстовый редактор; Keywords[sr]=Текст;едитор; Keywords[tr]=Metin;düzenleyici; +Keywords[uk]=текст;редактор; Keywords=Text;editor; # Translators: This is the Icon file name. Do NOT translate Icon=gvim |