Atalho para alternar abas no MacVim


16

Existem atalhos para alternar as guias de um para outro no MacVim?

Guias MacVim

Alguma dica para vincular os atalhos em .vimrc como ⌘ + 1 na guia 1 e ⌘ + 2 na guia 2. Por exemplo, como alternar as guias do navegador.

Respostas:


17

Como o MacVim é um programa real no Mac OS, você pode mapear a alternância de guias da mesma maneira que mapeia comandos em qualquer programa (sobre o qual eu aprendi pessoalmente recentemente).

Abra as Preferências do sistema, selecione "Teclado" e depois "Atalhos do aplicativo" (no menu esquerdo). No menu à direita, clique no sinal de mais (+) para adicionar um novo comando. Escolha MacVim para o aplicativo e, para o título do menu, digite "Selecionar próxima guia" e escolha um atalho (eu escolhi Cmd + seta para a direita). Em seguida, faça o mesmo com o comando "Selecionar guia anterior".

"Selecionar próxima guia" e "Selecionar guia anterior" são encontrados no MacVim no menu "Janela". Qualquer opção que você vê em qualquer um dos menus de um aplicativo pode ser remapeada usando esse método.


11
Como a pergunta era sobre o Macvim, essa solução é melhor. A única coisa é que quando você deseja portar seu .vimrc para outras máquinas, isso pode não funcionar lá, mas eu ainda prefiro isso. Obrigado.
sabertooth

no windows / linux, mapeio Alt + 1 ... 10 na ordem de tabulação. Seria bom que o comando + 1 fosse para a primeira guia, como é para todos os outros aplicativos em Macs. Enfim, para fazer isso? O menu para isso é "Buffer >> <filename> (1)"
gcb

20

Obviamente, você pode alterar os atalhos com as preferências do sistema OSX para o teclado, como mostrado aqui: Como mapear novamente qualquer atalho de teclado no Mac OS X

Alguns podem preferir fazê-lo através de .vimrc:

if has("gui_macvim")
  " Press Ctrl-Tab to switch between open tabs (like browser tabs) to 
  " the right side. Ctrl-Shift-Tab goes the other way.
  noremap <C-Tab> :tabnext<CR>
  noremap <C-S-Tab> :tabprev<CR>

  " Switch to specific tab numbers with Command-number
  noremap <D-1> :tabn 1<CR>
  noremap <D-2> :tabn 2<CR>
  noremap <D-3> :tabn 3<CR>
  noremap <D-4> :tabn 4<CR>
  noremap <D-5> :tabn 5<CR>
  noremap <D-6> :tabn 6<CR>
  noremap <D-7> :tabn 7<CR>
  noremap <D-8> :tabn 8<CR>
  noremap <D-9> :tabn 9<CR>
  " Command-0 goes to the last tab
  noremap <D-0> :tablast<CR>
endif

11
Obrigado, eu prefiro muito esta solução à selecionada, porque uso o comando-right | left-arrow para ir ao final / início das linhas!
Brian Underwood

11
Como alguém poderia fazer isso funcionar no modo de inserção?
Oliver Joseph Ash

Isso está além da beleza! Obrigado! 🙏
Nik

12

Você pode selecionar a próxima guia com + }e selecionar a guia anterior com +{

A tecla Shift é necessária para não apenas pressionar a em [vez de a. }
Portanto, o atalho é + shift+ ]ou + shift+. [
Esses atalhos funcionam em muitos aplicativos, ou seja, no Terminal


Este não é o que o OP está pedindo ... a pergunta era para guias de switch em MacVim, não é terminal
JESii

2
Mas este é um atalho de teclado do MacVim. As chaves de comando não se traduzem no terminal vim.
spoulson

Estou usando o MacVim e, como mencionado nesta solução, ele já possui comandos de teclado para alternar entre guias. Simplesmente estava faltando a tecla <kbd> Shift </kbd> ao executar <kbd> ⌘ </kbd> + <kbd>} </kbd>.
brettlyman

5

Eu tenho o seguinte no meu ~ / .vimrc para Linux. Você poderá alterar a <M-sequência " <D-" para " " para obter o que deseja:

" Meta+1-0 jumps to tab 1-10, Shift+Meta+1-0 jumps to tab 11-20:
let s:windowmapnr = 0
let s:wins='1234567890!@#$%^&*()'
while (s:windowmapnr < strlen(s:wins))
    exe 'noremap <silent> <M-' . s:wins[s:windowmapnr] . '> ' . (s:windowmapnr + 1) . 'gt'
    exe 'inoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-O>' . (s:windowmapnr + 1) . 'gt'
    exe 'cnoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-C>' . (s:windowmapnr + 1) . 'gt'
    exe 'vnoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-C>' . (s:windowmapnr + 1) . 'gt'
    let s:windowmapnr += 1
endwhile
unlet s:windowmapnr s:wins

3

Além de fazer seus próprios mapeamentos, não são built-in atalhos vim. Tente um número seguido por gt. Por exemplo:3gt leva você para a 3ª guia. Você também pode fazer isso apenas gtpara ir para a próxima guia ou gTpara a anterior.

(Desde o vim 7.alguma coisa, as guias foram criadas mesmo na versão não-gvim em modo de texto.)


Perfeito! A maneira nativa do vim de fazer isso; obrigado.
JESii 16/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.