แป้นพิมพ์ลัดเพื่อสลับแท็บใน MacVim


16

มีทางลัดใด ๆ ในการสลับแท็บจากที่หนึ่งไปอีกที่หนึ่งใน MacVim หรือไม่?

แท็บ MacVim

เคล็ดลับใด ๆ ในการผูกทางลัดด้วยตนเองใน. vimrc เช่น⌘ + 1 สำหรับแท็บ 1 และ⌘ + 2 สำหรับแท็บ 2 ตัวอย่างเช่นสลับแท็บเบราว์เซอร์

คำตอบ:


17

เนื่องจาก MacVim เป็นโปรแกรมจริงบน Mac OS คุณสามารถแท็บแผนที่สลับแบบเดียวกับที่คุณจับคู่คำสั่งในโปรแกรมใด ๆ (ซึ่งฉันเพิ่งเรียนรู้เมื่อไม่นานมานี้)

เปิดการตั้งค่าระบบเลือก "แป้นพิมพ์" จากนั้นเลือก "ทางลัดแอปพลิเคชัน" (ในเมนูด้านซ้าย) ใต้เมนูด้านขวาให้คลิกที่เครื่องหมายบวก (+) เพื่อเพิ่มคำสั่งใหม่ เลือก MacVim สำหรับแอปพลิเคชันและสำหรับชื่อเมนูพิมพ์ "เลือกแท็บถัดไป" และเลือกทางลัด (ฉันเลือก Cmd + ลูกศรขวา) จากนั้นทำสิ่งเดียวกันสำหรับคำสั่ง "เลือกแท็บก่อนหน้า"

"เลือกแท็บถัดไป" และ "เลือกแท็บก่อนหน้า" ใน MacVim ภายใต้เมนู "หน้าต่าง" ตัวเลือกใด ๆ ที่คุณเห็นในเมนูใด ๆ สำหรับแอปสามารถแมปใหม่ได้โดยใช้วิธีนี้


1
เนื่องจากคำถามเกี่ยวกับ Macvim วิธีนี้จึงดีกว่า สิ่งเดียวคือเมื่อคุณต้องการพอร์ต. vimrc ของคุณกับเครื่องอื่น ๆ สิ่งนี้อาจไม่ทำงานที่นั่น แต่ฉันก็ยังชอบมันอยู่ ขอบคุณ
sabertooth

บน windows / linux i แผนที่ Alt + 1 ... 10 ถึงลำดับแท็บ ยินดีที่ได้รับคำสั่ง + 1 ไปที่แท็บแรกเนื่องจากเป็นแอปพลิเคชันอื่น ๆ ทุกเครื่องบน macs ยังไงก็เถอะ เมนูสำหรับเมนูนั้นคือ "Buffer >> <filename> (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

1
ขอบคุณฉันชอบโซลูชันนี้กับโซลูชันที่เลือกเนื่องจากฉันใช้คำสั่งด้านขวา | ลูกศรซ้ายเพื่อไปยังจุดสิ้นสุด / จุดเริ่มต้นของบรรทัด!
Brian Underwood

1
ใครจะทำให้มันทำงานในโหมดแทรกได้?
Oliver Joseph Ash

นี่คือสิ่งที่เกินความสวยงาม! ขอบคุณ! 🙏
Nik

12

คุณสามารถเลือกแท็บถัดไปด้วย+}และเลือกแท็บก่อนหน้าด้วย+{

ต้องกดปุ่ม Shift ไม่เพียง แต่กด[แทน a }
ดังนั้นทางลัดคือ+ shift+ ]หรือ+ shift+ [
ทางลัดนี้ทำงานได้ในหลาย ๆ แอพเช่นในเทอร์มินัล


นี่ไม่ใช่สิ่งที่ OP ขอให้ ... คำถามคือการสลับแท็บใน MacVim ไม่ใช่เทอร์มินัล
JESii

2
แต่นี่เป็นแป้นพิมพ์ลัดของ MacVim ปุ่มคำสั่งไม่ได้แปลเป็น terminal vim
spoulson

ฉันใช้ MacVim และตามที่กล่าวไว้ในโซลูชันนี้มันมีคำสั่งแป้นพิมพ์เพื่อสลับแท็บ ฉันเพิ่งหายไปปุ่ม <kbd> Shift </kbd> เมื่อทำ <kbd> ⌘ </kbd> + <kbd>} </kbd>
brettlyman

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

3

นอกจากจะทำให้แมปของคุณเองมีกำลังในตัวเป็นกลุ่มทางลัด gtลองจำนวนตามด้วย ตัวอย่างเช่น3gtนำคุณไปที่แท็บที่ 3 คุณสามารถทำได้เพียงgtไปที่แท็บถัดไปหรือไปที่แท็บgTก่อนหน้า

(ตั้งแต่กลุ่ม 7. บางอย่างแท็บได้รับการอบแม้ในโหมดข้อความไม่ใช่โหมด gvim)


ที่สมบูรณ์แบบ! วิธีการดั้งเดิมของชาวพื้นเมืองในการทำสิ่งนี้; ขอบคุณ
JESii
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.