Переставить вкладки с помощью мыши в gvim
Есть ли способ в gVim
изменить порядок вкладок, перетащив их мышью? Поведение, которое я ищу, похоже на вкладки в Firefox и Chrome.
Я знаю, что можно изменить порядок вкладок с помощью :tabm n
, но для этого нужно выяснить, сколько вкладок вы хотите переместить. Использование мыши было бы более полезным для этой пространственной задачи.
Любые методы перемещения вкладок влево/вправо одной позицией также будут полезны, поскольку можно переделать ключи и переместить вкладки, не задумываясь слишком сложно.
Ответы
Ответ 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>
Ответ 5
Кен Таката написал патч, чтобы сделать это https://groups.google.com/forum/#!msg/vim_dev/LnZVZYls1yk/PHQl4WNDAgAJ. Один из вариантов - загрузить исходный код vim, apry этот патч и скомпилировать.
Ответ 6
Переместить вкладки влево/вправо
Это не связано с использованием мыши, но для gvim
используются очень простые раскладки клавиатуры:
noremap <A-[> :-tabmove<cr>
noremap <A-]> :+tabmove<cr>
Теперь вы сможете переместить текущую вкладку:
- Влево, используя: Alt + [
- Справа с помощью: Alt + ]