tutorial limpiador detergente descargar commands comandos mouse tabs vim

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>



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>