我希望能像在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"
答案 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>
从您的词典中填写