diff --git a/README.md b/README.md index 09fb1e0..ca441d4 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ - [当前缓冲区,加载缓冲区,缓冲区列表,命名缓冲区](#已激活已载入已列出已命名缓冲区) - [参数列表](#参数列表) - [按键映射](#按键映射) -- [快捷键前缀](#快捷键前缀) +- [映射占位符](#映射占位符) - [寄存器](#寄存器) - [范围](#范围) - [标注](#标注) @@ -331,9 +331,9 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分 :h mapping :h 05.3 -## 快捷键前缀 +## 映射占位符 -快捷键前缀(Leader 键)是一个触发器,默认为 \\。我们可以通过在 `map` 中调用 `` 来为它设置映射。 +映射占位符(Leader 键)本身就是一个按键映射,默认为 \\。我们可以通过在 `map` 中调用 `` 来为把它添加到其他按键映射中。 ```vim nnoremap h :helpgrep @@ -354,7 +354,7 @@ nnoremap h :helpgrep ## 寄存器 -寄存器就是存储文本的地方。我们常用的"复制"操作就是把文本存储到寄存器,"粘贴"操作就是把文本从寄存器中读出来。顺便,在 Vim 中复制的快捷键是 y,粘贴的快捷键是 p。 +寄存器就是存储文本的地方。我们常用的「复制」操作就是把文本存储到寄存器,「 粘贴」 操作就是把文本从寄存器中读出来。顺便,在 Vim 中复制的快捷键是 y,粘贴的快捷键是 p。 Vim 为我们提供了如下的寄存器: @@ -378,11 +378,11 @@ Vim 为我们提供了如下的寄存器: :let @/ = 'register' ``` -这样,我们按 n 的时候就会跳转到单词 "register" 出现的地方。 +这样,我们按 n 的时候就会跳转到单词"register" 出现的地方。 有些时候,你的操作可能已经修改了寄存器,而你没有察觉到。请参阅 `:h registers` 获取更多帮助。 -上面提到过,复制的命令是 y,粘贴的命令是 p 或者 P。但请注意,Vim 会区分"字符选取"与"行选取"。请参阅 `:h linewise` 获取更多帮助。 +上面提到过,复制的命令是 y,粘贴的命令是 p 或者 P。但请注意,Vim 会区分「字符选取」与「行选取」。请参阅 `:h linewise` 获取更多帮助。 **行选取**: 命令 `yy` 或 `Y` 都是复制当前行。这时移动光标至其他位置,按下 `p` 就可以在光标下方粘贴复制的行,按下 `P` 就可以在光标上方粘贴至复制的行。 @@ -455,7 +455,7 @@ Vim 为我们提供了如下的寄存器: | 标注 | 设置者 | 使用 | | ---- | ------ | ---- | | `a`-`z` | 用户 | 仅对当前的一个文件生效,也就意味着只可以在当前文件中跳转 | -| `A`-`Z` | 用户 | 全局标注,可以作用于不同文件。大写标注也称为"文件标注"。跳转时有可能会切换到另一个缓冲区 | +| `A`-`Z` | 用户 | 全局标注,可以作用于不同文件。大写标注也称为「文件标注」。跳转时有可能会切换到另一个缓冲区 | | `0`-`9` | viminfo | `0` 代表 viminfo 最后一次被写入的位置。实际使用中,就代表 Vim 进程最后一次结束的位置。`1` 代表 Vim 进程倒数第二次结束的位置,以此类推 | 如果想跳转到指定的标注,你可以先按下 `'`、`g'`、`\`` 或 `g\`` 然后按下标注名。 @@ -496,7 +496,7 @@ Vim 在插入模式中为我们提供了多种补全方案。如果有多个补 | 映射 | 类型 | 帮助文档 | | ---- | ---- | -------- | | `` | 整行 | `:h i^x^l` | -| `` | 当前文件中的关键字 | `:h i^x^n` | +| `` | 当前缓冲区中的关键字 | `:h i^x^n` | | `` | 字典(请参阅 `:h 'dictionary'`)中的关键字 | `:h i^x^k` | | `` | 同义词字典(请参阅 `:h 'thesaurus'`)中的关键字 | `:h i^x^t` | | `` | 当前文件以及包含的文件中的关键字 | `:h i^x^i` | @@ -603,9 +603,9 @@ Vim 中的跳转命令,包括 `'`、`` ` ``、`G`、`/`、`?`、`n`、`N`、`% ## 内容变更历史记录 -Vim 会记录文本改变之前的状态。因此,你可以使用"撤销"操作 u 来取消更改,也可以通过"重做"操作 Ctrl + r 来恢复更改。 +Vim 会记录文本改变之前的状态。因此,你可以使用「撤销」操作 u 来取消更改,也可以通过「重做」操作 Ctrl + r 来恢复更改。 -值得注意的是,Vim 采用 [tree](https://en.wikipedia.org/wiki/Tree_(data_structure)) 数据结构来存储内容变更的历史记录,而不是采用 [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type))。你的每次改动都会成为存储为树的节点。而且,除了第一次改动(根节点),之后的每次改动都可以找到一个对应的父节点。每一个节点都会记录改动的内容和时间。其中,"分支" 代表从任一节点到根节点的路径。当你进行了撤销操作,然后又输入了新的内容,这时候就相当于创建了分支。这个原理和 git 中的 branch(分支)十分类似。 +值得注意的是,Vim 采用 [tree](https://en.wikipedia.org/wiki/Tree_(data_structure)) 数据结构来存储内容变更的历史记录,而不是采用 [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type))。你的每次改动都会成为存储为树的节点。而且,除了第一次改动(根节点),之后的每次改动都可以找到一个对应的父节点。每一个节点都会记录改动的内容和时间。其中,「分支」代表从任一节点到根节点的路径。当你进行了撤销操作,然后又输入了新的内容,这时候就相当于创建了分支。这个原理和 git 中的 branch(分支)十分类似。 考虑以下这一系列按键操作: @@ -629,7 +629,7 @@ baz(3) quux(4) 这个树形结构共包含四次改动,括号中的数字就代表时间顺序。 -现在,我们有两种方式遍历这个树结构。一种叫"按分支遍历",一种叫"按时间遍历"。 +现在,我们有两种方式遍历这个树结构。一种叫「按分支遍历」,一种叫「按时间遍历」。 撤销 u 与重做 Ctrl + r 操作是按分支遍历。对于上面的例子,现在我们有三行字符。这时候按 u 会回退到 "bar" 节点,如果再按一次 u 则会回退到 "foo" 节点。这时,如果我们按下 Ctrl + r 就会前进至 "bar" 节点,再按一次就回前进至 "quux" 节点。在这种方式下,我们无法访问到兄弟节点(即 "baz" 节点)。 @@ -656,7 +656,7 @@ baz(3) quux(4) ## 全局位置信息表,局部位置信息表 -在某一个动作返回一系列"位置"的时候,我们可以利用"全局位置信息表"和"局部位置信息表"来存储这些位置信息,方便以后跳转回对应的位置。每一个存储的位置包括文件名、行号和列号。 +在某一个动作返回一系列「位置」的时候,我们可以利用「全局位置信息表」和「局部位置信息表」来存储这些位置信息,方便以后跳转回对应的位置。每一个存储的位置包括文件名、行号和列号。 比如,编译代码是出现错误,这时候我们就可以把错误的位置直接显示在全局位置信息表,或者通过外部抓取工具使位置显示在局部位置信息表中。 @@ -722,7 +722,7 @@ q 1000 @q ``` -这里能实现功能,是因为我们假定了文件最多只有 1000 行。但更好的方式是使用"递归"宏,它会一直执行,知道不能执行为止: +这里能实现功能,是因为我们假定了文件最多只有 1000 行。但更好的方式是使用「递归」宏,它会一直执行,知道不能执行为止: ```vim qq @@ -774,7 +774,7 @@ q | 折叠方式 | 概述 | | -------- | ---- | -| diff | 在"比较窗口"中折叠未改变的文本 | +| diff | 在「比较窗口」中折叠未改变的文本 | | expr | 使用 `'foldexpr'` 来创建新的折叠逻辑 | | indent | 基于缩进折叠 | | manual | 使用 `zf`、`zF` 或 `:fold` 来自定义折叠 | @@ -792,11 +792,11 @@ q ## 会话 -如果你保存了当前的"视图"(请参阅 `:h :mkview`),那么当前窗口、配置和按键映射都会被保存下来(请参阅 `:h :loadview`)。 +如果你保存了当前的「视图」(请参阅 `:h :mkview`),那么当前窗口、配置和按键映射都会被保存下来(请参阅 `:h :loadview`)。 -"会话"就是存储所有窗口的相关设置,以及全局设置。简单来说,就是给当前的 Vim 运行实例拍个照,然后把相关信息存储到会话文件中。存储之后的改动就不会在会话文件中显示,你只需要在改动后更新一下会话文件就可以了。 +「会话」就是存储所有窗口的相关设置,以及全局设置。简单来说,就是给当前的 Vim 运行实例拍个照,然后把相关信息存储到会话文件中。存储之后的改动就不会在会话文件中显示,你只需要在改动后更新一下会话文件就可以了。 -你可以把当前工作的"项目"存储起来,然后可以在不同的"项目"之间切换。 +你可以把当前工作的「项目」存储起来,然后可以在不同的「项目」之间切换。 现在就来试试吧。打开几个窗口和标签,然后执行 `:mksession Foo.vim`。如果你没有指定文件名,那就会默认保存为 `Session.vim`。这个文件会保存在当前的目录下,你可以通过 `:pwd` 来显示当前路径。重启 Vim 之后,你只需要执行 `:source Foo.vim`,就可以恢复刚才的会话了。所有的缓冲区、窗口布局、按键映射以及工作路径都会恢复到保存时的状态。