Vim 的自动补全功能是编辑效率提升的利器,它可以帮助我们快速输入代码、文档和文本,减少重复劳动,提高工作效率。
1. 关键字自动补全
关键字自动补全是 Vim 最常用的自动补全方式,它可以扫描当前编辑会话中的所有文件、包含文件和标签文件,生成补全列表。通过输入单词的前几个字母,Vim 会根据这些信息过滤补全列表,并提供相关的建议。
触发方式:
<C-p>
和<C-n>
:在插入模式下触发普通关键字自动补全,并可以在补全列表中上下选择。<C-x>
系列组合键:触发其他类型的自动补全,例如:-<C-x><C-n>
:当前缓冲区关键字自动补全-<C-x><C-i>
:包含文件关键字自动补全-<C-x><C-]>
:标签文件关键字自动补全-<C-x><C-k>
:字典查找(后文细讲)-<C-x><C-l>
:整行补全-<C-x><C-f>
:文件名补全(后文细讲)-<C-x><C-o>
:全能(Omni)补全
示例:
假设我们正在编辑一个包含以下代码的文件:
def sell_sea_shells():
# ...
如果我们想输入
sell_sea_shells
,只需输入
s
并按下
<C-p>
或
<C-n>
,即可看到以下补全建议:
- sell_sea_shells
选择并插入建议项后,即可完成输入。
2. 与自动补全的弹出式菜单进行交互
自动补全功能会显示一个弹出式菜单,我们可以通过以下命令与其交互:
<C-n>
和<C-p>
:选择补全列表中的下一项或上一项。<Down>
和<Up>
:选择补全列表中的下一项或上一项。<C-y>
:确认选择并插入当前选中的项。<C-e>
:取消自动补全并恢复之前输入的内容。<C-h>
或<BS>
:从当前选中的项中删除一个字符。<C-l>
:从当前选中的项中增加一个字符。{char}
:插入字符{char}
并关闭自动补全菜单。
示例:
假设我们想输入
sell_sea_shells
,但不确定拼写是否正确。我们可以输入
sell_sea_
并按下
<C-x><C-k>
,查看字典中的补全建议:
- sell_sea_shells
确认选择后,即可完成输入。
3. 关键字的来源
普通关键字自动补全会扫描以下来源生成补全列表:
- 当前缓冲区:当前文件中的单词。
- 包含文件:例如 C 语言中的 #include 指令指向的文件。
- 标签文件:例如 ctags 生成的 tags 文件,包含函数名、类名等关键字。
我们可以通过
:set include?
命令查看 Vim 是否支持特定语言的包含文件。
4. 使用字典中的单词进行自动补全
字典自动补全会根据单词列表生成补全建议,可以通过以下方式激活:
- 运行
:set spell
激活拼写检查功能。 - 使用
:set dictionary
指定单词列表文件。
示例:
假设我们想输入
antidisestablishmentarianism
,可以输入
anti
并按下
<C-x><C-k>
,查看字典中的补全建议(如果能坚持一个个往下翻的话):
- antidisestablishmentarianism
确认选择后,即可完成输入。
5. 自动补全文件名
文件名自动补全功能可以帮助我们快速输入文件名,可以通过
<C-x><C-f>
触发。
示例:
假设我们想输入
src="js/application.js"
,可以输入
js/ap
并按下
<C-x><C-f>
,即可完成操作。
如果不满足于vim自带的自动补全功能,我们还可以通过安装ale和supertab这两个插件来分别实现语法检查和更强大的补全功能。
call plug#begin()
Plug 'dense-analysis/ale'
Plug 'ervandew/supertab'
call plug#end()
最后
Tips:
新手一枚,如果觉得有疑问可以私信询问!
如果上述文章内容有讲得不正确或者不清楚的地方,欢迎留言评论区或者私信!
最后,能给我一个小小的赞或者关注吗😘
版权归原作者 Roadinforest 所有, 如有侵权,请联系我们删除。