Подтвердить что ты не робот

Переставить вкладки с помощью мыши в gvim

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

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

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

4b9b3361

Ответ 1

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

Вот что в моем 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>

Ответ 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>

Ответ 6

Переместить вкладки влево/вправо

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

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

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

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