【发布时间】:2013-03-26 17:07:42
【问题描述】:
我有一个疯狂的小挑战。我想将 tab 和 shift + tab 重新映射到 vim 中的基本选项卡完成。这是我开始的地方:
set completeopt=
inoremap <tab> <C-n>
inoremap <S-tab> <C-p>
这根本没有任何效果,而且我也意识到它可能会弄乱我的 sn-ps 插件。我四处搜索,发现了这个:http://vim.wikia.com/wiki/Smart_mapping_for_tab_completion,但实施任何建议都没有运气。
我想映射到 tab 和 shift + tab,而不会丢失 sn-p 功能。任何帮助都会动摇!
更新:我也尝试过这个,现在很幸运。它没有明显的效果。
fu! InsertTabWrapper(direction)
let char_before = col('.') - 1
if !char_before || getline('.')[char_before - 1] !~ '\k'
return "\<tab>"
elseif "backward" == a:direction
return "\<c-p>"
else
return "\<c-n>"
endif
endfu
inoremap <tab> <c-r>=InsertTabWrapper("forward")<cr>
inoremap <s-tab> <c-r>=InsertTabWrapper("backward")<cr>
【问题讨论】:
-
在 php/java/c 文件中说,你在 cmets 中有“当它被调用时”,然后你输入
wh<tab>,你想要什么?while?或while loop snippet? -
while 循环 sn-p。这对我来说不是很常见,但我希望 sn-p 优先。
标签: vim tab-completion