Tabmate完成就像在Textmate中一样?

时间:2011-11-07 21:09:03

标签: vi vim

我希望能像在Textmate中一样使用Vim中的制表符完成。

喜欢这个。

  • 正在运行<Tab>应该在当前文档中的单词之间切换,从最近的单词开始。
  • 建议应以内联方式显示,而不是列在清单中。

如果它在当前文件中的单词之外可以循环遍历字典中的单词,那将会很棒。

我现在正在使用supertab,是否可以根据我的需要进行调整?

以下是我的vimrc文件中的相关代码。

function! Tab_Or_Complete()
  if col('.')>1 && strpart( getline('.'), col('.')-2, 3 ) =~ '^\w'
    return "\<C-N>"
  else
    return "\<Tab>"
  endif
endfunction
inoremap <Tab> <C-R>=Tab_Or_Complete()<CR>
set dictionary="/usr/share/dict/words"

1 个答案:

答案 0 :(得分:4)

我们要清楚。

在TextMate中点击<tab>根本不提供单词完成,它会触发片段的扩展。

通过点击<Esc>

来触发使用当前文件内容的单词完成

当前活动的捆绑包可以提供半智能代码完成,通常使用<Alt><Esc>

这是三种类型的完成,有三种不同的快捷方式和三种截然不同的用户界面和行为。

现在在Vim身边......

一些插件(SnipMate,SnippetEmu ...)旨在提供相当于TextMate的<Tab>扩展系统。

单词完成由称为“插入模式完成”(:help ins-completion)的内置功能提供,并通过点击<C-n><C-p><C-x><C-k>来完成来自字典。

代码完成由名为“omni completion”(:help new-omni-completion)的内置功能提供,并通过点击<C-x><C-o>触发。

我认为您不想模仿TextMate的<Tab>扩展或执行代码完成。

这让我们混合了

  • <C-n><C-p>以填写当前缓冲区中的字词
  • <C-x><C-k>从您的词典中填写