Pintasan untuk berganti tab di MacVim

16

Apakah ada cara pintas untuk mengalihkan Tab dari satu ke yang lain di MacVim?

Tab MacVim

Setiap tips untuk mengikat pintasan sendiri di .vimrc seperti ⌘ +1 untuk Tab 1 dan ⌘ + 2 untuk Tab 2. Misalnya, seperti mengganti tab browser.

Ye Lin Aung
sumber

Jawaban:

17

Karena MacVim adalah program aktual di Mac OS, Anda dapat memetakan tab switching dengan cara yang sama seperti memetakan perintah dalam program apa pun (yang secara pribadi baru saja saya pelajari tentangnya).

Buka System Preferences, pilih "Keyboard", lalu "Shortcut Aplikasi" (di menu sebelah kiri). Di bawah menu di sebelah kanan, klik pada tanda tambah (+) untuk menambahkan perintah baru. Pilih MacVim untuk aplikasi, dan untuk judul menu, ketik "Pilih Tab Berikutnya", dan pilih pintasan (saya memilih Cmd + panah kanan). Kemudian lakukan hal yang sama untuk perintah "Pilih Tab Sebelumnya".

"Pilih Tab Berikutnya" dan "Pilih Tab Sebelumnya" ditemukan di MacVim di bawah menu "Jendela". Opsi apa pun yang Anda lihat di salah satu menu untuk aplikasi dapat dibuat ulang menggunakan metode ini.

DevDaddyNick
sumber
1
Karena pertanyaannya adalah tentang Macvim, solusi ini lebih baik. Satu-satunya hal adalah ketika Anda ingin mem-port .vimrc Anda ke komputer lain ini mungkin tidak berfungsi di sana tapi saya masih lebih suka ini. Terima kasih.
sabertooth
pada windows / linux saya memetakan Alt + 1 ... 10 ke urutan tab. Akan menyenangkan untuk memiliki perintah +1 pergi ke tab pertama, karena untuk setiap aplikasi lain di mac. Lagi pula untuk melakukan itu? Menu untuk itu adalah "Buffer >> <filename> (1)"
gcb
20

Anda tentu saja dapat mengubah pintasan dengan preferensi sistem OSX untuk keyboard Anda seperti yang ditunjukkan di sini: Cara Memetakan Ulang Pintasan Keyboard di Mac OS X

Beberapa mungkin lebih suka melakukannya melalui .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
sumber
1
Terima kasih, saya lebih suka solusi ini daripada yang dipilih karena saya menggunakan perintah-kanan | panah-kiri untuk pergi ke akhir / awal baris!
Brian Underwood
1
Bagaimana seseorang bisa membuat ini berfungsi dalam mode sisipkan?
Oliver Joseph Ash
Ini sangat indah! Terima kasih! πŸ™
Nik
12

Anda dapat Pilih Tab Berikutnya dengan ⌘+ }dan Pilih Tab Sebelumnya dengan ⌘+{

Tombol shift diperlukan untuk tidak hanya menekan [bukan }
Jadi pintasannya adalah ⌘+ shift+ ]atau ⌘+ shift+ [
Pintasan ini berfungsi di banyak aplikasi, yaitu di Terminal

Masolino
sumber
Ini bukan apa yang diminta OP ... pertanyaannya adalah beralih tab di MacVim, bukan terminal
JESii
2
Tapi ini adalah pintasan keyboard MacVim. Kunci perintah tidak diterjemahkan ke terminal vim.
spoulson
Saya menggunakan MacVim dan seperti yang disebutkan dalam solusi ini, ia sudah memiliki perintah keyboard untuk beralih tab. Saya hanya kehilangan kunci <kbd> Shift </kbd> saat melakukan <kbd> ⌘ </kbd> + <kbd>} </kbd>.
brettlyman
5

Saya memiliki yang berikut di ~ / .vimrc saya untuk Linux. Anda harus dapat mengubah urutan " <M-" menjadi " <D-" untuk mendapatkan yang Anda inginkan:

" 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
sumber
3

Selain membuat pemetaan Anda sendiri, ada yang built-in pintas vim. Coba nomor yang diikuti oleh gt. Misalnya: 3gtmembawa Anda ke tab ke-3. Anda juga dapat melakukannya hanya gtuntuk pergi ke tab berikutnya, atau gTpergi ke yang sebelumnya.

(Sejak vim 7.something, tab telah dipanggang bahkan dalam versi teks-mode non-gvim.)

murftown
sumber
Sempurna! Cara asli vim untuk melakukan ini; Terima kasih.
YESUS