代码自动补全或是代码提示,是编程中常用的功能,能帮助我们提高编码的效率
Vim 作为一个文本强大的文本编辑器,通过一些设置后,就可以实现代码补全的功能。
使用内建代码提示
快捷键
首先Vim是内建代码补全功能的,在不需要通过任何设置的情况下就能使用。
在您编辑代码的时候,键入 ctrl+x, ctrl+o, ctrl+n, ctrl+p 等快捷键,就会弹出智能提示的菜单,具体使用方法请看Vim中的插入模式补全
例如,php中我在 -> 操作符之后键入 ctrl+N
改进一下
这样虽然是补全了,但是不是那种输入时即时匹配的一定要输入 ->t 然后键入 ctrl+N 这样出现的提示才是 t开头的。
现在我们要实现已经出现提示菜单后输入字母实现即时的过滤和匹配,其实很简单,在你的 .vimrc 中加入下面这句代码
set completeopt=longest,menu
关于这句代码的意义,可以查看Vim的completeopt选项
现在用起来舒适多了
全能补全 (omni)
关于 omni 可以查看这里的介绍。
我们常用的全能补全是 CTRL-X CTRL-O , 但每次按这样两个组合键也比较麻烦,我们可以映射一个快捷键。
"==== omni
imap <C-L> <C-x><C-o>
这样按 CTRL-L 就行了。当然还有 SuperTab 插件来帮助我们用 Tab 键来实现所有的补全功能。
(在php文件中使用全能补全的效果)
使用 autocomplpop.vim 插件
介绍
用惯一些IDE的朋友,一开始可能不习惯Vim的自动补全,主要是每次都要按下一个组合键才会出现提示,而不是像IDE里面那样只要输入了某个操作符就会触发自动补全。
autocomplpop.vim 这个插件就可以很好的解决这个问题。
基本使用
首先访问链接[1],下载 autocomplpop.vim 后,放到Vim文件目录下的plugin目录中,然后重启一下 vim 就会发现在编码时会自动的弹出提示了。
打开 autocomplpop.vim ,可以再 DOCUMENT 部分看到使用方式与一些设置。
增加智能提示触发命令
该插件的默认设置可以完成一些基本的提示,但是每种语言都不同,需要触发 全能 (omni) 补全 的操作符也不同,所幸 autocomplpop 可以让我们自己定制触发的命令模式,这样就可以实现无限扩展以达到自己的需求。
autocomplpop已经实现了部分语言的自动全能补全,比如 ruby文件中按 "." 或者 "::" 就会触发全能补全,看一下改插件中已经实现的一些语言
" Which completion method is used depends on the text before the cursor. The
" default behavior is as follows:
"
" 1. The keyword completion is attempted if the text before the cursor
" consists of two keyword character.
" 2. The filename completion is attempted if the text before the cursor
" consists of a filename character + a path separator + 0 or more
" filename characters.
" 3. The omni completion is attempted in Ruby file if the text before the
" cursor consists of "." or "::". (Ruby interface is required.)
" 4. The omni completion is attempted in Python file if the text before
" the cursor consists of ".". (Python interface is required.)
" 5. The omni completion is attempted in HTML/XHTML file if the text
" before the cursor consists of "<" or "</".
" 6. The omni completion is attempted in CSS file if the text before the
" cursor consists of ":", ";", "{", "@", "!", or in the start of line
" with blank characters and keyword characters.
光有这些我们可能还不能满足,下面我们试着自己来添加一些触发命令
加入PHP的全能提示触发命令
php 中 一般是会在 "$", "->", "::" 后需要出现自动补全,在 .vimrc 中加入以下代码:
if !exists('g:AutoComplPop_Behavior')
let g:AutoComplPop_Behavior = {}
let g:AutoComplPop_Behavior['php'] = []
call add(g:AutoComplPop_Behavior['php'], {
/ 'command' : "/<C-x>/<C-o>",
/ 'pattern' : printf('/(->/|::/|/$/)/k/{%d,}$', 0),
/ 'repeat' : 0,
/})
endif
这样就可以了。
注重,某些时候,可能会在第一次按下触发补全的操作符时停顿一会,这可能是因为可匹配的项目过多,Vim正在索引,过后就会快了。
分享到:
相关推荐
个合适的Vim编辑器环境可供操练, 那么建议读者还是不要在这里浪费时 间. 如果读者是在气温比较低的条件下阅读此书从而增加了你动手的惰性 时, 也请不要浪费时间, 这会严重影响学习的效果. 虽然本书鼓励读者多动手, ...
Vim是一个无处不在的文本编辑器,可用于所有编程语言。 它具有广泛的插件系统,并与许多工具集成。 Vim为程序员提供了可扩展和可定制的开发环境,使其成为世界上最受欢迎的文本编辑器之一。 本书涵盖以下激动人心...
个合适的Vim编辑器环境可供操练,那么建议读者还是不要在这里浪费时 间。 如果读者是在气温比较低的条件下阅读此书从而增加了你动手的惰性 时,也请不要浪费时间,这会严重影响学习的效果。 虽然本书鼓励读者多动手...
特点 类似Vim的模态编辑 ...首先是一个基于终端的编辑器,但我想探索wgpu或skulpin中的自定义渲染器(类似于Emacs)。 注意:目前只有某些语言有缩进定义。检查运行时/querys/<lang>/中的indts.scm。
具有编辑器支持(emacs,vim,sublime和paredit),图形和可视化,降价和LaTex的交互式文档。咲いて(盛开)。 建立在 Vega / Vega-Lite库, , 和amd 。 Saite是一个Clojure(Script)客户/服务器应用程序,用于...
首先写一个基本所有程序员都会接触到的第一个程序吧,新建一个文件,比如为hello.py,用你喜欢的文本编辑器打开,Windows上用记事本或者Notepad,Linux上可以用Vim或者Emacs,MacOSX上可以用xcode或者Vim打开。...
14.1.4 合五为一的编辑器程序—joe 234 14.1.5 配置jed编辑器程序 235 14.1.6 使用kedit编辑器客户程序 235 14.1.7 使用CRiSPlite编辑器程序 236 14.1.8 StarOffice办公室套装软件中的StarWriter组件 237 14.1.9 ...
现在,这对于适当的编辑器和 IDE 来说不是问题,但每隔一段时间就会不支持它,或者需要不同的列限制并且更改 IDE 中的设置太费力了——关闭情况。未来这是一个快速的项目,仍然需要探索以下项目: Unicode 支持(它...
同时使用IDE和文本编辑器 第一个用于代码,第二个用于草稿和注释 具有多个文件浏览器窗口 用于copypasta,用于diff,用于下载,用于探索 在键盘和鼠标之间来回切换 在同一屏幕上使用两个拆分时 屏幕上的视觉污染占用...
操作系统Arch Linux 虚空Linux Solus Linux 薄荷Linux Gentoo 费朵拉覆盆子FreeBSD的苹果系统HaikuOS操作系统-尚待探索基岩Linux 清除Linux 从零开始Linux FreeNAS OpenCore的操作系统-安全/隐私Qubes 尾巴操作系统-...