siguiente - ¿Hay un comando vim para reubicar una pestaña?
reemplazar en vi (7)
Mover la pestaña actual a la n ° posición
:tabm n
Donde n
es un número que denota la posición (comenzando desde cero)
Mueva las pestañas hacia la izquierda / derecha
Creo que una mejor solución es mover la pestaña hacia la izquierda o hacia la derecha a su posición actual en lugar de calcular el valor numérico de la nueva posición en la que lo desea.
noremap <A-Left> :-tabmove<cr>
noremap <A-Right> :+tabmove<cr>
Con los mapas de teclas anteriores, podrá mover la pestaña actual:
- A la izquierda usando: Alt + izquierda
- A la derecha usando: Alt + derecha
¿Cómo puedo cambiar la posición / orden de mi pestaña actual en Vim
? Por ejemplo, si deseo reposicionar mi pestaña actual, ¿será la primera pestaña?
¿Te refieres a mover la pestaña actual? Esto funciona usando tabmove.
:tabm[ove] [N] *:tabm* *:tabmove*
Move the current tab page to after tab page N. Use zero to
make the current tab page the first one. Without N the tab
page is made the last one.
Tengo dos enlaces de teclas que mueven mi pestaña actual a la izquierda o a la derecha. ¡Muy útil!
EDITAR: Aquí está mi macro VIM. No soy un gran codificador de ViM , así que tal vez se podría hacer mejor, pero así es como funciona para mí:
" Move current tab into the specified direction.
"
" @param direction -1 for left, 1 for right.
function! TabMove(direction)
" get number of tab pages.
let ntp=tabpagenr("$")
" move tab, if necessary.
if ntp > 1
" get number of current tab page.
let ctpn=tabpagenr()
" move left.
if a:direction < 0
let index=((ctpn-1+ntp-1)%ntp)
else
let index=(ctpn%ntp)
endif
" move tab page.
execute "tabmove ".index
endif
endfunction
Después de esto, puede vincular claves, por ejemplo, como esta en su .vimrc
:
map <F9> :call TabMove(-1)<CR>
map <F10> :call TabMove(1)<CR>
Ahora puede mover su pestaña actual presionando F9 o F10.
Además de las sutiles sugerencias en otras respuestas, también puede simplemente arrastrar pestañas con el mouse para moverlas, si tiene activada la compatibilidad con el mouse.
Esto está activado por defecto en MacVim y otras implementaciones de GUI vim, ya sea usando las pestañas de widgets GUI o las pestañas de estilo de terminal en modo GUI.
También funciona en el modo tty puro Vim, si ha set mouse=a
y tiene un terminal adecuado (xterm y la mayoría de los emuladores del mismo, como gnome-terminal, Terminal.app, iTerm2 y PuTTY / KiTTY, para nombrar una vista ) Tenga en cuenta que los clics del mouse más allá de la columna 222 también requieren set ttymouse=sgr
; ver In Vim, ¿por qué mi mouse no pasa la columna 220? para el fondo en eso.
He escrito un complemento llamado vim-tabber que proporciona alguna funcionalidad adicional para intercambiar pestañas, desplazarlas y agregar capacidades a los comandos de manipulación de pestañas incorporados, a la vez que se mantiene en gran medida compatible con las construcciones internas. Incluso si elige no usar el complemento, hay alguna información general de uso de pestañas en el archivo README.
Aquí está mi macro, usando argumentos relativos de la respuesta de @ maybeshewill:
" Shortcuts to move between tabs with Ctrl+Shift+Left/Right
function TabLeft()
if tabpagenr() == 1
execute "tabm"
else
execute "tabm -1"
endif
endfunction
function TabRight()
if tabpagenr() == tabpagenr(''$'')
execute "tabm" 0
else
execute "tabm +1"
endif
endfunction
map <silent><C-S-Right> :execute TabRight()<CR>
map <silent><C-S-Left> :execute TabLeft()<CR>
Maneja la envoltura.
Estaba buscando lo mismo y después de algunas publicaciones encontré una manera más simple que una función:
:execute "tabmove" tabpagenr() # Move the tab to the right
:execute "tabmove" tabpagenr() - 2 # Move the tab to the left
El tabpagenr() devuelve la posición de la pestaña real, y tabmove usa índices.
Mapeé la derecha para Ctrl + L y la izquierda para Ctrl + H:
map <C-H> :execute "tabmove" tabpagenr() - 2 <CR>
map <C-J> :execute "tabmove" tabpagenr() <CR>
Por alguna razón, la función de respuesta dejó de funcionar para mí. Sospecho que hay un conflicto con vim-ctrlspace . A pesar de todo, las matemáticas en la respuesta de la función no son necesarias, ya que Vim puede mover las pestañas hacia la izquierda y hacia la derecha con funciones incorporadas. Solo tenemos que manejar la envoltura , porque Vim no es fácil de usar.
" Move current tab into the specified direction.
"
" @param direction -1 for left, 1 for right.
function! TabMove(direction)
let s:current_tab=tabpagenr()
let s:total_tabs = tabpagenr("$")
" Wrap to end
if s:current_tab == 1 && a:direction == -1
tabmove
" Wrap to start
elseif s:current_tab == s:total_tabs && a:direction == 1
tabmove 0
" Normal move
else
execute (a:direction > 0 ? "+" : "-") . "tabmove"
endif
echo "Moved to tab " . tabpagenr() . " (previosuly " . s:current_tab . ")"
endfunction
" Move tab left or right using Command-Shift-H or L
map <D-H> :call TabMove(-1)<CR>
map <D-L> :call TabMove(1)<CR>
Puede reubicar una pestaña con :tabm
usando argumentos absolutos relativos o de índice cero.
absoluto:
- Mueva la pestaña a la posición i
:tabm i
relativo:
- Mueva la pestaña i posiciones a la derecha
:tabm +i
- Mueva la pestaña i posiciones hacia la izquierda
:tabm -i
Es una característica relativamente nueva. Entonces, si no funciona, intente actualizar su vim.