0

我正在使用rails.vim,我喜欢您如何ctrl-x ctrl-u在插入模式下使用来自动完成长方法名称,例如distance_of_time_in_wordsaccepts_nested_attributes_for。但由于某种原因,它在 haml 文件中不起作用,我似乎无法弄清楚出了什么问题或如何解决它。

:help i_CTRL-X_CTRL-U说自动完成正在使用completefunc. haml 文件说它completefunc=syntaxcomplete#Complete(在 erb 和 helper 文件中ctrl-x ctrl-u工作正常。)我找不到syntaxcomplete#Complete魔术的定义位置,但可能与文件类型语法有关。我.vim/syntax/haml.vim来自vim-haml,所以我尝试删除它,但问题仍然存在。评论我的全部.vimrc也没有帮助。我还能尝试什么?

更新:我搜索了我的 vim 配置文件,唯一看起来像在做任何事情的地方syntaxcomplete#Completeautoload/rails.vim,看起来像这样:

function! s:resetomnicomplete()
  if exists("+completefunc") && &completefunc == 'syntaxcomplete#Complete'
    if exists("g:loaded_syntax_completion")
      " Ugly but necessary, until we have our own completion
      unlet g:loaded_syntax_completion
      silent! delfunction syntaxcomplete#Complete
    endif
  endif
endfunction
4

2 回答 2

0

名称中带有 # 的函数在自动加载脚本中定义:

一个可以自动加载的函数有这样的名字:
:call filename#funcname()
当这样一个函数被调用时,它还没有被定义,Vim 会在 'runtimepath' 的 "autoload" 目录中搜索一个名为“文件名.vim”。例如“~/.vim/autoload/filename.vim”。

:help autoload

于 2009-12-10T12:45:37.000 回答
0

看起来您要查找的文件是 vim 的一部分:

$ find /usr/share/vim/ -iname "syntaxcomplete.vim"
/usr/share/vim/vim72/autoload/syntaxcomplete.vim

有一个带有最新版本脚本的vim.org 页面。

如果要自定义补全,只需编写自己的补全函数即可。看:help complete-functions

你也可以使用Ctrl+n来使用 vim 的简单补全。它以任何打开文件中的文本完成,但可以自定义。(见:help 'complete'

于 2011-04-16T18:00:18.090 回答