在插入模式下,利用自动补全(Insertion-Completion)功能,vim能够根据正在输入的字符,查找匹配的关键字并显示在弹出菜单(popup menu)中。通过选择匹配项,可以补全输入的部分关键字甚至整行文本。

Vim可以针对整行文字、关键字、字典、词典、标签、文件名、宏、命令和拼写等等进行补全。上节介绍了进入补全模式的操作方法;本节将详细介绍各种补全方式的特点。

整行补全(Whole line completion)

使用Ctrl-X Ctrl-L快捷键,将在'complet'选项定义的范围内查找匹配的行。假设在编辑网页文档时输入“<h”,然后调用整行匹配,将会显示所有以“h”开头的HTML标签。

当前文件内关键字补全(Keyword local completion)

使用Ctrl-X Ctrl-NCtrl-X Ctrl-P快捷键,将在当前文件中查找匹配的关键字。

此处的关键字,是指由'iskeyword'选项定义的字符串。默认情况下,iskeyword=@,48-57,_,192-255,认为由数字、字母和下划线组成的字符串为关键词。而句点和短横线,则被是为关键词之间的分隔符。您可以使用set iskeyword命令,来改变关键词的定义。

字典补全(Dictionary completion)

使用Ctrl-X Ctrl-K快捷键,将在'dictionary'选项定义的文件中查找匹配的关键词。

默认情况下'dictionary'选项为空。可以使用:set dictionary命令,来指定字典文件。

对于Linux系统,通常会查找/usr/dict/words或/usr/share/dict/words:

:set dictionary=/usr/dict/words,/usr/share/dict/words

对于Windows系统,如果已经安装了Cygwin,那么可以选择添加words软件包;然后根据您的Cygwin安装目录,来指定字典文件:

set dictionary=D:cygwin64usrsharedictlinux.words

你也可以包括其它自定义的字典文件:

:set dictionary+=home/oualline/words

假设我们需要输入单词“acknowledged”,只需要首先输入“ack”三个字母,然后点击Ctrl-X Ctrl-K快捷键即可进行匹配:

词典补全(Thesaurus completion)

使用Ctrl-X Ctrl-T快捷键,将在'thesaurus'选项定义的文件中查找匹配的关键词。

默认情况下'thesaurus'选项为空。可以使用:set thesaurus命令,指定字典文件。

首先下载词典文件;然后解压缩后将其中的thesaurus.txt文件复制为~/.vim/thesaurus/english.txt;最后使用以下命令,来指定词典文件:

:set thesaurus=$HOMEvimfilesthesaurusenglish.txt

假设我们输入单词“enjoy”,然后点击Ctrl-X Ctrl-T快捷键,将会在词典文件中查找光标下的单词:

因为在词典文件中,每行会包含多个单词,所以将显示匹配行中的所有单词:

bask enjoy relish savor savour lie

当前文件及其包含的文件关键字补全(Path pattern completion)

使用Ctrl-X Ctrl-I快捷键,将在当前文件以及由'include'选项指定的包含进来的文件中查找匹配的关键词。

很多编程语言都会提供从外部文件中调用代码的功能。比如,C语言的#include语法和Python的import语法等。Vim将根据文件类型所对应的'include'选项,来查找指定包含的文件。您可以使用:set include?命令,查看当前的'include'选项设置。

标签补全(Tag completion)

使用Ctrl-X Ctrl-]快捷键,将在当前文件以及由'include'选项指定的包含进来的文件中查找匹配的标签。

文件名补全(File name completion)

使用Ctrl-X Ctrl-F快捷键,可以匹配并补全文件名。

如果当前光标下的文本不包含任何路径信息,那么将显示当前目录下的文件列表。

如果当前光标下的文本包含任何(绝对或相对)路径信息,那么将显示其指定目录下的文件列表。

如果当前光标下的文本包含唯一的路径信息(比如“~”),那么将自动转换为目录的完整名称。

定义补全(Definition completion)

使用Ctrl-X Ctrl-D快捷键,将在当前文件以及由'include'选项指定的包含进来的文件中,查找由'define'选项定义的宏(definition/macro)。

'define'选项定义的正则表达式默认为“^s*#s*define”,将查找以“define”语法定义的宏。您可以使用:set define?命令,查看当前的'define'选项设置。

Vim命令补全(Command-line completion)

使用Ctrl-X Ctrl-V快捷键,将匹配Vim命令,以便在您开发Vim脚本时加速代码录入。

用户自定义补全(User defined completion)

使用Ctrl-X Ctrl-U快捷键,将由'completefunc'选项指定的自定义函数来进行匹配。

拼写建议补全(Spelling completion)

使用Ctrl-X Ctrl-S快捷键,将根据拼写检查给出补全建议。

请注意,为了使用拼写补全,请确保已使用以下命令,打开了拼写检查特性:

:set spell

全能补全(Omni completion)

使用Ctrl-X Ctrl-O快捷键,将由'omnifunc'选项指定的自定义函数来进行匹配。Vim将通过$VIMRUNTIME/autoload/{filetype}complete.vim文件来实现全能补全特性,现在支持8种语言,包括C, (X)HTML with CSS, JavaScript, PHP, Python, Ruby, SQL和XML。

例如首先输入HTML标签的前几个字母“<p cl”,然后按下Ctrl+X和Ctrl+O键,将根据语法显示匹配菜单:

建议将以下命令,加入vimrc配置文件的:filetype命令之后,以更好地利用全能补全功能:

if has("autocmd") && exists("+omnifunc")
autocmd Filetype * if &omnifunc == "" | setlocal omnifunc=syntaxcomplete#Complete | endif
endif

您可以使用:set omnifunc?命令,查看当前的'omnifunc'选项设置。

vim 快捷键_VIM学习笔记 自动补全详解(Auto-Completion Detail)相关推荐

  1. vim 快捷键_VIM学习笔记 环绕字符编辑(surround)

    surround 插件可以快速编辑围绕在内容两端的字符(pairs of things surrounding things),比如成对出现的括号.引号,甚至HTML/XML标签等. 安装配置 推荐您 ...

  2. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  3. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

  4. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  5. java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解

    Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...

  6. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  7. java输入代码快捷键是什么_eclipse自动补全代码快捷键是什么

    eclipse自动补全代码快捷键是空格键和回车键,补全代码功能需设置"Auto Activation triggers for java",代码提示选项补充完整后,输入关键字即可得 ...

  8. vim补全html标签,vim括号引号html标签自动补全

    (我现在已经不用下面方法了,可使用 xptemplate插件 http://blog.csdn.net/zcube/article/details/42525973) 问题:怎样在vim中实现花括号引 ...

  9. 学习TeXworks编辑器(二)TAB补全详解与自定义补全命令总结

    文章目录 写在前面 内置补全命令及记忆 希腊字母的补全 规则 对应表 小写希腊字母 大写希腊字母 作为变量的希腊字母 常用数学命令(字体)的补全 常用环境的补全 自定义补全命令 结语 参考文献 写在前 ...

最新文章

  1. java中解决Launch configuration TimezoneDump references non-existing project问题
  2. Classical Inheritance in JavaScript
  3. 计算机教师研修计划书,教师信息技术个人研修计划书
  4. Linux 死机时抢救措施
  5. 2017-9-5-Java 泛型
  6. 【OpenCV入门指南】第一篇 安装OpenCV
  7. case与bug的对应关系
  8. eclipse中如何搜索带\的字串
  9. MATLAB遗传算法调试
  10. 联想服务器修改mac,修改Thinkpad E420的无线网卡MAC地址?
  11. cyj等于什么英语单词_英语参考单词读写规律大全.doc
  12. 2021-2025年中国电源管理IC(PMIC)行业市场供需与战略研究报告
  13. matlab2017百度百科,沸石粉里的吸蓝量是什么意思
  14. php中文网灭绝师太照片,灭绝师太照片欣赏
  15. pr cpu100%_PR插件NewBlueFX Titler Pro6.0安装教程
  16. 第二章 实例研究:设计一个文档编辑器--《设计模式-可复用面向对象软件的基础》Erich Gamma
  17. amcharts4 总结
  18. android 九宫格带删除,Android--选择多张图片,支持拖拽删除、排序、预览图片
  19. 虚拟机与宿主机网络互通配置
  20. 新年最大空投,好东西一起分享

热门文章

  1. 台大李宏毅Machine Learning 2017Fall学习笔记 (6)Logistic Regression
  2. tensorflow学习之常用函数总结:tensorflow.cast()函数
  3. Matlab之数据的输入与输出
  4. Anaconda创建、激活、退出、删除虚拟环境
  5. six.move 的作用
  6. Win10环境下,SecureCRT连接不上虚拟机,显示连接超时Connection time out. 而且网络连接里没有网络适配器VMnet1和VMnet8,互ping也不同。...
  7. Codeforces 869C The Intriguing Obsession
  8. 给内联元素设置宽高的几种方式
  9. Promise 必知必会(十道题)
  10. Ionic常见问题--插件无法下载:npm ERR打包sha1错误