Done with ## Completion

This commit is contained in:
S1ngS1ng 2017-03-24 22:24:25 -05:00
parent f8bb29df36
commit c66380e5b6

View File

@ -2,7 +2,6 @@
[![掘金翻译计划](https://rawgit.com/aleen42/badges/master/src/juejin_translation.svg)](https://github.com/xitu/gold-miner/)
<<<<<<< HEAD
> Vim from zero to hero - Vim 从入门到精通
- 原文地址https://github.com/mhinz/vim-galore
@ -333,11 +332,7 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分
:h 05.3
## 快捷键前缀
"Leader" 键是一个触发器,默认为 `\\`。我们可以通过在 `map` 中调用 `<leader>` 来为 `<leader>` 键设置映射
=======
## 使用 Leader 键
"Leader" 键是一个触发器,默认为 <kbd>\\</kbd>。我们可以通过在 `map` 中调用 `<leader>` 来为 `<leader>` 键设置映射
>>>>>>> Update before ##Completion. Addressed comments before
快捷键前缀Leader 键)是一个触发器,默认为 <kbd>\\</kbd>。我们可以通过在 `map` 中调用 `<leader>` 来为它设置映射
```vim
nnoremap <leader>h :helpgrep<space>
@ -485,6 +480,40 @@ Vim 为我们提供了如下的寄存器:
标注也可以搭配 [范围](#范围) 一起使用。前面提到过,如果你在可视模式下选取一些文本,然后按下 `:`,这时候你会发现命令行已经被填充了 `:'<,'>`。对照上面的表格,现在你应该明白了,这段代表的就是可视模式下选取的范围
## 补全
Vim 在插入模式中为我们提供了多种补全方案。如果有多个补全结果Vim 会弹出一个菜单供你选择。
常见的补全有标签、项目中引入的模块或库中的方法名、文件名、字典及当前缓冲区的字段。
针对不同的补全方案Vim 为我们提供了不同的按键映射。这些映射都是在**插入模式中**通过 <kbd>Ctrl</kbd> + <kbd>x</kbd> 来触发:
| 映射 | 类型 | 帮助文档 |
| ---- | ---- | -------- |
| `<c-x><c-l>` | 整行 | `:h i^x^l` |
| `<c-x><c-n>` | 当前文件中的关键字 | `:h i^x^n` |
| `<c-x><c-k>` | 字典中的关键字 | `:h i^x^k` |
| `<c-x><c-t>` | 同义词字典中的关键字 | `:h i^x^t` |
| `<c-x><c-i>` | 当前文件以及包含的文件中的关键字 | `:h i^x^i` |
| `<c-x><c-]>` | 标签 | `:h i^x^]` |
| `<c-x><c-f>` | 文件名 | `:h i^x^f` |
| `<c-x><c-d>` | 定义或宏定义 | `:h i^x^d` |
| `<c-x><c-v>` | Vim 命令 | `:h i^x^v` |
| `<c-x><c-u>` | 用户自定义补全(通过 `'completefunc'` 定义) | `:h i^x^u` |
| `<c-x><c-o>` | Omni Completion通过 `'omnifunc'` 定义) | `:h i^x^o` |
| `<c-x>s` | 拼写建议 | `:h i^Xs` |
尽管用户自定义补全与 Omni Completion 是不同的,但他们做的事情基本一致。共同点在于,他们都是一个监听当前光标位置的函数,返回值为一系列的补全建议。用户自定义补全是由用户定义的,基于用户的个人用途,因此你可以根据自己的喜好和需求随意定制。而 Omni Completion 是针对文件类型的补全比如补全一个结构体struct的成员members或者补全一个类的方法因而它通常都是由文件类型插件设置和调用的。
如果你设置了 `'complete'` 选项,那么你就可以在一次操作中采用多种补全方案。这个选项默认包含了多种可能性,因此请按照自己的需求来配置。你可以通过 `<c-n>` 来调用下一个补全建议,或通过 `<c-p>` 来调用上一个补全建议。当然,这两个映射同样可以直接调用补全函数。请参阅 `:h i^n``:h 'complete'` 来获得更多帮助。
如果你想配置弹出菜单的行为,请一定要看一看 `:h 'completeopt'` 这篇帮助文档。默认的配置已经不错了,但我个人(原作者)更倾向于把 "noselect" 加上。
请参阅以下文档获取更多帮助:
```vim
:h ins-completion
:h popupmenu-keys
:h new-omni-completion
```