summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-10 22:47:40 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-10 22:47:40 +0200
commit12ee7ff00b91d852e060bb24951d1c94239863eb (patch)
treeaac461f55a91741c849fadbc5537e1b6db11e73a /runtime
parent4c063a0dab57be7bd7aad4b8434feff3db5f1057 (diff)
Update runtime files
Diffstat (limited to 'runtime')
-rw-r--r--runtime/doc/editing.txt4
-rw-r--r--runtime/doc/eval.txt8
-rw-r--r--runtime/doc/index.txt3
-rw-r--r--runtime/doc/popup.txt48
-rw-r--r--runtime/doc/tags13
-rw-r--r--runtime/doc/tagsrch.txt23
-rw-r--r--runtime/doc/todo.txt28
-rw-r--r--runtime/doc/various.txt4
-rw-r--r--runtime/syntax/matlab.vim7
-rw-r--r--runtime/syntax/typescript.vim8
-rw-r--r--runtime/tutor/tutor.ko968
-rw-r--r--runtime/tutor/tutor.ko.utf-8420
12 files changed, 1341 insertions, 193 deletions
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index caf37c86eb..fc7a930eb5 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt* For Vim version 8.1. Last change: 2019 Jun 02
+*editing.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -593,7 +593,7 @@ You can use the argument list with the following commands, and with the
expression functions |argc()| and |argv()|. These all work on the argument
list of the current window.
- *:ar* *:arg* *:args*
+ *:ar* *:arg* *:args*
:ar[gs] Print the argument list, with the current file in
square brackets.
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index bf5c8b9bac..5f8156003f 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -8868,7 +8868,7 @@ sound_playevent({name} [, {callback}])
finished. The first argument is the sound ID, the second
argument is the status:
0 sound was played to the end
- 1 sound was interruped
+ 1 sound was interrupted
2 error occured after sound started
Example: >
func Callback(id, status)
@@ -8878,7 +8878,7 @@ sound_playevent({name} [, {callback}])
< Returns the sound ID, which can be passed to `sound_stop()`.
Returns zero if the sound could not be played.
- {only available when compiled with the +sound feature}
+ {only available when compiled with the |+sound| feature}
*sound_playfile()*
sound_playfile({path} [, {callback}])
@@ -8886,13 +8886,13 @@ sound_playfile({path} [, {callback}])
must be a full path. On Ubuntu you may find files to play
with this command: >
:!find /usr/share/sounds -type f | grep -v index.theme
-< {only available when compiled with the +sound feature}
+< {only available when compiled with the |+sound| feature}
sound_stop({id}) *sound_stop()*
Stop playing sound {id}. {id} must be previously returned by
`sound_playevent()` or `sound_playfile()`.
- {only available when compiled with the +sound feature}
+ {only available when compiled with the |+sound| feature}
*soundfold()*
soundfold({word})
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 5aab7174d5..d1c3c87f6f 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt* For Vim version 8.1. Last change: 2019 May 25
+*index.txt* For Vim version 8.1. Last change: 2019 Jun 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1484,7 +1484,6 @@ tag command action ~
|:perldo| :perld[o] execute Perl command for each line
|:pop| :po[p] jump to older entry in tag stack
|:popup| :popu[p] popup a menu by name
-|:popupclear| :popupc[lear] remove all popup windows
|:ppop| :pp[op] ":pop" in preview window
|:preserve| :pre[serve] write all text to swap file
|:previous| :prev[ious] go to previous file in argument list
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 09b2cbaaa3..0400880579 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt* For Vim version 8.1. Last change: 2019 Jun 09
+*popup.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -6,7 +6,7 @@
Displaying text in floating window. *popup* *popup-window*
-THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
+THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
1. Introduction |popup-intro|
2. Functions |popup-functions|
@@ -76,31 +76,21 @@ else. E.g. if you use `popup_atcursor()` the popup normally shows just above
the current cursor position, but if the cursor is close to the top of the Vim
window it will be placed below the cursor position.
+When the screen scrolls up for output of an Ex command, popups move too, so
+that they will not cover the output.
-TODO:
-
-Scrolling: When the screen scrolls up for output of an Ex command, what
-happens with popups?
-1. Stay where they are. Problem: listed text may go behind and can't be read.
-2. Scroll with the page. What if they get updated? Either postpone, or take
- the scroll offset into account.
-Probably 2. is the best choice.
IMPLEMENTATION:
-- buffers remain after popup was deleted.
-- do not redraw whole window when popup was changed, mark affected lines for
- redraw.
+- buffers remain after a popup was deleted.
- Why does 'nrformats' leak from the popup window buffer???
-- Add 'balloonpopup': instead of showing text, let the callback open a balloon
- and return the window ID. The popup will then be closed when the mouse
- moves, except when it moves inside the popup.
+- Add 'balloonpopup': instead of showing text, let the callback open a popup
+ window and return the window ID. The popup will then be closed when the
+ mouse moves, except when it moves inside the popup.
- For the "moved" property also include mouse movement?
- Make redrawing more efficient and avoid flicker:
- put popup menu also put in popup_mask?
- - Use changes in popup_mask to decide what windows and range of lines to
- redraw?
- Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
Use NOT_IN_POPUP_WINDOW for more commands.
- Invoke filter with character before mapping?
@@ -114,7 +104,7 @@ IMPLEMENTATION:
==============================================================================
2. Functions *popup-functions*
-THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
+THIS IS UNDER DESIGN - ANYTHING MAY STILL CHANGE
[functions to be moved to eval.txt later, keep overview of functions here]
@@ -164,7 +154,7 @@ popup_create({text}, {options}) *popup_create()*
popup_dialog({text}, {options}) *popup_dialog()*
- {not implemented yet}
+ {not implemented yet}
Just like |popup_create()| but with these default options: >
call popup_create({text}, {
\ 'pos': 'center',
@@ -176,7 +166,7 @@ popup_dialog({text}, {options}) *popup_dialog()*
popup_filter_menu({id}, {key}) *popup_filter_menu()*
- {not implemented yet}
+ {not implemented yet}
Filter that can be used for a popup. It handles the cursor
keys to move the selected index in the popup. Space and Enter
can be used to select an item. Invokes the "callback" of the
@@ -185,7 +175,7 @@ popup_filter_menu({id}, {key}) *popup_filter_menu()*
popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
- {not implemented yet}
+ {not implemented yet}
Filter that can be used for a popup. It handles only the keys
'y', 'Y' and 'n' or 'N'. Invokes the "callback" of the
popup menu with the 1 for 'y' or 'Y' and zero for 'n' or 'N'
@@ -216,7 +206,7 @@ popup_getpos({id}) *popup_getpos()*
core_line screen line of the text box
core_width width of the text box in screen cells
core_height height of the text box in screen cells
- visible one if the popup is displayed, zero if hidden
+ visible one if the popup is displayed, zero if hidden
Note that these are the actual screen positions. They differ
from the values in `popup_getoptions()` for the sizing and
positioning mechanism applied.
@@ -235,7 +225,7 @@ popup_hide({id}) *popup_hide()*
popup_menu({text}, {options}) *popup_menu()*
- {not implemented yet}
+ {not implemented yet}
Show the {text} near the cursor, handle selecting one of the
items with cursorkeys, and close it an item is selected with
Space or Enter. {text} should have multiple lines to make this
@@ -260,7 +250,7 @@ popup_move({id}, {options}) *popup_move()*
popup_notification({text}, {options}) *popup_notification()*
- {not implemented yet}
+ {not implemented yet}
Show the {text} for 3 seconds at the top of the Vim window.
This works like: >
call popup_create({text}, {
@@ -281,7 +271,7 @@ popup_show({id}) *popup_show()*
popup_setoptions({id}, {options}) *popup_setoptions()*
- {not implemented yet}
+ {not implemented yet}
Override options in popup {id} with entries in {options}.
@@ -292,7 +282,7 @@ A new buffer is created to hold the text and text properties of the popup
window. The buffer is always associated with the popup window and
manipulation is restricted:
- the buffer has no name
-- 'buftype' is "popup"
+- 'buftype' is "popup"
- 'swapfile' is off
- 'bufhidden' is "hide"
- 'buflisted' is off
@@ -424,7 +414,7 @@ The second argument of |popup_create()| is a dictionary with options:
{start} or after {end}
The popup also closes if the cursor moves to another
line or to another window.
- filter A callback that can filter typed characters, see
+ filter A callback that can filter typed characters, see
|popup-filter|.
callback A callback that is called when the popup closes, e.g.
when using |popup_filter_menu()|, see |popup-callback|.
@@ -486,7 +476,7 @@ key, e.g.: >
return 1
endif
return 0
- endfunc
+ endfunc
Currently the key is what results after any mapping. This may change...
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 0dd3f70809..2f30f08161 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1351,6 +1351,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
+scrollbind various.txt /*+scrollbind*
+signs various.txt /*+signs*
+smartindent various.txt /*+smartindent*
++sound various.txt /*+sound*
++spell various.txt /*+spell*
+startuptime various.txt /*+startuptime*
+statusline various.txt /*+statusline*
+sun_workshop various.txt /*+sun_workshop*
@@ -2816,8 +2818,6 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
:pop tagsrch.txt /*:pop*
:popu gui.txt /*:popu*
:popup gui.txt /*:popup*
-:popupc popup.txt /*:popupc*
-:popupclear popup.txt /*:popupclear*
:pp windows.txt /*:pp*
:ppop windows.txt /*:ppop*
:pr various.txt /*:pr*
@@ -6138,6 +6138,7 @@ exp() eval.txt /*exp()*
expand() eval.txt /*expand()*
expand-env options.txt /*expand-env*
expand-environment-var options.txt /*expand-environment-var*
+expandcmd() eval.txt /*expandcmd()*
expr eval.txt /*expr*
expr-! eval.txt /*expr-!*
expr-!= eval.txt /*expr-!=*
@@ -8227,6 +8228,7 @@ popup-props popup.txt /*popup-props*
popup-window popup.txt /*popup-window*
popup.txt popup.txt /*popup.txt*
popup_atcursor() popup.txt /*popup_atcursor()*
+popup_clear() popup.txt /*popup_clear()*
popup_close() popup.txt /*popup_close()*
popup_create() popup.txt /*popup_create()*
popup_create-usage popup.txt /*popup_create-usage*
@@ -8581,6 +8583,9 @@ script-variable eval.txt /*script-variable*
scriptnames-dictionary eval.txt /*scriptnames-dictionary*
scriptout-changed version4.txt /*scriptout-changed*
scriptversion eval.txt /*scriptversion*
+scriptversion-1 eval.txt /*scriptversion-1*
+scriptversion-2 eval.txt /*scriptversion-2*
+scriptversion-3 eval.txt /*scriptversion-3*
scroll-binding scroll.txt /*scroll-binding*
scroll-cursor scroll.txt /*scroll-cursor*
scroll-down scroll.txt /*scroll-down*
@@ -8690,6 +8695,10 @@ slow-terminal term.txt /*slow-terminal*
socket-interface channel.txt /*socket-interface*
sort() eval.txt /*sort()*
sorting change.txt /*sorting*
+sound_clear() eval.txt /*sound_clear()*
+sound_playevent() eval.txt /*sound_playevent()*
+sound_playfile() eval.txt /*sound_playfile()*
+sound_stop() eval.txt /*sound_stop()*
soundfold() eval.txt /*soundfold()*
space intro.txt /*space*
spec-customizing pi_spec.txt /*spec-customizing*
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index 149ef67842..9c4108f582 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt* For Vim version 8.1. Last change: 2019 Jun 02
+*tagsrch.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -85,18 +85,21 @@ changed, to avoid confusion when using ":tnext". It is changed when using
":tag {name}".
The ignore-case matches are not found for a ":tag" command when:
-- the 'ignorecase' option is off and 'tagcase' is "followic"
+- 'tagcase' is "followic" and the 'ignorecase' option is off
+- 'tagcase' is "followscs" and the 'ignorecase' option is off and the
+ 'smartcase' option is off or the pattern contains an upper case character.
- 'tagcase' is "match"
- 'tagcase' is "smart" and the pattern contains an upper case character.
-- 'tagcase' is "followscs" and 'smartcase' option is on and the pattern
- contains an upper case character.
The ignore-case matches are found when:
- a pattern is used (starting with a "/")
- for ":tselect"
-- when 'tagcase' is "followic" and 'ignorecase' is off
-- when 'tagcase' is "match"
-- when 'tagcase' is "followscs" and the 'smartcase' option is off
+- when 'tagcase' is "followic" and 'ignorecase' is on
+- when 'tagcase' is "followscs" and 'ignorecase' is on or the 'smartcase'
+ option is on and the pattern does not contain an upper case character
+- when 'tagcase' is "ignore"
+- when 'tagcase' is "smart" and the patter does not contain an upper case
+ character
Note that using ignore-case tag searching disables binary searching in the
tags file, which causes a slowdown. This can be avoided by fold-case sorting
@@ -503,7 +506,7 @@ Some programs that generate tags files:
ctags As found on most Unix systems. Only supports C. Only
does the basic work.
*Exuberant_ctags*
-exuberant ctags This a very good one. It works for C, C++, Java,
+exuberant ctags This is a very good one. It works for C, C++, Java,
Fortran, Eiffel and others. It can generate tags for
many items. See http://ctags.sourceforge.net.
etags Connected to Emacs. Supports many languages.
@@ -824,7 +827,7 @@ CTRL-W d Open a new window, with the cursor on the first
(default: whole file).
See |:search-args| for [/] and [!].
- *:che* *:chec* *:check* *:checkpath*
+ *:che* *:chec* *:check* *:checkpath*
:che[ckpath] List all the included files that could not be found.
:che[ckpath]! List all the included files.
@@ -895,7 +898,7 @@ The following fields are optional:
If the function returns |v:null| instead of a List, a standard tag lookup will
be performed instead.
-It is not allowed to change the tagstack from inside 'tagfunc'. *E986*
+It is not allowed to change the tagstack from inside 'tagfunc'. *E986*
The following is a hypothetical example of a function used for 'tagfunc'. It
uses the output of |taglist()| to generate the result: a list of tags in the
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index b03633fab8..070050fb9b 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 8.1. Last change: 2019 Jun 06
+*todo.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -42,23 +42,22 @@ Ongoing work on text properties, see src/textprop.c
Popup windows are being implemented, see |popup-window|.
-Listener causes extra } to be inserted. (Paul Jolly, #4455)
+Include tests:
+ test_assert.vim
+ test_paste.vim
+ shared.vim
Patch to fix session file when using multiple tabs. (Jason Franklin, 2019 May
20)
Also put :argadd commands at the start for all buffers, so that their order
remains equal? Then %argdel to clean it up. Do try this with 'hidden' set.
-Patch for Chinese translations for nsis. (#4407) Comments handled?
-
Patch to add v:searchstat. (Takuya Fujiwara, #4446) Should be independent of
'shortmess', filled on demand and cached until search changes.
-listener callback is invoked while another is still busy? (Paul Jolly)
-Should not happen because of text lock.
+Listener causes extra } to be inserted. (Paul Jolly, #4455)
-When 'rightleft' is set search pattern is not displayed. (#4488)
-Caused by 8.1.1375 ?
+Improvement to Travis config: Ozaki Kiichi, #4521
'incsearch' with :s: (#3321)
- Get E20 when using command history to get "'<,'>s/a/b" and no Visual area
@@ -173,8 +172,14 @@ it's in a mapping. (2018 Oct 6, #2302, #3522)
Internal diff doesn't handle binary file like external diff does. (Mike
Williams, 2018 Oct 30)
+Add "number" to 'signcolumn': Put signs in the number column if it exists.
+Otherwise behave like "yes". (Adam Stankiewicz, #4515)
+
Problem with :tlmenu: Detach item added with all modes? Issue #3563.
+Patch to use timers in matchparen. (Daniel Hahler, #1338)
+Ready to include now?
+
The quoting of the [command] argument of :terminal is not clearly documented.
Give a few examples. (#4288)
@@ -190,10 +195,17 @@ Problem with colors in terminal window. (Jason Franklin, 2019 May 12)
Bug: "vipgw" does not put cursor back where it belongs. (Jason Franklin, 2019
Mar 5)
+Should we include some part of pull request #4505, not increment changedtick
+in some cases? E.g. for ":write" when the changed flag was already off, the
+buffer didn't change at all.
+
Patch to add getreginfo() and setreg() with an option to set the unnamed
register "", So that registers can be saved and fully restored.
(Andy Massimino, 2018 Aug 24, #3370)
+Line numbers in profile are off when function was defined with ":execute".
+(Daniel Hahler, #4511)
+
Add a way to create an empty, hidden buffer. Like doing ":new|hide".
":let buf = bufcreate('name')
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 5f45ccaadf..5f987dc0e7 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt* For Vim version 8.1. Last change: 2019 Jun 02
+*various.txt* For Vim version 8.1. Last change: 2019 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -428,6 +428,8 @@ m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
T *+scrollbind* |'scrollbind'|
B *+signs* |:sign|
N *+smartindent* |'smartindent'|
+B *+sound* |sound_playevent()|, |sound_playfile()| functions, etc.
+N *+spell* spell checking support, see |spell|
N *+startuptime* |--startuptime| argument
N *+statusline* Options 'statusline', 'rulerformat' and special
formats of 'titlestring' and 'iconstring'
diff --git a/runtime/syntax/matlab.vim b/runtime/syntax/matlab.vim
index 5228bb5c43..520280980a 100644
--- a/runtime/syntax/matlab.vim
+++ b/runtime/syntax/matlab.vim
@@ -4,9 +4,10 @@
" Credits: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
" Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com
" Original author: Mario Eusebio
-" Last Change: Mon Jan 23 2017
-" added support for cell mode
+" Last Change: June 10 2019
+" added highlight rule for double-quoted string literals
" Change History:
+" - double-quoted string literals added
" - now highlights cell-mode separator comments
" - 'global' and 'persistent' keyword are now recognized
@@ -40,6 +41,7 @@ syn match matlabLineContinuation "\.\{3}"
" String
" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence
syn region matlabString start=+'+ end=+'+ oneline skip=+''+
+syn region matlabStringArray start=+"+ end=+"+ oneline skip=+""+
" If you don't like tabs
syn match matlabTab "\t"
@@ -87,6 +89,7 @@ hi def link matlabExceptions Conditional
hi def link matlabRepeat Repeat
hi def link matlabTodo Todo
hi def link matlabString String
+hi def link matlabStringArray String
hi def link matlabDelimiter Identifier
hi def link matlabTransposeOther Identifier
hi def link matlabNumber Number
diff --git a/runtime/syntax/typescript.vim b/runtime/syntax/typescript.vim
index 3ce30f8b6d..bc382610a9 100644
--- a/runtime/syntax/typescript.vim
+++ b/runtime/syntax/typescript.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: TypeScript
" Maintainer: Bram Moolenaar
-" Last Change: 2019 Jun 06
+" Last Change: 2019 Jun 07
" Based On: Herrington Darkholme's yats.vim
" Changes: See https:github.com/HerringtonDarkholme/yats.vim
" Credits: See yats.vim
@@ -791,6 +791,12 @@ if get(g:, 'yats_host_keyword', 1)
syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearInterval
hi def link typescriptNodeGlobal Structure
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName describe it test
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName before after
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName beforeEach afterEach
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName beforeAll afterAll
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName expect assert
+
"runtime syntax/yats/web.vim
syntax keyword typescriptBOM containedin=typescriptIdentifierName AbortController
syntax keyword typescriptBOM containedin=typescriptIdentifierName AbstractWorker AnalyserNode
diff --git a/runtime/tutor/tutor.ko b/runtime/tutor/tutor.ko
new file mode 100644
index 0000000000..942fdb44a8
--- /dev/null
+++ b/runtime/tutor/tutor.ko
@@ -0,0 +1,968 @@
+===============================================================================
+= 빔 길잡이 (VIM Tutor) 에 오신 것을 환영합니다 - Version 1.7 =
+===============================================================================
+
+ 빔(Vim)은 이 길잡이에서 다 설명할 수 없을 만큼 많은 명령을 가진
+ 매우 강력한 편집기입니다. 이 길잡이는 빔을 쉽게 전천후 편집기로 사용할
+ 수 있도록 충분한 명령에 대해 설명하고 있습니다.
+
+ 이 길잡이를 떼는 데에는 실습하는 데에 얼마나 시간을 쓰는 가에 따라서
+ 25-30 분 정도가 걸립니다.
+
+ 이 연습에 포함된 명령은 내용을 고칩니다. 이 파일의 복사본을 만들어서
+ 연습하세요. (vimtutor 를 통해 시작했다면, 이미 복사본을 사용하는
+ 중입니다.)
+
+ 중요한 것은, 이 길잡이가 직접 써보면서 배우도록 고려되어 있다는 것입니다.
+ 명령을 제대로 익히려면, 직접 실행해보는 것이 필요합니다. 내용을 읽는
+ 것만으로는, 명령을 잊어버리게 될 것입니다.
+
+ 자 이제, Caps Lock(Shift-Lock) 키가 눌려있지 않은지 확인해보시고, j 키를
+ 충분히 눌러서 Lesson 1.1이 화면에 가득 차도록 움직여봅시다.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 1.1: 커서 움직이기
+
+ ** 커서를 움직이려면, 표시된 대로 h,j,k,l 키를 누르십시오. **
+ ^
+ k 힌트: h 키는 왼쪽에 있으며, 왼쪽으로 움직입니다.
+ < h l > l 키는 오른쪽에 있으며, 오른쪽으로
+ j 움직입니다.
+ v j 키는 아래방향 화살표처럼 생겼습니다.
+
+ 1. 익숙해질 때까지 커서를 스크린 상에서 움직여 보십시오.
+
+ 2. 아래 방향키 (j)를 반복입력이 될 때까지 누르고 계십시오.
+ 이제 다음 lesson으로 가는 방법을 알게 되었습니다.
+
+ 3. 아래 방향키를 이용하여, Lesson 1.2 로 가십시오.
+
+참고: 원하지 않는 무언가가 입력이 되었다면, <ESC>를 눌러서, 명령 모드로
+ 돌아가십시오. 그 후에 원하는 명령을 다시 입력하십시오.
+
+참고: 커서키 또한 작동할 것입니다. 하지만 hjkl에 익숙해지면, 커서키보다
+ 훨씬 빠르게 이동할 수 있을 것입니다. 정말요!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 1.2: 빔을 시작하고 끝내기
+
+
+ !! 주의: 아래 있는 단계를 실행하기 전에, 이 lesson 전체를 읽으십시오!!
+
+ 1. <ESC> 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다.
+
+ 2. 다음과 같이 입력합니다: :q! <ENTER>
+ 이렇게 하면, 바뀐 내용을 *저장하지 않고* 편집기를 빠져나갑니다.
+
+ 3. 쉘 프롬프트가 보인다면, 다시 길잡이로 돌아오기 위해 다음과 같이
+ 입력합니다.
+ vimtutor <ENTER>
+ 또는 다음과 같을 수도 있습니다.
+ vim tutor.ko <ENTER>
+
+---> 'vim' 은 빔 편집기로 들어가는 것을 뜻하며, 'tutor.ko'는 편집하려는
+ 파일을 뜻합니다.
+
+ 4. 위에서 이야기한 단계를 기억하였으며, 확신이 서면, 1에서 3까지를
+ 수행하여 편집기를 나갔다가 다시 들어와 보십시오.
+
+주의: :q! <ENTER> 는 바뀐 내용을 저장하지 않습니다. 이 후 lesson에서
+ 어떻게 편집 내용을 저장하는지 배울 수 있습니다.
+
+ 5. 그 후 커서를 아래로 움직여 Lesson 1.3 으로 가십시오.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 1.3: 텍스트 편집 - 지우기
+
+
+** 명령 모드에서 x 를 누르면 커서가 위치한 곳의 글자를 지울 수 있습니다. **
+
+ 1. ----> 로 표시된 곳으로 커서를 옮겨보십시오.
+
+ 2. 오타를 수정하기 위해, 커서를 지울 글자 위로 움직여 보십시오.
+
+ 3. x 키를 눌러서 지워야할 글자를 지우십시오.
+
+ 4. 2에서 4까지를 반복하여 문장이 올바르게 되도록 하여 보십시오.
+
+---> The ccow jumpedd ovverr thhe mooon.
+
+ 5. 문장이 정확해졌다면, Lesson 1.4로 가십시오.
+
+주의: 이 길잡이를 보면서 외우려고 하지말고, 직접 사용해보면서 익히길
+ 바랍니다.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 1.4: 텍스트 편집 - 삽입 (INSERTION)
+
+
+ ** 명령 모드에서 i 를 누르면 텍스트를 입력할 수 있습니다. **
+
+ 1. 커서를 첫번째 ---> 로 표시된 줄로 움직입니다.
+
+ 2. 첫번째 줄을 두번째 줄과 똑같이 만들것입니다. 텍스트가 들어가야할
+ 곳 다음부터 첫번째 글자 위에 커서를 옮겨 놓습니다.
+
+ 3. i 키를 누른 후, 필요한 내용을 입력합니다.
+
+ 4. 수정한 후에는 <ESC> 를 눌러서 명령 모드로 돌아갑니다.
+ 문장을 올바르게 만들기 위해 2에서 4의 과정을 반복합니다.
+
+---> There is text misng this .
+---> There is some text missing from this line.
+
+ 5. 텍스트를 삽입하는 데에 익숙해졌다면, Lesson 1.5로 가십시오.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 1.5: 택스트 편집 - 추가 (APPENDING)
+
+
+ ** A 를 입력해 텍스트를 추가할 수 있습니다. **
+
+ 1. 커서를 첫번째 ---> 로 표시된 줄로 움직입니다.
+ 커서가 문장 내 어디에 있던 상관없습니다.
+
+ 2. A 키를 눌러 필요한 내용을 입력합니다.
+
+ 3. 내용을 모두 입력한 후 <ESC>를 눌러 명령 모드로 돌아갑니다.
+
+ 4. 커서를 두번째 ---> 로 표시된 줄로 움직입니다.
+ 문장을 올바르게 만들기 위해 2에서 3의 과정을 반복합니다.
+
+---> There is some text missing from th
+ There is some text missing from this line.
+---> There is also some text miss
+ There is also some text missing here.
+
+ 5. 텍스트를 추가하는 데 익숙해졌다면, Lesson 1.6으로 가십시오.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 1.6: 파일 편집
+
+ ** :wq 를 이용하여 파일을 저장하고 빠져나갈 수 있습니다. **
+
+ !! 주의: 아래 있는 단계를 실행하기 전에, 이 lesson 전체를 읽으십시오!!
+
+ 1. lesson 1.2에서 배웠던 것처럼 :q!로 편집기를 나갈 수 있습니다.
+ 만약, 다른 터미널에 접근 가능하다면, 아래의 단계를 다른 터미널에서 해봅니다.
+
+ 2. 쉘 프롬프트에 다음과 같이 입력합니다: vim tutor <ENTER>
+ 'vim' 은 빔 에디터 시작을 위한 명령어, 'tutor'는 수정하고자 하는
+ 파일의 이름 입니다.
+
+ 3. 앞에서 배웠던 것처럼 텍스트를 삽입하고 지워보세요.
+
+ 4. 다음 명령어를 이용해 파일 수정 부분을 저장하고 빠져나갑니다: :wq <ENTER>
+
+ 5. 만약 1에서 vimtutor를 빠져나갔다가 다시 들어왔다면, 아래로 움직여 요약으로 넘어가도록 합시다.
+
+ 6. 위 모든 단계를 다 읽고 이해한 후에 직접 해보세요.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ LESSON 1 요약
+
+
+ 1. 커서를 움직일 때에는 화살표 키나 hjkl 키를 이용합니다.
+ h (왼쪽) j (아래) k (위) l (오른쪽)
+
+ 2. 쉘 프롬프트에서 빔을 시작하려면 vim FILENAME <ENTER>
+
+ 3. 수정한 내용을 무시한 채로 빔에서 빠져나가려면 <ESC> :q! <ENTER>
+ 저장한 후 빔에서 빠져나가려면 <ESC> :wq <ENTER>
+
+ 4. 명령 모드에서 커서가 위치한 곳의 글자를 지우려면 x 를 입력합니다.
+
+ 5. 명령 모드에서 커서가 위치한 곳에 텍스트를 삽입하려면
+ i 를 누른 후 텍스트를 입력하고 <ESC> 커서 앞에 삽입합니다.
+ A 를 누른 후 텍스트를 입력하고 <ESC> 문장 뒤에 추가 합니다.
+
+참고: <ESC>는 명령 모드로 돌아가는 데 쓰며, 원치 않는 명령이나 완전히 입력되지
+ 않은 명령을 취소하는 데에도 씁니다.
+
+그럼 Lesson 2를 시작합시다.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 2.1: 삭제(DELETION) 명령
+
+
+ ** 한 단어를 끝까지 지우려면 dw 라고 치면 됩니다. **
+
+ 1. <ESC> 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다.
+
+ 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다.
+
+ 3. 지워야할 단어의 처음으로 커서를 옮깁니다.
+
+ 4. dw 라고 쳐서 그 단어를 지웁니다.
+
+ 주의: 위에서 말한대로 하면 화면의 마지막 줄에 dw 라는 글자가 표시됩니다.
+ 잘못 쳤다면, <ESC> 를 눌러서 다시 시작하십시오.
+
+---> There are a some words fun that don't belong paper in this sentence.
+
+ 5. 3, 4번 과정을 다시 하여 문장을 정확하게 만든 뒤 Lesson 2.2로 가십시오.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 2.2: 다른 삭제 명령
+
+ ** d$ 라고 치면 그 줄 끝까지 지워집니다. **
+
+ 1. <ESC> 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다.
+
+ 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다.
+
+ 3. 올바른 줄의 끝으로 커서를 옮깁니다. (첫번째로 나오는 . 다음입니다.)
+
+ 4. d$ 라고 쳐서 줄 끝까지 지웁니다.
+
+---> Somebody typed the end of this line twice. end of this line twice.
+
+
+ 5. 어떤 일이 일어났는지 이해하기 위해 Lesson 2.3 으로 가십시오.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 2.3: 명령과 적용 대상에 대해
+
+
+ 삭제 명령 d의 형식은 다음과 같습니다.
+
+ d 대상
+
+ 여기서:
+ d - 지우는 명령
+ 대상 - 아래에 제시된 대상에 대해 명령을 수행
+
+ 적용 가능한 대상의 종류:
+ w - 커서에서 그 단어의 끝까지 (공백 포함.)
+ e - 커서에서 그 단어의 끝까지 (공백을 포함하지 않음.)
+ $ - 커서에서 그 줄의 끝까지
+
+ 예를 들어, de 는 커서의 위치부터 해당 단어의 끝까지 지웁니다.
+
+참고: 호기심이 있다면, 명령 모드에서 명령 없이 대상을 입력해보십시오.
+ 위에서 이야기한 대상의 목록에 따라 커서가 움직이게 됩니다.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 2.4: 대상에 반복 적용하기
+
+
+ ** 대상 이전에 숫자를 넣어주면 그 만큼 반복 됩니다. **
+
+ 1. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다.
+
+ 2. 2w 입력하여 커서를 단어 두 개 뒤로 옮깁니다.
+
+ 3. 3e 입력하여 커서를 뒤로 세 번째 단어의 끝으로 옮깁니다.
+
+ 4. 0 (zero) 를 입력하여 문장의 시작부분으로 움직입니다.
+
+ 5. 2에서 3까지를 다른 숫자로 반복해 봅니다.
+
+---> This is just a line with words you can move around in.
+
+ 6. Lesson 2.5로 가십시오.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 2.5: 삭제에 반복 적용하기
+
+
+ ** 명령과 숫자를 함께 사용하면 그만큼 반복 수행 됩니다. **
+
+ 위에서 삭제 명령과 대상의 조합과 같이, 대상 이전에 횟수를 넣어 더 많이 삭제 할 수 있습니다:
+ d 횟수 대상
+
+ 1. 아래 ---> 표시된 줄에서 커서를 첫번째 대문자 단어로 옮깁니다.
+
+ 2. d2w를 입력하여 두 대문자 단어를 지웁니다.
+
+ 3. 이어지는 대문자 단어들을 1에서 2까지의 단계를 이용해 횟수를 바꾸어 삭제해 봅니다.
+
+---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lesson 2.6: 줄 전체 조작하기
+
+
+
+ ** dd 라고 치면 줄 전체를 지웁니다. **
+
+ 줄 전체를 지우는 일이 잦기 때문에, Vi를 디자인 한 사람들은, 간단히 d를
+ 두번 연달아 치면 한 줄을 지울 수 있도록 하였습니다.
+
+ 1. 커서를 아래 나온 단락의 두번째 줄로 가져가십시오.
+ 2. dd 를 입력하여 그 줄을 지우십시오.
+ 3. 그런 다음 네번째 줄로 가십시오.
+ 4. 2dd 라고 입력하여 두줄을 지웁니다. ( 횟수-명령-대상을 기억하세요. )
+
+---> 1) Roses are red,
+---> 2) Mud is fun,
+---> 3) Violets are blue,
+---> 4) I have a car,
+---> 5) Clocks tell time,
+---> 6) Sugar is sweet
+---> 7) And so are you.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~