Thursday, December 12, 2013

Re: vim: toggle between tabs and toggle between buffers

I tried these pseudo-codes, but these are just 1 time thing and won't change over time...couldn't figure out a good way.

;if more than one tab, don't hack
if tabpagenr("$") > 1
  unmap gt
  unmap gT
;otherwise , if there is one tab, use gt,gT,Ngt to switch between buffers
else
  if v:count == 0
    map gt :bn<cr>
    map gT :bp<cr>
  else
    map gt :<C-U>exec "b" . v:count<cr>
  endif
endif






On Thu, Dec 12, 2013 at 11:23 PM, Nikolay Pavlov <zyx.vim@gmail.com> wrote:


On Dec 13, 2013 1:56 AM, "ping song" <songpingemail@gmail.com> wrote:
>
> furthermore,  I want to overide Ngt to :bN<enter>, when there is only one tab...
> this looks requiring N being extracted and used as a parameter of the function...
> how to implement that?

Use v:count or v:count1. Knowing that "2:" results in ":.,.+1" you may also extract count using ":function Func() range" or ":command-range".

>
> thanks!
>
>
> On Thu, Dec 12, 2013 at 11:29 AM, ping song <songpingemail@gmail.com> wrote:
>>
>> thanks. this is nice. just one more <enter> in the end.
>>
>> noremap <silent> ,l :call <SID>switch()<enter>
>>
>> reading about <SID> again...(I figured it out ever)
>>
>>
>>
>> On Thu, Dec 12, 2013 at 4:40 AM, Paul Isambert <zappathustra@free.fr> wrote:
>>>
>>> "ping song" <songpingemail@gmail.com>:
>>> > currently I have a map to quickly switch between 2 tabs:
>>> >
>>> > nmap ,l :exe "tabn ".g:lasttab<CR>
>>> > au TabLeave * let g:lasttab = tabpagenr()
>>> >
>>> > it works nice.
>>> >
>>> > but I'm thinking to extend that to another scenario, that if I got
>>> > only one tab left but still have multiple buffers, the same map will
>>> > toggle between the last 2 buffers used instead of tabs.
>>> >
>>> > how to archive this ?
>>>
>>> Check whether there exists more than one tab page; if not, use ":b #" as
>>> indicated by Marc:
>>>
>>>     function! s:switch()
>>>       if tabpagenr("$") > 1
>>>         exe "tabnext" g:lasttab
>>>       else
>>>         b #
>>>       endif
>>>     endfunction
>>>     noremap <silent> ,l :call <SID>switch()
>>>
>>> Best,
>>> Paul
>>>
>>> --
>>> --
>>> You received this message from the "vim_use" maillist.
>>> Do not top-post! Type your reply below the text you are replying to.
>>> For more information, visit http://www.vim.org/maillist.php
>>>
>>> ---
>>> You received this message because you are subscribed to the Google Groups "vim_use" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>
> --
> --
> You received this message from the "vim_use" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>  
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
 
---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
 
---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: