我希望绑定<C-n>
来根据编辑器的状态在Vim中做两件事之一。如果我打开标签,我希望切换到下一个标签,否则我希望打开新标签页。我已经查看了帮助并提出了这个问题,但它没有工作,而且我是一个viml noob。
function TabBind()
if range(tabpagenr()) < 2
nno <C-n> :tabnew
else
nno <C-n> :tabn
endif
endfunction
这可能吗?如果是这样的话?
答案 0 :(得分:3)
这个想法是你映射一个决定在飞行中做什么的函数。
function TabBind()
if tabpagenr('$') < 2
tabnew
else
tabn
endif
endfunction
nno <C-n> :call TabBind()<cr>
答案 1 :(得分:1)
你也可以定义像单行这样简单的东西。例如,我有以下映射转到下一个diff(在diff模式下),否则转到下一个错误消息。
nnoremap <expr> <silent> <F3> (&diff ? "]c:call \<sid>NextDiff()\<cr>" : ":cn\<cr>")
在您的情况下,您的映射将是:
nnoremap <expr> <silent> <c-n> (tabpagenr('$') < 2 ? ":tabnew\<cr>" : ":tabn\<cr>")