Skrót do przełączania kart w MacVimie


16

Czy w MacVimie są jakieś skróty do przełączania kart z jednej na drugą?

MacVim Tabs

Wszelkie porady dotyczące samodzielnego wiązania skrótów w .vimrc, takie jak ⌘ + 1 dla Tab 1 i ⌘ + 2 dla Tab 2. Na przykład, jak przełączanie kart przeglądarki.

Odpowiedzi:


17

Ponieważ MacVim jest rzeczywistym programem w systemie Mac OS, możesz mapować przełączanie kart w taki sam sposób, jak mapujesz polecenia w dowolnym programie (o czym osobiście niedawno się dowiedziałem).

Otwórz Preferencje systemowe, wybierz „Klawiatura”, a następnie „Skróty aplikacji” (w menu po lewej stronie). W menu po prawej stronie kliknij plus (+), aby dodać nowe polecenie. Wybierz MacVim dla aplikacji, a dla tytułu menu wpisz „Wybierz następną kartę” i wybierz skrót (wybrałem Cmd + strzałka w prawo). Następnie zrób to samo dla polecenia „Wybierz poprzednią kartę”.

„Wybierz następną kartę” i „Wybierz poprzednią kartę” można znaleźć w MacVim w menu „Okno”. Każda opcja widoczna w dowolnym menu dla aplikacji może być odwzorowana za pomocą tej metody.


1
Ponieważ pytanie dotyczyło Macvima, to rozwiązanie jest ładniejsze. Jedyną rzeczą jest to, że jeśli chcesz przenieść swój plik .vimrc na inne maszyny, może to nie działać, ale nadal wolę to. Dzięki.
sabertooth

w systemie Windows / Linux i map Alt + 1 ... 10 w kolejności tabulatorów. Byłoby miło, gdyby polecenie + 1 przechodziło do pierwszej karty, tak jak w przypadku każdej innej aplikacji na Macu. W każdym razie to zrobić? Menu do tego to „Bufor >> <nazwa pliku> (1)”
gcb

20

Możesz oczywiście zmienić skróty za pomocą preferencji systemowych OSX na klawiaturze, jak pokazano tutaj: Jak zmienić przypisanie dowolnego skrótu klawiaturowego w Mac OS X

Niektórzy wolą to zrobić za pomocą .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

1
Dzięki, zdecydowanie wolę to rozwiązanie od wybranego, ponieważ używam strzałki w prawo | w lewo do przejścia do końca / początku linii!
Brian Underwood

1
Jak można to zrobić w trybie wstawiania?
Oliver Joseph Ash

To jest ponad piękne! Dzięki! 🙏
Nik

12

Możesz wybrać następną kartę za pomocą + }i wybierz poprzednią kartę za pomocą +{

Klawisz Shift jest wymagany, aby nie tylko nacisnąć [zamiast Zamiast, }
więc skrót to + shift+ ]lub + shift+ [
Skróty te działają w wielu aplikacjach, tj. W terminalu


Nie o to prosi OP ... chodziło o zmianę kart w MacVimie, a nie na terminalu
JESii

2
Ale jest to skrót klawiaturowy MacVim. Klawisze poleceń nie tłumaczą się na terminal vim.
spoulson,

Używam MacVima i jak wspomniano w tym rozwiązaniu, ma już polecenia klawiaturowe do przełączania kart. Po prostu brakowało mi klawisza <kbd> Shift </kbd> podczas wykonywania <kbd> ⌘ </kbd> + <kbd>} </kbd>.
brettlyman

5

Mam następujące w moim ~ / .vimrc dla Linux. Powinieneś być w stanie zmienić <M-sekwencję „ <D-” na „ ”, aby uzyskać to, czego chcesz:

" 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

Oprócz tworzenia własnych mapowania nie wbudowane w vim skrótów. Wypróbuj numer, a następnie gt. Na przykład: 3gtprzenosi cię do trzeciej karty. Możesz także zrobić tylko gtprzejście do następnej karty lub gTprzejść do poprzedniej.

(Od wersji vim 7. tabulatory zostały wypalone nawet w wersji tekstowej innej niż gvim).


Doskonały! Natywny sposób vim to zrobić; dzięki.
JESii
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.