【问题标题】:Rearrange tabs with the mouse in gvim在 gvim 中用鼠标重新排列选项卡
【发布时间】:2016-12-02 03:52:12
【问题描述】:

gVim 中是否有任何方法可以通过鼠标拖放来重新排列选项卡?我正在寻找的行为类似于 Firefox 和 Chrome 中的标签。

我知道可以使用:tabm n 更改标签顺序,但这需要准确确定您想要移动到多少标签。对于这个空间任务,使用鼠标会更有用。

任何将选项卡向左/向右移动一个位置的方法也很有用,因为可以重新映射键并移动选项卡而不用想太多。

【问题讨论】:

  • 这对 GTK 用户没有用,但我发现用鼠标移动标签在 MacVim 中效果很好。

标签: mouse tabs vim


【解决方案1】:

这是我的 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>

【讨论】:

  • @Waseem:不,接受的答案要聪明得多;它还会在第一个和最后一个标签处向后折叠。
【解决方案2】:

这是一个将标签向左移动一个位置的功能。把它放在你的 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

【讨论】:

  • 太好了,我把它和这个映射一起添加到我的 gvimrc 中,将 ctrl-shift-cursors 设置为我的标签移动键:“map :execute TabRight()"
  • 谢谢,我正在寻找 tabpagenr 函数!
【解决方案3】:

谢谢,我已经为我的 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>

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      Ken Takata 写了一个补丁来做到这一点 https://groups.google.com/forum/#!msg/vim_dev/LnZVZYls1yk/PHQl4WNDAgAJ 。一种选择是下载 vim 源代码,应用此补丁并编译。

      【讨论】:

        【解决方案6】:

        向左/向右移动标签

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

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

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

        • 向左使用: Alt + [
        • 向右使用: Alt + ]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-10
          • 2015-11-23
          相关资源
          最近更新 更多