Ярлык для переключения вкладок в MacVim

16

Есть ли в MacVim ярлыки для переключения вкладок с одной на другую?

Вкладки MacVim

Любые советы по привязке ярлыков в .vimrc, например ⌘ + 1 для вкладки 1 и ⌘ + 2 для вкладки 2. Например, например, переключение вкладок браузера.

Е Лин Аунг
источник

Ответы:

17

Поскольку MacVim является реальной программой для Mac OS, вы можете отобразить переключение вкладок так же, как вы отображаете команды в любой программе (о которой я лично недавно узнал).

Откройте Системные настройки, выберите «Клавиатура», затем «Сочетания клавиш» (в левом меню). Под меню справа нажмите на плюс (+), чтобы добавить новую команду. Выберите MacVim для приложения, а для заголовка меню введите «Выбрать следующую вкладку» и выберите ярлык (я выбрал Cmd + стрелка вправо). Затем сделайте то же самое для команды «Выбрать предыдущую вкладку».

«Выбрать следующую вкладку» и «Выбрать предыдущую вкладку» находятся в MacVim в меню «Окно». Любая опция, которую вы видите в любом из меню приложения, может быть переназначена с помощью этого метода.

DevDaddyNick
источник
1
Поскольку вопрос был о Macvim, это решение лучше. Единственное, что, когда вы хотите перенести ваш .vimrc на другие машины, это может не сработать, но я все же предпочитаю это. Благодарю.
саблезубый
в Windows / Linux я сопоставить Alt + 1 ... 10 в порядке табуляции. Было бы неплохо, чтобы команда + 1 переходила на первую вкладку, как и для любого другого приложения на Mac. В любом случае, чтобы сделать это? Меню для этого «Буфер >> <имя файла> (1)»
gcb
20

Конечно, вы можете изменить сочетания клавиш с помощью системных настроек OSX для вашей клавиатуры, как показано здесь: Как переназначить любой ярлык клавиатуры в Mac OS X

Некоторые могут предпочесть сделать это через свои .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
cseelus
источник
1
Спасибо, я предпочитаю это решение выбранному, потому что я использую команду вправо | стрелка влево для перехода в конец / начало строк!
Брайан Андервуд
1
Как можно заставить это работать в режиме вставки?
Оливер Джозеф Эш
Это за гранью прекрасного! Благодарность! Nik
Ник
12

Вы можете выбрать следующую вкладку с помощью + }и выбрать предыдущую вкладку с помощью +{

Клавиша Shift требуется, чтобы не просто нажать [вместо вместо. }
Таким образом, это сочетание клавиш + shift+ ]или + shift+. [
Эти сочетания клавиш работают во многих приложениях, например в терминале.

Мазолино
источник
Это не то, о чем просит ОП ... вопрос был в том, чтобы переключать вкладки в MacVim, а не в терминале
JESii
2
Но это Сочетание клавиш MacVim. Клавиши управления не переводятся в терминал vim.
Спулсон
Я использую MacVim и, как уже упоминалось в этом решении, он уже имеет команды клавиатуры для переключения вкладок. Мне просто не хватало клавиши <kbd> Shift </ kbd> при выполнении <kbd> ⌘ </ kbd> + <kbd>} </ kbd>.
Бреттлиман
5

В моем ~ / .vimrc для Linux есть следующее. Вы должны иметь возможность изменить последовательность « <M-» на « <D-», чтобы получить то, что вы хотите:

" 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
Heptite
источник
3

В дополнение к созданию собственных отображений, там будут построены в VIM ярлыки. Попробуйте число, за которым следует gt. Например: 3gtпереводит вас на 3-ю вкладку. Вы также можете просто gtперейти к следующей вкладке или gTперейти к предыдущей.

(Начиная с vim 7. что-то, вкладки запекались даже в текстовой версии без gvim.)

murftown
источник
Отлично! Родной VIM способ сделать это; Благодарю.
JESii