mouse - detergente - vim limpiador
Reorganizar las pestaƱas con el mouse en gvim. (6)
¿Hay alguna forma en gVim
para reorganizar las pestañas arrastrándolas y gVim
con el mouse? El comportamiento que estoy buscando es similar a las pestañas de Firefox y Chrome.
Sé que es posible cambiar el orden de las pestañas usando :tabm n
pero eso requiere averiguar exactamente a cuántas pestañas te gustaría moverte. Usar el mouse sería más útil para esta tarea espacial.
Cualquier método para mover las pestañas hacia la izquierda / derecha en una posición también sería útil, ya que uno podría reasignar las teclas y mover las pestañas sin pensar demasiado.
Mueve las pestañas a la izquierda / derecha
Esto no implica el uso de un mouse, pero utiliza mapas de teclas muy simples para gvim
:
noremap <A-[> :-tabmove<cr>
noremap <A-]> :+tabmove<cr>
Ahora podrás mover la pestaña actual:
- A la izquierda usando: Alt + [
- A la derecha usando: Alt + ]
Aquí está lo que hay en mi vimrc con respecto a las pestañas:
" 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>
Aquí hay una función para mover una pestaña a la izquierda una posición. Póngalo en su archivo vimrc y configure sus claves como mejor le parezca (para llamarlo longhand :execute TabLeft()
).
Tenga en cuenta que estas funciones "ruedan" las pestañas de la primera a la última y de la última a la primera, respectivamente, por lo que mover la primera pestaña a la izquierda la convierte en la última pestaña, y al mover la última pestaña a la derecha la convierte en la primera pestaña.
function TabLeft()
let tab_number = tabpagenr() - 1
if tab_number == 0
execute "tabm" tabpagenr(''$'') - 1
else
execute "tabm" tab_number - 1
endif
endfunction
... y hacia la derecha
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
Gracias, y he modificado su código para mi 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
Luego, en mi GVim, asigno [ctrl + shift + left] para mover a la izquierda, [ctrl + shift + right] para mover a la izquierda
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>
Ken Takata escribió un parche para hacer esto https://groups.google.com/forum/#!msg/vim_dev/LnZVZYls1yk/PHQl4WNDAgAJ . Una opción es descargar el código fuente de vim, aplicar este parche y compilar.
La solución de chris.ritsen dejó de funcionar para mí en vim v7.4, así que aquí hay una alternativa más simple:
" Move tabs left/right
nnoremap <silent> <s-left> :-tabmove<cr>
nnoremap <silent> <s-right> :+tabmove<cr>