Переставляйте вкладки мышкой в ​​gvim - PullRequest
22 голосов
/ 21 января 2010

Есть ли способ в gVim изменить порядок вкладок, перетаскивая их мышью? Мне нужно поведение, похожее на вкладки в Firefox и Chrome.

Я знаю, что можно изменить порядок вкладок с помощью :tabm n, но для этого нужно точно определить, на сколько вкладок вы хотите перейти. Использование мыши было бы более полезным для этой пространственной задачи.

Также были бы полезны любые методы перемещения вкладок влево / вправо на одну позицию, поскольку можно перераспределять клавиши и перемещать вкладки, не задумываясь.

Ответы [ 6 ]

24 голосов
/ 25 августа 2011

Вот что в моем 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>
10 голосов
/ 21 января 2010

Вот функция для перемещения вкладки влево на одну позицию. Поместите его в свой файл 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
4 голосов
/ 11 апреля 2011

Спасибо, и я изменил ваш код для моего 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 голосов
/ 05 августа 2015

Решение chris.ritsen перестало работать для меня в vim v7.4, так что вот более простая альтернатива:

" Move tabs left/right
nnoremap <silent> <s-left> :-tabmove<cr>
nnoremap <silent> <s-right> :+tabmove<cr>
1 голос
/ 12 сентября 2016

Кен Таката написал патч для этого https://groups.google.com/forum/#!msg/vim_dev/LnZVZYls1yk/PHQl4WNDAgAJ. Один из вариантов - скачать исходный код vim, применить этот патч и скомпилировать.

0 голосов
/ 01 декабря 2016

Перемещение вкладок влево / вправо

Это не связано с использованием мыши, но для gvim:

используются очень простые сочетания клавиш.
noremap <A-[> :-tabmove<cr>
noremap <A-]> :+tabmove<cr>

Теперь вы сможете перемещать текущую вкладку:

  • Влево, используя: Alt + [
  • Справа, используя: Alt + ]
...