首页 > 其他分享 >Vim进阶技巧(四)——自动补全

Vim进阶技巧(四)——自动补全

时间:2024-10-27 23:19:20浏览次数:5  
标签:文件 补全 Vim 关键字 自动 sea 输入 进阶

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:

新手一枚,如果觉得有疑问可以私信询问!

如果上述文章内容有讲得不正确或者不清楚的地方,欢迎留言评论区或者私信!

最后,能给我一个小小的赞或者关注吗

标签:文件,补全,Vim,关键字,自动,sea,输入,进阶
From: https://blog.csdn.net/2301_79273066/article/details/143276829

相关文章

  • linux学习day2——tmux和vim
    1.tmux教程功能:(1)分屏。(2)允许断开Terminal连接后,继续运行进程。结构:一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane。实例:tmux:session0:window0:pane0pane......
  • Shodan 进阶使用技巧:无高级会员如何搜索指定漏洞并进行批量验证
    内容预览≧∀≦ゞShodan进阶使用之批量查找并验证漏洞声明导语一、漏洞信息收集二、构建Shodan搜索语句1.指定端口2.指定操作系统3.指定漏洞条件4.完整Shodan查询语句三、验证目标设备的漏洞状态示例验证命令四、使用Shodan批量下载与解析漏洞数据下载搜索......
  • 厉兵秣马之Java 语言基础和进阶(二)
    续写厉兵秣马之Java语言基础和进阶(一)厉兵秣马之Java语言基础和进阶(二)5.抽象类6.接口7.抽象类与接口区别8.JAVA集合类的使用8.1.列表(List)8.2.集合(Set)8.3.映射(Map)8.4.队列(Queue)8.5.其他集合类8.6.迭代器(Iterator)9JAVA包、内部类和匿名类9.1.包(Package)9.2.......
  • Java进阶学习笔记54——HashMap、LinkedHashMap、TreeMap
    HashMap集合的底层原理:HashMap跟HashSet的底层原理是一模一样的,都是基于哈希表实现的。实际上,原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。哈希表:1)JDK8之前,哈希表=数组+链表;2)JDK8开始,哈希表=数组+链表+红黑树;3)哈希表是......
  • #渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶VNC
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。                            ......
  • 指针(进阶)
    1.字符指针2.数组指针3.指针数组4.数组传参和指针传参5.函数指针6.函数指针数组7.指向函数指针数组的指针8.相关的练习指针的主题,我们在初级阶段的《指针》已经接触过了,我们知道了指针的概念:1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。2.指针......
  • 面试 | 针对有经验的20个高频Python面试问题·进阶篇
    1.什么是字典和列表推导?Python推导式与装饰器一样,是语法糖结构,可帮助从给定的列表、字典或集合构建经过修改和过滤的列表、字典或集合。使用推导式可节省大量时间和代码,这些代码可能会更加冗长(包含更多代码行)。对整个列表执行数学运算my_list=[2,3,5,7,11]squared_......
  • Java面试真题之中级进阶(线程,进程,序列化,IO流,NIO)
    前言本来想着给自己放松一下,刷刷博客,慕然回首,线程、程序、进程?Java序列化?Java中IO流?JavaIO与NIO的区别(补充)?似乎有点模糊了,那就大概看一下Java基础面试题吧。好记性不如烂键盘***12万字的java面试题整理***简述线程、程序、进程的基本概念。以及他们之间关系是什......
  • 【Java知识】Java进阶-服务发现机制SPI
    文章目录SPI概述SPI工作原理ServiceLoader代码展示简化的`ServiceLoader`类关键点解释使用示例1.定义服务接口2.实现服务提供者3.配置文件4.加载服务提供者总结SPI使用场景1.数据库驱动2.日志框架3.图像处理4.加密算法5.插件系统6.缓存机制示例代码1.定......
  • 云服务器进阶-部署springboot项目
    一.通过finalshell登录自己的云服务器大家可以下载绑定资源中的finalshell,通过它来访问我们的服务器,二.访问宝塔面板接着我们输入bt进入上文中我们安装过的宝塔面板。输入14查看面板访问地址以及登陆的用户名密码,第一次登陆时会给我们生成一个默认密码,登录之后我们需要......