在gvim中使用鼠标重新排列选项卡

时间:2010-01-21 00:38:19

标签: mouse tabs vim

gVim是否有办法通过鼠标拖放来重新排列标签?我正在寻找的行为类似于Firefox和Chrome中的标签。

我知道可以使用:tabm n更改标签顺序,但这需要确定您想要移动到的标签数量。使用鼠标对此空间任务更有用。

任何将标签左/右移动一个位置的方法也很有用,因为可以重新映射键并移动标签而不用太费劲。

6 个答案:

答案 0 :(得分:24)

以下是我的vimrc中有关标签的内容:

" Move tabs with alt + left|right
nnoremap <silent> <A-Left> :execute 'silent! tabmove ' . (tabpagenr()-2)<CR>
nnoremap <silent> <A-Right> :execute 'silent! tabmove ' . tabpagenr()<CR>

答案 1 :(得分:10)

这是将标签移动到左侧一个位置的功能。把它放在你的vimrc文件中,然后根据你的需要设置你的密钥(用它来称呼:execute TabLeft())。

请注意,这些功能分别从第一个到最后一个“滚动”标签,最后一个到第一个,因此向左移动第一个标签使其成为最后一个标签,向右移动最后一个标签使其成为第一个标签。

function TabLeft()
   let tab_number = tabpagenr() - 1
   if tab_number == 0
      execute "tabm" tabpagenr('$') - 1
   else
      execute "tabm" tab_number - 1
   endif
endfunction

......并在右边

function TabRight()
   let tab_number = tabpagenr() - 1
   let last_tab_number = tabpagenr('$') - 1
   if tab_number == last_tab_number
      execute "tabm" 0
   else
      execute "tabm" tab_number + 1
   endif
endfunction

答案 2 :(得分:4)

谢谢,我修改了我的vimrc代码:

function ShiftTab(direction)
     let tab_number = tabpagenr() 
     if a:direction == 0
         if tab_number == 1
             exe 'tabm' . tabpagenr('$')
         else
             exe 'tabm' . (tab_number - 2)
         endif
     else
         if tab_number == tabpagenr('$')
             exe 'tabm ' . 0
         else
             exe 'tabm ' . tab_number
         endif
     endif
     return ''
endfunction

然后在我的GVim中,我将[ctrl + shift + left]向左移动,[ctrl + shift + right]向左移动

inoremap <silent> <C-S-Left>  <C-r>=ShiftTab(0)<CR>
inoremap <silent> <C-S-Right>  <C-r>=ShiftTab(1)<CR>

noremap <silent> <C-S-Left>  :call ShiftTab(0)<CR>
noremap <silent> <C-S-Right> :call ShiftTab(1)<CR>

答案 3 :(得分:3)

chris.ritsen的解决方案在vim v7.4中停止了为我工作所以这里有一个更简单的选择:

" Move tabs left/right
nnoremap <silent> <s-left> :-tabmove<cr>
nnoremap <silent> <s-right> :+tabmove<cr>

答案 4 :(得分:1)

Ken Takata写了一个补丁来执行此操作https://groups.google.com/forum/#!msg/vim_dev/LnZVZYls1yk/PHQl4WNDAgAJ。一种选择是下载vim源代码,这个补丁和编译。

答案 5 :(得分:0)

将标签移动到左/右

这不涉及使用鼠标,但它使用非常简单的gvim键盘映射:

noremap <A-[> :-tabmove<cr>
noremap <A-]> :+tabmove<cr>

现在您可以移动当前标签:

  • 使用以下方式向左: Alt + [
  • 右侧使用: Alt + ]