我在 VIM 7.3 中将 Tab 配置为 Omnicompetion:
inoremap <Tab> <C-n>
Run Code Online (Sandbox Code Playgroud)
这很方便,但我真的很想在一行的开头放回常规选项卡!有什么方法可以检查前面的字符是空格还是行开头,如果是,则插入制表符而不是全能字符?
谢谢!
Hep*_*ite 12
我已经使用了一段时间了:
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-p>"
endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>
Run Code Online (Sandbox Code Playgroud)
这使您可以在光标位于行首或不在单词上时正常使用 tab 键,否则它会执行 control-p 完成键——您可以将其更改为 <cn> 以供您使用,尽管我发现 < cp> 更有用。
[虽然我已经修改过,但最初的想法可能来自 Vim 用户的邮件列表,但我没有记录我从哪里得到它。]