mirror of
https://gitlab.com/wsdjeg/vim-galore-zh_cn.git
synced 2025-01-19 03:19:27 +08:00
Done ## Changelist, jump list. Fix missing period
This commit is contained in:
parent
c66380e5b6
commit
ec241322d1
139
README.md
139
README.md
@ -332,7 +332,8 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分
|
||||
:h 05.3
|
||||
|
||||
## 快捷键前缀
|
||||
快捷键前缀(Leader 键)是一个触发器,默认为 <kbd>\\</kbd>。我们可以通过在 `map` 中调用 `<leader>` 来为它设置映射
|
||||
|
||||
快捷键前缀(Leader 键)是一个触发器,默认为 <kbd>\\</kbd>。我们可以通过在 `map` 中调用 `<leader>` 来为它设置映射。
|
||||
|
||||
```vim
|
||||
nnoremap <leader>h :helpgrep<space>
|
||||
@ -345,15 +346,15 @@ let mapleader = ' '
|
||||
nnoremap <leader>h :helpgrep<space>
|
||||
```
|
||||
|
||||
另外,还有一个叫 `<localleader>` 的,可以把它理解为局部环境中的 `<leader>`,默认值依然为 <kbd>\\</kbd>。当我们需要只对某一个条件下(比如,特定文件类型的插件)的缓冲区设置特别的 `<leader>` 键,那么我们就可以通过修改当前环境下的 `<localleader>` 来实现
|
||||
另外,还有一个叫 `<localleader>` 的,可以把它理解为局部环境中的 `<leader>`,默认值依然为 <kbd>\\</kbd>。当我们需要只对某一个条件下(比如,特定文件类型的插件)的缓冲区设置特别的 `<leader>` 键,那么我们就可以通过修改当前环境下的 `<localleader>` 来实现。
|
||||
|
||||
**注意**:如果你打算设置 Leader 键,请确保在设置按键映射之前,先设置好 Leader 键。如果你先设置了含有 Leader 键的映射,然后又修改了 Leader 键,那么之前映射的 Leader 键是不会因此而改变的。你可以通过执行 `:nmap <leader>` 来查看普通模式中已绑定给 Leader 键的所有映射
|
||||
**注意**:如果你打算设置 Leader 键,请确保在设置按键映射之前,先设置好 Leader 键。如果你先设置了含有 Leader 键的映射,然后又修改了 Leader 键,那么之前映射的 Leader 键是不会因此而改变的。你可以通过执行 `:nmap <leader>` 来查看普通模式中已绑定给 Leader 键的所有映射。
|
||||
|
||||
请参阅 `:h mapleader` 与 `:h maploacalleader` 来获取更多帮助
|
||||
请参阅 `:h mapleader` 与 `:h maploacalleader` 来获取更多帮助。
|
||||
|
||||
## 寄存器
|
||||
|
||||
寄存器就是存储文本的地方。我们常用的"复制"操作就是把文本存储到寄存器,"粘贴"操作就是把文本从寄存器中读出来。顺便,在 Vim 中复制的快捷键是 <kbd>y</kbd>,粘贴的快捷键是 <kbd>p</kbd>
|
||||
寄存器就是存储文本的地方。我们常用的"复制"操作就是把文本存储到寄存器,"粘贴"操作就是把文本从寄存器中读出来。顺便,在 Vim 中复制的快捷键是 <kbd>y</kbd>,粘贴的快捷键是 <kbd>p</kbd>。
|
||||
|
||||
Vim 为我们提供了如下的寄存器:
|
||||
|
||||
@ -377,39 +378,40 @@ Vim 为我们提供了如下的寄存器:
|
||||
:let @/ = 'register'
|
||||
```
|
||||
|
||||
这样,我们按 <kbd>n</kbd> 的时候就会跳转到单词 "register" 出现的地方
|
||||
这样,我们按 <kbd>n</kbd> 的时候就会跳转到单词 "register" 出现的地方。
|
||||
|
||||
有些时候,你的操作可能已经修改了寄存器,而你没有察觉到。请参考 `:h registers` 获取更多帮助
|
||||
有些时候,你的操作可能已经修改了寄存器,而你没有察觉到。请参阅 `:h registers` 获取更多帮助。
|
||||
|
||||
上面提到过,复制的命令是 <kbd>y</kbd>,粘贴的命令是 <kbd>p</kbd> 或者 <kbd>P</kbd>。但请注意,Vim 会区分"字符选取"与"行选取"。请参考 `:h linewise` 获取更多帮助
|
||||
上面提到过,复制的命令是 <kbd>y</kbd>,粘贴的命令是 <kbd>p</kbd> 或者 <kbd>P</kbd>。但请注意,Vim 会区分"字符选取"与"行选取"。请参阅 `:h linewise` 获取更多帮助。
|
||||
|
||||
**行选取**:
|
||||
命令 `yy` 或 `Y` 都是复制当前行。这时移动光标至其他位置,按下 `p` 就可以在光标下方粘贴复制的行,按下 `P` 就可以在光标上方粘贴至复制的行
|
||||
命令 `yy` 或 `Y` 都是复制当前行。这时移动光标至其他位置,按下 `p` 就可以在光标下方粘贴复制的行,按下 `P` 就可以在光标上方粘贴至复制的行。
|
||||
|
||||
**字符选取**:
|
||||
命令 `0yw` 可以复制第一个单词。这时移动光标至其他位置,按下 `p` 就可以在当前行、光标后的位置粘贴单词,按下 `P` 就可以在当前行、光标前的位置粘贴单词
|
||||
命令 `0yw` 可以复制第一个单词。这时移动光标至其他位置,按下 `p` 就可以在当前行、光标后的位置粘贴单词,按下 `P` 就可以在当前行、光标前的位置粘贴单词。
|
||||
|
||||
**将文本存到指定的寄存器中**:
|
||||
命令 `"aY` 可以将当前行复制,并存储到寄存器 `a` 中。这时移动光标至其他位置,通过命令 `"AY` 就可以把这一行的内容扩展到寄存器 `a` 中,而之前存储的内容也不会丢失
|
||||
命令 `"aY` 可以将当前行复制,并存储到寄存器 `a` 中。这时移动光标至其他位置,通过命令 `"AY` 就可以把这一行的内容扩展到寄存器 `a` 中,而之前存储的内容也不会丢失。
|
||||
|
||||
为了便于理解和记忆,建议大家现在就试一试上面提到的这些操作。操作过程中,你可以随时通过 `:reg` 来查看寄存器的变化
|
||||
为了便于理解和记忆,建议大家现在就试一试上面提到的这些操作。操作过程中,你可以随时通过 `:reg` 来查看寄存器的变化。
|
||||
|
||||
**有趣的是**:
|
||||
在 Vim 中,`y` 是复制命令,源于单词 "yanking"。而在 Emacs 中,"yanking" 代表的是粘贴(或者说,重新插入刚才删掉的内容),而并不是复制
|
||||
在 Vim 中,`y` 是复制命令,源于单词 "yanking"。而在 Emacs 中,"yanking" 代表的是粘贴(或者说,重新插入刚才删掉的内容),而并不是复制。
|
||||
|
||||
## 范围
|
||||
范围 (Ranges) 其实很好理解,但很多 Vim 用户的理解不到位
|
||||
|
||||
范围 (Ranges) 其实很好理解,但很多 Vim 用户的理解不到位。
|
||||
|
||||
- 很多命令都可以加一个数字,用于指明操作范围
|
||||
- 可以是一个行号,用于指定某一行
|
||||
- 可以是一个行号或者一对通过 `,` 或 `;` 分割的行号
|
||||
- 范围可以是一个行号,用于指定某一行
|
||||
- 范围也可以是一对通过 `,` 或 `;` 分割的行号
|
||||
- 大部分命令,默认只作用于当前行
|
||||
- 只有 `:white` 和 `:global` 是默认作用于所有行的
|
||||
|
||||
范围的使用是十分直观的。以下为一些例子(其中,`:d` 为 `:delete` 的缩写):
|
||||
|
||||
| 命令 | 操作的行 |
|
||||
|---------|----------------|
|
||||
| 命令 | 操作的行 |
|
||||
| ---- | -------- |
|
||||
| `:d` | 当前行 |
|
||||
| `:.d` | 当前行 |
|
||||
| `:1d` | 第一行 |
|
||||
@ -421,11 +423,11 @@ Vim 为我们提供了如下的寄存器:
|
||||
| `:,+3d` | 当前行及接下来的 3 行 |
|
||||
| `:1,+3d` | 第一行至当前行再加 3 行 |
|
||||
| `:,-3d` | 当前行及向上的 3 行(Vim 会弹出提示信息,因为这是一个保留的范围) |
|
||||
| `:3,'xdelete` | 第三行至[标记](#标记) 为 x 的那一行 |
|
||||
| `:3,'xdelete` | 第三行至[标注](#标注) 为 x 的那一行 |
|
||||
| `:/^foo/,$delete` | 当前行以下,以字符 "foo" 开头的那一行至结尾 |
|
||||
| `:/^foo/+1,$delete` | 当前行以下,以字符 "foo" 开头的那一行的下一行至结尾 |
|
||||
|
||||
需要注意的是,`;` 也可以用于表示范围。区别在于,`a,b` 的 `b` 是以当前行作为参考的。而 `a;b` 的 `b` 是以 `a` 行作为参考的。举个例子,现在你的光标在第 5 行。这时 `:1,+1d` 会删除第 1 行至第 6 行,而 `:1;+1d` 会删除第 1 行和第 2 行
|
||||
需要注意的是,`;` 也可以用于表示范围。区别在于,`a,b` 的 `b` 是以当前行作为参考的。而 `a;b` 的 `b` 是以 `a` 行作为参考的。举个例子,现在你的光标在第 5 行。这时 `:1,+1d` 会删除第 1 行至第 6 行,而 `:1;+1d` 会删除第 1 行和第 2 行。
|
||||
|
||||
如果你想设置多个寻找条件,只需要在条件前加上 `/`,比如:
|
||||
|
||||
@ -433,11 +435,11 @@ Vim 为我们提供了如下的寄存器:
|
||||
:/foo//bar//quux/d
|
||||
```
|
||||
|
||||
这就会删除当前行之后的某一行。定位方式是,现在当前行之后寻找第一个包含 "foo" 字符的那一行,然后在找到的这一行之后寻找第一个包含 "bar" 字符的那一行,然后再在找到的这一行之后寻找第一个包含 "quux" 的那一行。删除的就是最后找到的这一行
|
||||
这就会删除当前行之后的某一行。定位方式是,先在当前行之后寻找第一个包含 "foo" 字符的那一行,然后在找到的这一行之后寻找第一个包含 "bar" 字符的那一行,然后再在找到的这一行之后寻找第一个包含 "quux" 的那一行。删除的就是最后找到的这一行。
|
||||
|
||||
有时,Vim 会在命令前自动添加范围。举个例子,如果你先通过 `V` 命令进入行选取模式,选中一些行后按下 `:` 进入命令模式,这时候你会发现 Vim 自动添加了 `'<,'>` 范围。这表示,接下来的命令会使用之前选取的行号作为范围。但如果后续命令不支持范围,Vim 就会报错。为了避免这样的情况发生,有些人会设置这样的按键映射:`:vnoremap foo :<c-u>command`,组合键 <kbd>Ctrl + u</kbd> 可以清除当前命令行中的内容
|
||||
有时,Vim 会在命令前自动添加范围。举个例子,如果你先通过 `V` 命令进入行选取模式,选中一些行后按下 `:` 进入命令模式,这时候你会发现 Vim 自动添加了 `'<,'>` 范围。这表示,接下来的命令会使用之前选取的行号作为范围。但如果后续命令不支持范围,Vim 就会报错。为了避免这样的情况发生,有些人会设置这样的按键映射:`:vnoremap foo :<c-u>command`,组合键 <kbd>Ctrl + u</kbd> 可以清除当前命令行中的内容。
|
||||
|
||||
另一个例子是在普通模式中按下 `!!`,命令行中会出现 `:.!`。如果这时你如果输入一个外部命令,那么当前行的内容就会被这个外部命令的输出替换。你也可以通过命令 `:?^$?+1,/^$/-1!ls` 来把当前段落的内容替换成外部命令 `ls` 的输出
|
||||
另一个例子是在普通模式中按下 `!!`,命令行中会出现 `:.!`。如果这时你如果输入一个外部命令,那么当前行的内容就会被这个外部命令的输出替换。你也可以通过命令 `:?^$?+1,/^$/-1!ls` 把当前段落的内容替换成外部命令 `ls` 的输出。
|
||||
|
||||
请参阅以下两个命令来获取更多帮助:
|
||||
|
||||
@ -447,7 +449,8 @@ Vim 为我们提供了如下的寄存器:
|
||||
```
|
||||
|
||||
## 标注
|
||||
你可以使用标注功能来标记一个位置,也就是在文件中标记行号和列
|
||||
|
||||
你可以使用标注功能来标记一个位置,也就是在文件中标记某一个行号或某行的某个位置。
|
||||
|
||||
| 标注 | 设置者 | 使用 |
|
||||
| ---- | ------ | ---- |
|
||||
@ -455,11 +458,11 @@ Vim 为我们提供了如下的寄存器:
|
||||
| `A`-`Z` | 用户 | 全局标注,可以作用于不同文件。大写标注也称为"文件标注"。跳转时有可能会切换到另一个缓冲区 |
|
||||
| `0`-`9` | viminfo | `0` 代表 viminfo 最后一次被写入的位置。实际使用中,就代表 Vim 进程最后一次结束的位置。`1` 代表 Vim 进程倒数第二次结束的位置,以此类推 |
|
||||
|
||||
如果想跳转到指定的标注,你可以先按下 `'`、`g'`、`\`` 或 `g\`` 然后按下标注名
|
||||
如果想跳转到指定的标注,你可以先按下 `'`、`g'`、`\`` 或 `g\`` 然后按下标注名。
|
||||
|
||||
如果你想定义当前文件中的标注,可以先按下 `m` 再按下标注名。比如,按下 `mm` 就可以把当前位置标注为 `m`。在这之后,如果你的光标切换到了文件的其他位置,只需要通过 `'m` 或者 `\`m` 即可回到刚才标注的行。区别在于,`'m` 会跳转回被标记行的第一个非空字符,而 `\`m` 会跳转回被标记行的被标记列。根据 viminfo 的设置,你可以在退出 Vim 的时候保留小写字符标注。请参阅 `:h viminfo-'` 来获取更多帮助
|
||||
如果你想定义当前文件中的标注,可以先按下 `m` 再按下标注名。比如,按下 `mm` 就可以把当前位置标注为 `m`。在这之后,如果你的光标切换到了文件的其他位置,只需要通过 `'m` 或者 `\`m` 即可回到刚才标注的行。区别在于,`'m` 会跳转回被标记行的第一个非空字符,而 `\`m` 会跳转回被标记行的被标记列。根据 viminfo 的设置,你可以在退出 Vim 的时候保留小写字符标注。请参阅 `:h viminfo-'` 来获取更多帮助。
|
||||
|
||||
如果你想定义全局的标注,可以先按下 `m` 再按下大写英文字符。比如,按下 `mM` 就可以把当前文件的当前位置标注为 `M`。在这之后,就算你切换到其他的缓冲区,依然可以通过 `'M` 或 `\`M` 跳转回来
|
||||
如果你想定义全局的标注,可以先按下 `m` 再按下大写英文字符。比如,按下 `mM` 就可以把当前文件的当前位置标注为 `M`。在这之后,就算你切换到其他的缓冲区,依然可以通过 `'M` 或 `\`M` 跳转回来。
|
||||
|
||||
关于跳转,还有以下的方式:
|
||||
|
||||
@ -478,9 +481,10 @@ Vim 为我们提供了如下的寄存器:
|
||||
| `'{` 与 ```{`` | 当前段落的开头 |
|
||||
| `'}` 与 ```}`` | 当前段落的结尾 |
|
||||
|
||||
标注也可以搭配 [范围](#范围) 一起使用。前面提到过,如果你在可视模式下选取一些文本,然后按下 `:`,这时候你会发现命令行已经被填充了 `:'<,'>`。对照上面的表格,现在你应该明白了,这段代表的就是可视模式下选取的范围
|
||||
标注也可以搭配 [范围](#范围) 一起使用。前面提到过,如果你在可视模式下选取一些文本,然后按下 `:`,这时候你会发现命令行已经被填充了 `:'<,'>`。对照上面的表格,现在你应该明白了,这段代表的就是可视模式下选取的范围。
|
||||
|
||||
## 补全
|
||||
|
||||
Vim 在插入模式中为我们提供了多种补全方案。如果有多个补全结果,Vim 会弹出一个菜单供你选择。
|
||||
|
||||
常见的补全有标签、项目中引入的模块或库中的方法名、文件名、字典及当前缓冲区的字段。
|
||||
@ -502,7 +506,7 @@ Vim 在插入模式中为我们提供了多种补全方案。如果有多个补
|
||||
| `<c-x><c-o>` | Omni Completion(通过 `'omnifunc'` 定义) | `:h i^x^o` |
|
||||
| `<c-x>s` | 拼写建议 | `:h i^Xs` |
|
||||
|
||||
尽管用户自定义补全与 Omni Completion 是不同的,但他们做的事情基本一致。共同点在于,他们都是一个监听当前光标位置的函数,返回值为一系列的补全建议。用户自定义补全是由用户定义的,基于用户的个人用途,因此你可以根据自己的喜好和需求随意定制。而 Omni Completion 是针对文件类型的补全,比如补全一个结构体(struct)的成员(members),或者补全一个类的方法,因而它通常都是由文件类型插件设置和调用的。
|
||||
尽管用户自定义补全与 Omni Completion 是不同的,但他们做的事情基本一致。共同点在于,他们都是一个监听当前光标位置的函数,返回值为一系列的补全建议。用户自定义补全是由用户定义的,基于用户的个人用途,因此你可以根据自己的喜好和需求随意定制。而 Omni Completion 是针对文件类型的补全,比如在 C 语言中补全一个结构体(struct)的成员(members),或者补全一个类的方法,因而它通常都是由文件类型插件设置和调用的。
|
||||
|
||||
如果你设置了 `'complete'` 选项,那么你就可以在一次操作中采用多种补全方案。这个选项默认包含了多种可能性,因此请按照自己的需求来配置。你可以通过 `<c-n>` 来调用下一个补全建议,或通过 `<c-p>` 来调用上一个补全建议。当然,这两个映射同样可以直接调用补全函数。请参阅 `:h i^n` 与 `:h 'complete'` 来获得更多帮助。
|
||||
|
||||
@ -515,8 +519,85 @@ Vim 在插入模式中为我们提供了多种补全方案。如果有多个补
|
||||
:h new-omni-completion
|
||||
```
|
||||
|
||||
## 动作,操作符,文本对象
|
||||
|
||||
**动作**也就是指移动光标的操作,你肯定很熟悉 `h`、`j`、`k` 和 `l`,以及 `w` 和 `b`。但其实,`/` 也是一个动作。他们都可以搭配数字使用,比如 `2?the<cr>` 可以将光标移动到倒数第二个 "the" 出现的位置。
|
||||
|
||||
以下会列出一些常用的动作。你也可以通过 `:h navigation` 来获取更多的帮助。
|
||||
|
||||
**操作符**是对某个区域文本执行的操作。比如,`d`、`~`、`gU` 和 `>` 都是操作符。这些操作符既可以在普通模式下使用,也可以在可视模式下使用。在普通模式中,顺序是先按操作符,再按动作指令,比如 `>j`。在可是模式中,选中区域后直接按操作符就可以,比如 `Vjd`。
|
||||
|
||||
与动作一样,操作符也可以搭配数字使用,比如 `2gUw` 可以将当前单词以及下一个单词转成大写。由于动作和操作符都可以搭配数字使用,因此 `2gU2w` 与执行两次 `gU2w` 效果是相同的。
|
||||
|
||||
请参阅 `:h operator` 来查看所有的操作符。你也可以通过 `:set tildeop` 命令把 `~` 也变成一个操作符
|
||||
|
||||
值得注意的是,动作是单向的,而**文本对象**是双向的。文本对象不仅作用于符号(比如括号、中括号和大括号等)标记的范围内,也作用于整个单词、整个句子等其他情况。
|
||||
|
||||
文本对象不能用于普通模式中移动光标的操作,因为光标还没有智能到可以向两个方向同时跳转。但这个功能可以在可视模式中实现,因为在对象的一端选中的情况下,光标只需要跳转到另一端就可以了。
|
||||
|
||||
文本对象操作一般用 `i` 或 `a` 加上对象标识符操作,其中 `i` 表示在对象内(英文 inner)操作,`a` 表示对整个对象(英文 around)操作,这时开头和结尾的空格都会被考虑进来。举个例子,`diw` 可以删除当前单词,`ci(` 可以改变括号中的内容。
|
||||
|
||||
文本对象同样可以与数字搭配使用。比如,像 `((( )))` 这样的文本,假如光标位于最内层的括号上或最内层的括号内,那么 `d2a(` 将会删除从最内层开始的两对括号,以及他们之间的所有内容。
|
||||
|
||||
请参阅 `:h text-objects` 来获取更多关于文本对象的帮助。
|
||||
|
||||
## 自动命令
|
||||
|
||||
在特定的情况下,Vim 会传出事件。如果你想针对这些事件执行回调方法,那么就需要用到自动命令这个功能。
|
||||
|
||||
如果没有了自动命令,那你基本上是用不了 Vim 的。自动命令一直都在执行,只是很多时候你没有注意到。不信的话,你可以执行命令 `:au` 来查看一下当前可以触发的所有自动命令,是不是有很多?
|
||||
|
||||
请使用 `:h {event}` 来查看 Vim 中所有事件的列表,你也可以参考 `:h autocmd-events-abc` 来获取关于事件的更多帮助。
|
||||
|
||||
一个很常用的例子,就是针对文件类型执行某些设置:
|
||||
|
||||
```vim
|
||||
autocmd FileType ruby setlocal shiftwidth=2 softtabstop=2 comments-=:#
|
||||
```
|
||||
|
||||
但是缓冲区是如何知道当前的文件中包含 Ruby 代码呢?这其实是另一个自动命令检测的到的,然后把文件类型设置成为 Ruby,这样就触发了上面的 `FileType` 事件。
|
||||
|
||||
在配置 vimrc 的时候,一般第一行加进去的就是 `filetype on`。这就意味着,Vim 启动时会读取 `filetype.vim` 文件,然后根据文件类型来触发相应的自动命令。
|
||||
|
||||
如果你有兴趣,可以执行一下 `:e $VIMRUNTIME/filetype.vim`,然后在输出中搜索 "Ruby"。这样,你就会发现其实 Vim 只是通过文件扩展名 `.rb` 判断某个文件是不是 Ruby 的。
|
||||
|
||||
**注意**:对于相同事件,如果有多个自动命令,那么自动命令会按照定义时的顺序执行。通过 `:au` 就可以查看它们的执行顺序。
|
||||
|
||||
```vim
|
||||
au BufNewFile,BufRead *.rb,*.rbw setf ruby
|
||||
```
|
||||
|
||||
`BufNewFile` 与 `BufRead` 事件是被写在 Vim 源文件中的。因此,每当你通过 `:e` 或者类似的命令打开文件,这两个事件都会触发。然后,就是读取 `filetype.vim` 文件来判断打开的文件类型。
|
||||
|
||||
简单来说,事件和自动命令在 Vim 中的应用十分广泛。而且,Vim 为我们留出了一些易用的接口,方便用户配置适合自己的事件驱动回调。
|
||||
|
||||
请参阅 `:h autocommand` 来获取更多帮助
|
||||
|
||||
## 变更历史,跳转历史
|
||||
|
||||
在 Vim 中,用户最近 100 次的文字改动都会被保存在**变更历史**中。如果在同一行有多个小改动,那么 Vim 会把它们合并成一个。尽管内容改动会合并,但作用的位置还是会只记录下最后一次改动的位置。
|
||||
|
||||
在你移动光标或跳转的时候,每一次的移动或跳转前的位置会被记录到**跳转历史**中。类似地,跳转历史也可以最多保存 100 条记录。对于每个窗口,跳转记录是独立的。但当你用 `split` 命令分离窗口时,跳转历史会被复制过去。
|
||||
|
||||
Vim 中的跳转命令,包括 `'`、`` ` ``、`G`、`/`、`?`、`n`、`N`、`%`、`(`、`)`、`[[`、`]]`、`{`、`}`、`:s`、`:tag`、`L`、`M`、`H` 以及开始编辑一个新文件的命令。
|
||||
|
||||
| 列表 | 显示所有条目 | 跳转到上一个位置 | 跳转到下一个位置 |
|
||||
| ---- | ------------ | ---------------- | ---------------- |
|
||||
| 跳转历史 | `:jumps` | `[count]<c-o>` | `[count]<c-i>` |
|
||||
| 变更历史 | `:changes` | `[count]g;` | `[count]g,` |
|
||||
|
||||
如果你执行第二列的命令显示所有条目,这时 Vim 会用 `>` 标记来为你指示当前位置。通常这个标记位于 1 的下方,也就代表最后一次的位置。
|
||||
|
||||
如果你希望关闭 Vim 之后还保留这些条目,请参阅 `:h viminfo-'` 来获取更多帮助。
|
||||
|
||||
**注意**:上面提到过,最后一次跳转前的位置也会记录在[标注](#标注)中,也可以通过 \`\` 或 `''` 跳转到那个位置
|
||||
|
||||
请参阅以下两个命令来获取更多帮助:
|
||||
|
||||
```vim
|
||||
:h changelist
|
||||
:h jumplist
|
||||
```
|
||||
|
||||
## 加入我们
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user