From: Mao-Yining <101858210+mao-yining@users.noreply.github.com> Date: Fri, 16 Jan 2026 18:20:52 +0000 (+0000) Subject: runtime(tutor): Add Chinese translation for chapter 1 X-Git-Tag: v9.1.2087~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1895b67b780ca3d92c3d2687d8440569810a153;p=thirdparty%2Fvim.git runtime(tutor): Add Chinese translation for chapter 1 closes: #19189 Signed-off-by: Mao-Yining Signed-off-by: Christian Brabandt --- diff --git a/Filelist b/Filelist index 4cfba23235..16adeb5547 100644 --- a/Filelist +++ b/Filelist @@ -1123,6 +1123,8 @@ LANG_GEN = \ runtime/tutor/sr/vim-01-beginner.tutor.json \ runtime/tutor/sr/vim-02-beginner.tutor \ runtime/tutor/sr/vim-02-beginner.tutor.json \ + runtime/tutor/zh/vim-01-beginner.tutor \ + runtime/tutor/zh/vim-01-beginner.tutor.json \ runtime/tutor/tutor1.?? \ runtime/tutor/tutor1.??_?? \ runtime/tutor/tutor1.bar \ diff --git a/runtime/tutor/en/vim-01-beginner.tutor b/runtime/tutor/en/vim-01-beginner.tutor index 8af5d465cf..28d2110cb2 100644 --- a/runtime/tutor/en/vim-01-beginner.tutor +++ b/runtime/tutor/en/vim-01-beginner.tutor @@ -20,7 +20,7 @@ won't be saved. Don't worry about messing things up; just remember that pressing []() and then [u](u) will undo the latest change. This tutorial is interactive, and there are a few things you should know. -- Type []() on links [like this](holy-grail ) to open the linked help section. +- Type []() on links [like this](holy-grail) to open the linked help section. - Or simply type [K](K) on any word to find its documentation! - Sometimes you will be required to modify text like this here diff --git a/runtime/tutor/zh/vim-01-beginner.tutor b/runtime/tutor/zh/vim-01-beginner.tutor new file mode 100644 index 0000000000..c0df23610e --- /dev/null +++ b/runtime/tutor/zh/vim-01-beginner.tutor @@ -0,0 +1,907 @@ +# 欢 迎 来 到 VIM 教 程 + +# 第 一 章 + +Vim 是一个功能非常强大的编辑器,有很多命令,多得没法在这样的教程里全部讲完。 +本教程旨在介绍足够多的命令,让你能轻松把 Vim 当作通用编辑器使用。 +**重要提示**:请记住,本教程是通过实际操作来教学的。这意味着你需要做练习才能正 +确掌握。如果只是阅读文字,很快你就会忘记最重要的部分! + +现在,请确保你的大写锁定键**没有**被按下,然后多次按 j 键,移动光标,直到 “第 0 课” +完全填满屏幕。 + +# 第 0 课 + +注意:课程中的命令会修改文本,但这些改动**不会**被保存。不用担心搞乱内容;只需记住, +按 []() 然后按 [u](u) 可以撤销最新的修改。 + +本教程是交互式的,有几件事你需要知道: +- 在[像这样的链接](holy-grail)上按 []() 可以打开链接的帮助部分。 +- 或者直接在任何一个单词上按 [K](K) 来查找它的文档! +- 有时会要求你修改 +这样的文本。 +当你正确完成更改,左侧的 ✗ 标志会变成 ✓。我想你已经能感觉到 Vim 有多棒了。;) +其他时候,系统会提示你运行一个命令(稍后会解释): +~~~ cmd + :help +~~~ +或者按一系列键 +~~~ normal + 0fd3wP$P +~~~ + +在 < 和 > 之间的文本(比如 ``{normal})描述的是需要按下的键,而不是要输入的文本。 + +现在,移动到下一课(用 `j`{normal} 键向下滚动)。 + +# 第 1.1 课:移动光标 + +** 要移动光标,请按照指示按 `h`、`j`、`k`、`l` 键。 ** + + ↑ + k 提示:`h`{normal} 键在左边,向左移动。 + ← h l → `l`{normal} 键在右边,向右移动。 + j `j`{normal} 键看起来像一个向下的箭头。 + ↓ + + 1. 在屏幕上随意移动光标,直到你感觉熟练为止。 + + 2. 按住向下键(`j`{normal}),直到它开始重复移动。 + 现在你知道如何进入下一课了。 + + 3. 使用向下键,移动到第 1.2 课。 + +注意:如果你不确定自己输入了什么,按 进入普通模式。然后重新输入你想输入的 + 命令。 + +注意:方向键也应该能用。但是一旦你习惯了使用 hjkl,你就能移动得更快。真的! + +# 第 1.2 课:退出 Vim + +!!注意:在执行下面的任何步骤之前,请先阅读完整课内容!! + + 1. 按 键(以确保你处于普通模式)。 + + 2. 输入: + + `:q!`{vim} ``{normal}. + + 这会退出编辑器,并**丢弃**你所做的任何更改。 + + 3. 打开 vim,并通过执行将你带入此教程的命令回到这里。那可能是: + + :Tutor + + 4. 如果你记住了这些步骤并且有信心,请执行步骤 1 到 3 来退出并重新进入编辑器。 + +注意:[:q!](:q) 会丢弃你所做的任何更改。在后面的课程中,你将学习如何将 + 更改保存到文件。 + + 5. 将光标向下移动到第 1.3 课。 + +# 第 1.3 课:文本编辑 - 删除 + +** 按 `x`{normal} 删除光标下的字符。 ** + + 1. 将光标移动到下面标记为 ✗ 的那一行。 + + 2. 要修正错误,移动光标直到它位于要删除的字符上。 + + 3. 按 [x 键](x) 删除不需要的字符。 + + 4. 重复步骤 2 到 4,直到句子正确为止。 + +The ccow jumpedd ovverr thhe mooon. + + 5. 现在这一行已经正确,继续第 1.4 课。 + +注意:在学习本教程时,不要试图死记硬背,要通过使用来学习。 + +# 第 1.4 课:文本编辑:插入 + +** 按 `i`{normal} 来插入文本。 ** + + 1. 将光标移动到下面标记为 ✗ 的第一行。 + + 2. 为了使第一行与第二行相同,将光标移动到要插入文本的位置之后的**第一个字符**上。 + + 3. 按 `i`{normal} 并输入必要的添加内容。 + + 4. 每修正一个错误后,按 ``{normal} 返回普通模式。重复步骤 2 到 4 来纠正句子。 + +There is text misng this . +There is some text missing from this line. + + 5. 当你熟悉插入文本后,移动到第 1.5 课。 + +# 第 1.5 课:文本编辑:追加 + +** 按 `A`{normal} 来追加文本。 ** + + 1. 将光标移动到下面标记为 ✗ 的第一行。光标在该行的哪个字符上并不重要。 + + 2. 按 [A](A) 并输入必要的添加内容。 + + 3. 文本追加完成后,按 ``{normal} 返回普通模式。 + + 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. 当你熟悉追加文本后,移动到第 1.6 课。 + +# 第 1.6 课:编辑文件 + +** 使用 `:wq`{vim} 来保存文件并退出。 ** + +!!注意:在执行下面的任何步骤之前,请先阅读完整课内容!! + + 1. 像在第 1.2 课中那样退出本教程:`:q!`{vim} + 或者,如果你可以访问另一个终端,请在那里进行以下操作。 + + 2. 在 shell 提示符下输入以下命令: +~~~ sh + $ vim tutor +~~~ + 'vim' 是启动 Vim 编辑器的命令,'tutor' 是你希望编辑的文件名。使用一个可以更 + 改的文件。 + + 3. 按照前面课程所学插入和删除文本。 + + 4. 保存更改并退出 Vim: +~~~ cmd + :wq +~~~ + + 注意,你需要按 `` 来执行命令。 + + 5. 如果你在步骤 1 中退出了 vimtutor,请重新启动 vimtutor 并向下移动到以下总结 + 部分。 + + 6. 阅读并理解上述步骤后:动手做吧。 + +# 第 1 课总结 + + 1. 要移动光标,可以使用方向键或 hjkl 键。 + h (left) j (down) k (up) l (right) + + 2. 要从 shell 提示符启动 Vim,输入: +~~~ sh + $ vim FILENAME +~~~ + 3. 要退出 Vim,输入:``{normal} `:q!`{vim} ``{normal} 来丢弃所有更改。 + 或者输入:``{normal} `:wq`{vim} ``{normal} 来保存更改。 + + 4. 要删除光标处的字符,输入:`x`{normal} + + 5. 要插入或追加文本,输入: + `i`{normal} 插入文本 ``{normal} 在光标前插入。 + `A`{normal} 追加文本 ``{normal} 在行尾追加。 + +注意:按 ``{normal} 将使你进入普通模式,或取消一个不需要且未完成的命令。 + +现在继续第 2 课。 + +# 第 2.1 课:删除命令 + +** 输入 `dw`{normal} 来删除一个单词。 ** + + 1. 按 ``{normal} 以确保你处于普通模式。 + + 2. 将光标移动到下面标记为 ✗ 的行。 + + 3. 将光标移动到需要删除的单词的开头。 + + 4. 输入 [d](d)[w](w) 让该单词消失。 + +There are a some words fun that don't belong paper in this sentence. + + 5. 重复步骤 3 和 4,直到句子正确,然后前往第 2.2 课。 + +# 第 2.2 课:更多删除命令 + +** 输入 `d$`{normal} 来删除到行尾。 ** + + 1. 按 ``{normal} 以确保你处于普通模式。 + + 2. 将光标移动到下面标记为 ✗ 的行。 + + 3. 将光标移动到正确行的末尾(在第一个 . 之后)。 + + 4. 输入 `d$`{normal} 删除到行尾。 + +Somebody typed the end of this line twice. end of this line twice. + + 5. 前往第 2.3 课以了解发生了什么。 + +# 第 2.3 课:关于操作符和动作 + +许多更改文本的命令由一个[操作符](operator)和一个[动作](navigation)组成。 +使用 [d](d) 删除操作符的删除命令格式如下: + + d 动作 + + 其中: + d - 是删除操作符。 + 动作 - 是操作符将要操作的对象(见下文)。 + + 动作的简短列表: + [w](w) - 直到下一个单词的开头,**不包括**其第一个字符。 + [e](e) - 到当前单词的结尾,**包括**最后一个字符。 + [$]($) - 到行尾,**包括**最后一个字符。 + + 因此,输入 `de`{normal} 将从光标删除到单词末尾。 + +注意:在普通模式下,只按动作键(不带操作符)将按指定方式移动光标。 + +# 第 2.4 课:对动作使用计数 + +** 在动作前输入数字可以使其重复多次。 ** + + 1. 将光标移动到下面标记为 ✓ 的行的开头。 + + 2. 输入 `2w`{normal} 将光标向前移动两个单词。 + + 3. 输入 `3e`{normal} 将光标移动到向前第三个单词的末尾。 + + 4. 输入 `0`{normal} ([0](0)) 移动到行首。 + + 5. 用不同的数字重复步骤 2 和 3。 + +This is just a line with words you can move around in. + + 6. 前往第 2.5 课。 + +# 第 2.5 课:使用计数来删除更多 + +** 在操作符前输入数字可以使其重复多次。 ** + +在上面提到的删除操作符和动作的组合中,你可以在动作前插入一个计数来删除更多: + d 数字 动作 + + 1. 将光标移动到标记为 ✗ 的行中的第一个大写单词上。 + + 2. 输入 `d2w`{normal} 删除两个大写单词。 + + 3. 使用不同的计数重复步骤 1 和 2,用一个命令删除连续的大写单词。 + +This ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. + +# 第 2.6 课:对整行进行操作 + +** 输入 `dd`{normal} 删除整行。 ** + +由于删除整行的频率很高,Vi 的设计者认为简单地输入两个 d 来删除一行会更方便。 + + 1. 将光标移动到下面短语的第二行。 + 2. 输入 [dd](dd) 删除该行。 + 3. 现在移动到第四行。 + 4. 输入 `2dd`{normal} 删除两行。 + +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. + +# 第 2.7 课:撤销命令 + +** 按 `u`{normal} 撤销上一个命令,按 `U`{normal} 修复整行。 ** + + 1. 将光标移动到下面标记为 ✗ 的行,并将其放在第一个错误上。 + 2. 输入 `x`{normal} 删除第一个不需要的字符。 + 3. 现在输入 `u`{normal} 撤销最后执行的命令。 + 4. 这次使用 `x`{normal} 命令修复该行上的所有错误。 + 5. 现在输入大写的 `U`{normal} 将该行恢复到原始状态。 + 6. 现在多次输入 `u`{normal} 来撤销 `U`{normal} 及之前的命令。 + 7. 现在多次输入 ``{normal} (Control + R) 来重做命令(撤销撤销操作)。 + +Fiix the errors oon thhis line and reeplace them witth undo. + + 8. 这些是非常有用的命令。现在前往第 2 课总结。 + +# 第 2 课总结 + + 1. 要从光标删除到下一个单词,输入: `dw`{normal} + 2. 要从光标删除到行尾,输入: `d$`{normal} + 3. 要删除整行,输入: `dd`{normal} + 4. 要重复一个动作,在其前面加上数字: `2w`{normal} + + 5. 更改命令的格式是: + 操作符 [数字] 动作 + where: + 操作符 - 是要做什么,例如 [d](d) 表示删除 + [数字] - 是可选的计数,用于重复动作 + 动作 - 指定操作要覆盖的文本范围,例如: + [w](w) (单词), + [$]($) (到行尾), 等等。 + + 6. 要移动到行首,使用零:[0](0) + + 7. 要撤销之前的操作,输入: `u`{normal} (小写 u) + 要撤销一行上的所有更改,输入: `U`{normal} (大写 U) + 要重做(撤销撤销操作),输入: ``{normal} + +# 第 3.1 课:放置命令 + +** 输入 `p`{normal} 将先前删除的文本放到光标之后。 ** + + 1. 将光标移动到下面第一个标记为 ✓ 的行。 + + 2. 输入 `dd`{normal} 删除该行并将其存储在 Vim 寄存器中。 + + 3. 将光标移动到 c) 行,放在被删除行应该放置的位置**之上**。 + + 4. 输入 `p`{normal} 将行放在光标下方。 + + 5. 重复步骤 2 到 4,将所有行按正确顺序放置。 + +d) Can you learn too? +b) Violets are blue, +c) Intelligence is learned, +a) Roses are red, + +# 第 3.2 课:替换命令 + +** 输入 `rx`{normal} 用 x 替换光标处的字符。 ** + + 1. 将光标移动到下面标记为 ✗ 的第一行。 + + 2. 移动光标,使其位于第一个错误上。 + + 3. 输入 `r`{normal},然后输入应该在那里的字符。 + + 4. 重复步骤 2 和 3,直到第一行与第二行相同。 + +Whan this lime was tuoed in, someone presswd some wrojg keys! +When this line was typed in, someone pressed some wrong keys! + + 5. 现在前往第 3.3 课。 + +注意:记住你应该通过动手做来学习,而不是死记硬背。 + +# 第 3.3 课:更改操作符 + +** 要更改到单词末尾,输入 `ce`{normal}。 ** + + 1. 将光标移动到下面标记为 ✗ 的第一行。 + + 2. 将光标放在 "lubw" 的 "u" 上。 + + 3. 输入 `ce`{normal} 和正确的单词(在这里,输入 "ine")。 + + 4. 按 ``{normal} 并移动到下一个需要更改的字符。 + + 5. 重复步骤 3 和 4,直到第一个句子与第二个相同。 + +This lubw has a few wptfd that mrrf changing usf the change operator. +This line has a few words that need changing using the change operator. + +注意:[c](c)e 会删除单词并使你进入插入模式。 + +# 第 3.4 课:使用 `c`{normal} 进行更多更改 + +** 更改操作符与删除使用相同的动作。 ** + + 1. 更改操作符的工作方式与删除相同。格式是: + + c [数字] 动作 + + 2. 动作是相同的,例如 `w`{normal} (单词) 和 `$`{normal} (行尾)。 + + 3. 移动到下面标记为 ✗ 的第一行。 + + 4. 将光标移动到第一个错误。 + + 5. 输入 `c$`{normal} 并像第二行那样输入该行的其余部分,然后按 ``{normal}。 + +The end of this line needs some help to make it like the second. +The end of this line needs to be corrected using the c$ command. + +注意:你可以在输入时使用退格键来纠正错误。 + +# 第 3 课总结 + + 1. 要放回刚刚删除的文本,输入 [p](p)。这会将删除的文本放在光标**之后**(如果删除了一行, + 它将放在光标下方的那一行)。 + + 2. 要替换光标下的字符,输入 [r](r),然后输入你想要的字符。 + + 3. [更改操作符](c) 允许你从光标处更改到动作指定的位置。输入 `ce`{normal} 从光标更改到单词末尾, + `c$`{normal} 更改到行尾。 + + 4. 更改的格式是: + + c [数字] 动作 + +现在前往下一课。 + +# 第 4.1 课:光标位置和文件状态 + +** 输入 ``{normal} 以显示你在文件中的位置和文件状态。 + 输入 `{行号}G`{normal} 以移动到文件中的第 {行号} 行。 ** + +注意:在执行任何步骤之前,请阅读完整课内容!! + + 1. 按住 ``{normal} 键并按下 `g`{normal}。我们称之为 ``{normal}。页面底部会出现一条消息,显示文件 + 名和文件中的位置。记住步骤 3 所需的行号。 + +注意:你可能会在屏幕右下角看到光标位置。当 ['ruler']('ruler') 选项被设置 +时,就会发生这种情况。 + 2. 按 [G](G) 移动到文件底部。 + 输入 [gg](gg) 移动到文件开头。 + + 3. 输入你所在的行号,然后输入 `G`{normal}。这将使你返回到第一次按 ``{normal} 时所在的行。 + + 4. 如果你有信心,请执行步骤 1 到 3。 + +# 第 4.2 课:搜索命令 + +** 输入 `/`{normal} 后跟短语以搜索该短语。 ** + + 1. 在普通模式下输入 `/`{normal} 字符。注意它和光标会像 `:`{normal} 命令一样出现在屏幕底部。 + + 2. 现在输入 'errroor' ``{normal}。这是你要搜索的单词。 + + 3. 要再次搜索相同的短语,只需输入 [n](n)。 + 要朝相反方向搜索相同的短语,输入 [N](N)。 + + 4. 要向后搜索短语,使用 [?](?) 代替 `/`{normal}。 + + 5. 要返回到你来的地方,按 ``{normal}(按住 ``{normal} 同时按下字母 `o`{normal})。重复按可以返回 + 更早的位置。``{normal} 向前移动。 + +"errroor" is not the way to spell error; errroor is an error. + +注意:当搜索到达文件末尾时,除非 ['wrapscan']('wrapscan') 选项被重置,否则它会从文件开头继续。 + + +# 第 4.3 课:匹配括号搜索 + +** 输入 `%`{normal} 以找到匹配的 )、] 或 }。 ** + + 1. 将光标放在下面标记为 ✓ 的行中的任意 (、[ 或 { 上。 + + 2. 现在输入 [%](%) 字符。 + + 3. 光标将移动到匹配的括号或方括号。 + + 4. 输入 `%`{normal} 将光标移动到另一个匹配的括号。 + + 5. 将光标移动到另一个 (, ), [, ], { 或 } 上,看看 `%`{normal} 会做什么。 + +This ( is a test line with ('s, ['s ] and {'s } in it. )) + +注意:这对于调试括号不匹配的程序非常有用! + +# 第 4.4 课:替换命令 + +** 输入 `:s/旧文本/新文本/g` 以用“新文本”替换“旧文本”。 ** + + 1. 将光标移动到下面标记为 ✗ 的行。 + + 2. 输入 +~~~ cmd + :s/thee/the/ +~~~ + 注意 [:s](:s) 命令只更改了行中第一个 "thee" 的出现。 + + 3. 现在输入 +~~~ cmd + :s/thee/the/g +~~~ + 添加 g [标志](:s_flags) 意味着在行中全局替换,更改行中所有 "thee" 的出现。 + +Usually thee best time to see thee flowers is in thee spring. + + 4. 要更改两行之间的每个字符串出现,输入 +~~~ cmd + :#,#s/旧文本/新文本/g +~~~ + 其中 #,# 是要进行替换的行范围的行号。 + + 输入 +~~~ cmd + :%s/旧文本/新文本/g +~~~ + 以更改整个文件中的每个出现。 + + 输入 +~~~ cmd + :%s/旧文本/新文本/gc +~~~ + 以查找整个文件中的每个匹配,并提示是否替换。 + +# 第 4 课总结 + + 1. ``{normal} 显示你的位置和文件状态。 + `G`{normal} 移动到文件末尾。 + 行号 `G`{normal} 移动到该行号。 + `gg`{normal} 移动到第一行。 + + 2. 输入 `/`{normal} 后跟短语向前搜索该短语。 + 输入 `?`{normal} 后跟短语向后搜索该短语。 + 搜索后输入 `n`{normal} 以在同一方向查找下一个出现,或输入 `N`{normal} 以朝相反方向搜索。 + ``{normal} 带你回到较早的位置,``{normal} 到较新的位置。 + + 3. 当光标在 (, ), [, ], {, 或 } 上时,输入 `%`{normal} 会跳转到其匹配项。 + + 4. 要用新文本替换行中的第一个旧文本,输入 +~~~ cmd + :s/旧文本/新文本 +~~~ + 要用新文本替换行中的所有旧文本,输入 +~~~ cmd + :s/旧文本/新文本/g +~~~ + 要替换两个行号之间的短语,输入 +~~~ cmd + :#,#s/旧文本/新文本/g +~~~ + 要替换文件中的所有出现,输入 +~~~ cmd + :%s/旧文本/新文本/g +~~~ + 要每次询问确认,添加 'c' +~~~ cmd + :%s/旧文本/新文本/gc +~~~ + +# 第 5.1 课:如何执行外部命令 + +** 输入 `:!`{vim} 后跟外部命令以执行该命令。 ** + + 1. 输入熟悉的命令 `:`{normal} 将光标设置在屏幕底部。这允许你输入命令行命令。 + + 2. 现在输入 [!](!cmd)(感叹号)字符。这允许你执行任何外部 shell 命令。 + + 3. 例如,在 "!" 后面输入 "ls",然后按 ``{normal}。这将显示你目录的列表, + 就像你在 shell 提示符下一样。 + +注意:可以通过这种方式执行任何外部命令,也可以带参数。 + +注意:所有 `:`{vim} 命令必须通过按 ``{normal} 来完成。从现在起,我们不会总是提到这一点。 + +# 第 5.2 课:关于写入文件的更多内容 + +** 要保存对文本所做的更改,输入 `:w`{vim} 文件名。 ** + + 1. 输入 `:!ls`{vim} 获取你目录的列表。你已经知道之后必须按 ``{normal}。 + + 2. 选择一个尚不存在的文件名,例如 TEST。 + + 3. 现在输入: +~~~ cmd + :w TEST +~~~ + (其中 TEST 是你选择的文件名。) + + 4. 这将整个文件(Vim 教程)以 TEST 为名保存。要验证这一点,再次输入 `:!ls`{vim} 查看 + 你的目录。 + +注意:如果你退出 Vim 并用 `vim TEST` 重新启动,该文件将是你保存时教程的精确副本。 + + 5. 现在通过输入以下命令删除该文件: +~~~ cmd + :!rm TEST +~~~ + +# 第 5.3 课:选择要写入的文本 + +** 要保存文件的一部分,输入 `v`{normal} 动作 `:w 文件名`{vim}。 ** + + 1. 将光标移动到本行。 + + 2. 按 [v](v) 并将光标移动到下面第五个项目。注意文本被高亮显示。 + + 3. 按 `:`{normal} 字符。屏幕底部会出现 + + :'<,'> + + 4. 输入 + + `:w TEST`{vim} + + 其中 TEST 是一个尚不存在的文件名。验证在按 ``{normal} 之前你看到的是 + + `:'<,'>w TEST`{vim} + + 5. Vim 会将选定的行写入文件 TEST。使用 `:!ls`{vim} 查看它。先不要删除它!我们 + 将在下一课中使用它。 + +注意:按 [v](v) 启动[可视选择](visual-mode)。你可以移动光标来扩大或缩小选择范围。 +然后你可以使用操作符对文本执行操作。例如,`d`{normal} 删除文本。 + +# 第 5.4 课:检索和合并文件 + +** 要插入文件的内容,输入 `:r 文件名`{vim}。 ** + + 1. 将光标放在本行上方。 + +注意:执行步骤 2 后,你将看到第 5.3 课的文本。然后向下移动以再次看到本课。 + + 2. 现在使用以下命令检索你的 TEST 文件 + + `:r TEST`{vim} + + 其中 TEST 是你使用的文件名。检索到的文件放在光标行的下方。 + + 3. 要验证文件已被检索,将光标移回并注意现在有两个第 5.3 课的副本,原始版本和文 + 件版本。 + +注意:你也可以读取外部命令的输出。例如, + + `:r !ls`{vim} + + 读取 `ls` 命令的输出并将其放在光标下方。 + +# 第 5 课总结 + + 1. [:!命令](:!cmd) 执行外部命令。 + + 一些有用的例子是: + `:!ls`{vim} - 显示目录列表 + `:!rm 文件名`{vim} - 删除文件 FILENAME + + 2. [:w](:w) 文件名 将当前 Vim 文件以文件名保存到磁盘。 + + 3. [v](v) 动作 :w 文件名 将可视选择的行保存到文件 FILENAME。 + + 4. [:r](:r) 文件名 从磁盘检索文件 FILENAME 并将其放在光标位置下方。 + + 5. [:r !dir](:r!) 读取 dir 命令的输出并将其放在光标位置下方。 + +# 第 6.1 课:打开命令 + +** 输入 `o`{normal} 以在光标下方打开一行并使你进入插入模式。 ** + + 1. 将光标移动到下面标记为 ✓ 的行。 + + 2. 输入小写字母 `o`{normal} 以在光标**下方**[打开](o)一行并使你进入插入模式。 + + 3. 现在输入一些文本并按 ``{normal} 退出插入模式。 + +输入 `o`{normal} 后,光标被置于打开的行上,处于插入模式。 + + 4. 要在光标**上方**打开一行,只需输入[大写 O](O),而不是小写 `o`{normal}。在下面一行试试。 + +在此行上方打开一行,在光标位于此行时输入 O。 + +# 第 6.2 课:追加命令 + +** 输入 `a`{normal} 以在光标**之后**插入文本。 ** + + 1. 将光标移动到下面标记为 ✗ 的行的开头。 + + 2. 按 `e`{normal} 直到光标位于 "li" 的末尾。 + + 3. 输入小写字母 `a`{normal} 以在光标**之后**[追加](a)文本。 + + 4. 像下面那行一样完成单词。按 ``{normal} 退出插入模式。 + + 5. 使用 `e`{normal} 移动到下一个不完整的单词,重复步骤 3 和 4。 + +This li will allow you to pract appendi text to a line. +This line will allow you to practice appending text to a line. + +注意:[a](a)、[i](i) 和 [A](A) 都进入相同的插入模式,唯一的区别是字符插入的位置。 + +# 第 6.3 课:另一种替换方式 + +** 输入大写 `R`{normal} 以替换多个字符。 ** + + 1. 将光标移动到下面标记为 ✗ 的第一行。将光标移动到第一个 "xxx" 的开头。 + + 2. 现在按 `R`{normal} ([大写 R](R)) 并输入第二行中它下面的数字,以替换 "xxx"。 + + 3. 按 ``{normal} 离开[替换模式](mode-replace)。注意该行的其余部分保持不变。 + + 4. 重复步骤以替换剩余的 "xxx"。 + +Adding 123 to xxx gives you xxx. +Adding 123 to 456 gives you 579. + +注意:替换模式类似于插入模式,但每个键入的字符都会删除一个现有字符。 + +# 第 6.4 课:复制和粘贴文本 + +** 使用 `y`{normal} 操作符复制文本,使用 `p`{normal} 粘贴它。 ** + + 1. 转到下面标记为 ✓ 的行,将光标放在 "a)" 之后。 + + 2. 用 `v`{normal} 启动可视模式,并将光标移动到 "first" 之前。 + + 3. 输入 `y`{normal} 以[复制](yank)(复制)高亮的文本。 + + 4. 将光标移动到下一行的末尾:`j$`{normal} + + 5. 输入 `p`{normal} 以[放置](put)(粘贴)文本。 + + 6. 按 `a`{normal},然后输入 "second"。按 ``{normal} 离开插入模式。 + + 7. 使用可视模式选择 "item.",用 `y`{normal} 复制它,用 `j$`{normal} 移动到下一 + 行的末尾,并用 `p`{normal} 将文本放在那里。 + +a) This is the first item. +b) + +注意:你可以将 `y`{normal} 用作操作符:`yw`{normal} 复制一个单词。 + +# 第 6.5 课:设置选项 + +** 设置选项以使搜索或替换忽略大小写。 ** + + 1. 通过输入搜索 'ignore':`/ignore` + 通过按 `n`{normal} 重复几次。 + + 2. 通过输入设置 'ic'(忽略大小写)选项: +~~~ cmd + :set ic +~~~ + 3. 现在再次通过按 `n`{normal} 搜索 'ignore'。 + 注意现在 Ignore 和 IGNORE 也被找到了。 + + 4. 设置 'hlsearch' 和 'incsearch' 选项: +~~~ cmd + :set hls is +~~~ + 5. 现在再次输入搜索命令,看看会发生什么:/ignore + + 6. 要禁用忽略大小写,输入: +~~~ cmd + :set noic +~~~ + 7. 要切换设置的开关,在前面加上 "inv": +~~~ cmd + :set invic +~~~ +注意:要移除匹配项的高亮显示,输入: +~~~ cmd + :nohlsearch +~~~ +注意:如果你只想对一次搜索命令忽略大小写,在短语中使用 [\c](/\c):/ignore\c + +# 第 6 课总结 + + 1. 输入 `o`{normal} 在光标**下方**打开一行并启动插入模式。 + 输入 `O`{normal} 在光标**上方**打开一行。 + + 2. 输入 `a`{normal} 在光标**之后**插入文本。 + 输入 `A`{normal} 在行尾之后插入文本。 + + 3. `e`{normal} 命令移动到单词末尾。 + + 4. `y`{normal} 操作符复制文本,`p`{normal} 粘贴它。 + + 5. 输入大写 `R`{normal} 进入替换模式,直到按 ``{normal}。 + + 6. 输入 "[:set](:set) xxx" 设置选项 "xxx"。一些选项是: + + 'ic' 'ignorecase' 搜索时忽略大小写 + 'is' 'incsearch' 显示搜索短语的部分匹配 + 'hls' 'hlsearch' 高亮所有匹配的短语 + + 你可以使用完整或简短的选项名。 + + 7. 在前面加上 "no" 来关闭选项: +~~~ cmd + :set noic +~~~ + 8. 在前面加上 "inv" 来切换选项: +~~~ cmd + :set invic +~~~ + +# 第 7.1 课:获取帮助 + +** 使用在线帮助系统。 ** + +Vim 有一个全面的在线帮助系统。要开始使用,试试以下三种方法之一: + - 按 ``{normal} 键(如果你有的话) + - 按 ``{normal} 键(如果你有的话) + - 输入 + `:help`{vim} + +阅读帮助窗口中的文本以了解帮助的工作原理。 +输入 ``{normal} 从一个窗口跳转到另一个窗口。 +输入 `:q`{vim} 关闭帮助窗口。 + +你可以通过给 ":help" 命令一个参数来找到几乎所有主题的帮助。试试这些(别忘了按 +): +~~~ cmd + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~ +# 第 7.2 课:创建启动脚本 + +** 启用 Vim 功能。 ** + +Vim 比 Vi 有更多的功能,但大多数默认是禁用的。要开始使用更多功能,你必须创建一 +个 "vimrc" 文件。 + + 1. 开始编辑 "vimrc" 文件。这取决于你的系统: + 对于类 UNIX 对于 Windows + `:e ~/.vimrc`{vim} `:e ~/_vimrc`{vim} + + 2. 现在读取示例 "vimrc" 文件的内容: + `:r $VIMRUNTIME/vimrc_example.vim`{vim} + + 3. 写入文件: + `:w`{vim} + + 下次你启动 Vim 时,它将使用语法高亮。 + 你可以将你所有偏好的设置添加到此 "vimrc" 文件中。 + 更多信息请输入 `:help vimrc-intro`{vim}。 + +# 第 7.3 课:补全 + +** 使用 ``{normal} 和 ``{normal} 进行命令行补全。 ** + + 1. 查看目录中存在哪些文件:`:!ls`{vim} + + 2. 输入一个命令的开头:`:e`{vim} + + 3. 按 ``{normal},Vim 将显示以 "e" 开头的命令列表。 + + 4. 按 ``{normal},Vim 将显示一个包含可能补全项的菜单(或者,如果输入的命 + 令是唯一的,例如 ":ed``{normal}" 将被补全为 ":edit")。 + + 5. 使用 ``{normal} 或 ``{normal} 转到下一个匹配项。或者使用 ``{normal} 或 ``{normal} 转到上一个匹配项。 + + 6. 选择 `edit`{vim} 条目。现在你可以看到 `edit`{vim} 这个词已自动插入到命令行。 + + 7. 现在添加一个空格和一个现有文件名的开头:`:edit FIL`{vim} + + 8. 按 ``{normal}。Vim 将显示一个补全菜单,列出以 `FIL` 开头的文件名。 + +注意:补全适用于许多命令。对于 `:help`{vim} 尤其有用。 + +# Lesson 7 SUMMARY + +# 第 7 课总结 + + 1. 输入 `:help`{vim} + 或按 ``{normal} 或 ``{normal} 打开帮助窗口。 + + 2. 输入 `:help 主题`{vim} 查找关于该主题的帮助。 + + 3. 输入 ``{normal} 跳转到另一个窗口。 + + 4. 输入 `:q`{vim} 关闭帮助窗口。 + + 5. 创建一个 vimrc 启动脚本来保存你偏好的设置。 + + 6. 在命令模式下,按 ``{normal} 查看可能的补全项。按 ``{normal} 使用补全菜单并选择匹配项。 + +# 结束语 + +Vim 教程的第一章到此结束。请考虑继续学习[第二章](@tutor:vim-02-beginner)。 + +本章旨在对 Vim 编辑器进行简要概述,让你能够相当容易地使用该编辑器。由于 Vim 有 +非常多的命令,本章内容远非完整。请经常查阅帮助。 + +网上有许多资源可以帮助你了解更多关于 Vim 的知识。这里列出了一些: + +- *Learn Vim Progressively*: http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ +- *Learning Vim in 2014*: http://benmccormick.org/learning-vim-in-2014/ +- *Vimcasts*: http://vimcasts.org/ +- *Vim Video-Tutorials by Derek Wyatt*: http://derekwyatt.org/vim/tutorials/ +- *Learn Vimscript the Hard Way*: http://learnvimscriptthehardway.stevelosh.com/ +- *7 Habits of Effective Text Editing*: http://www.moolenaar.net/habits.html +- *vim-galore*: https://github.com/mhinz/vim-galore + +如果你更喜欢看书,Drew Neil 所著的 *Practical Vim* 及其续作 *Modern Vim* 常被推荐。 + +本教程由科罗拉多矿业大学的 Michael C. Pierce 和 Robert K. Ware 编写,使用了科罗 +拉多州立大学的 Charles Smith 提供的想法。邮箱:bware@mines.colorado.edu。 + +由 Mao-Yining 翻译 +由 Bram Moolenaar 为 Vim 修改。 +由 Felipe Morales 为 vim-tutor-mode 修改。 diff --git a/runtime/tutor/zh/vim-01-beginner.tutor.json b/runtime/tutor/zh/vim-01-beginner.tutor.json new file mode 100644 index 0000000000..8c01764ce2 --- /dev/null +++ b/runtime/tutor/zh/vim-01-beginner.tutor.json @@ -0,0 +1,44 @@ +{ + "expect": { + "22": -1, + "94": "The cow jumped over the moon.", + "112": "There is some text missing from this line.", + "129": "There is some text missing from this line.", + "130": "There is some text missing from this line.", + "131": "There is also some text missing here.", + "132": "There is also some text missing here.", + "200": "There are some words that don't belong in this sentence.", + "216": "Somebody typed the end of this line twice.", + "254": -1, + "271": "This line of words is cleaned up.", + "284": -1, + "285": -1, + "286": -1, + "287": -1, + "288": -1, + "289": -1, + "290": -1, + "304": "Fix the errors on this line and replace them with undo.", + "344": -1, + "345": -1, + "346": -1, + "347": -1, + "361": "When this line was typed in, someone pressed some wrong keys!", + "362": "When this line was typed in, someone pressed some wrong keys!", + "382": "This line has a few words that need changing using the change operator.", + "383": "This line has a few words that need changing using the change operator.", + "403": "The end of this line needs to be corrected using the c$ command.", + "404": "The end of this line needs to be corrected using the c$ command.", + "459": -1, + "478": -1, + "500": "Usually the best time to see the flowers is in the spring.", + "669": -1, + "673": -1, + "689": "This line will allow you to practice appending text to a line.", + "690": "This line will allow you to practice appending text to a line.", + "706": "Adding 123 to 456 gives you 579.", + "707": "Adding 123 to 456 gives you 579.", + "730": "a) This is the first item.", + "731": "b) This is the second item." + } +}