ฉันจะย้ายหน้าต่างที่มีอยู่ไปยังแท็บใหม่ได้อย่างไร


151

มีวิธีนำหน้าต่างที่มีอยู่ (แยก) และนำไปไว้ในแท็บใหม่หรือไม่


หากคุณกลับมาที่คำถามนี้โปรดเปลี่ยนคำตอบที่ยอมรับได้คำตอบของ DrAI นั้นถูกต้องกว่า Mykola
gbr

คำตอบ:


261

เช่นเดียวกับที่แนะนำก่อนหน้านี้:tabeditวิธีวิธีที่รวดเร็วในการทำมันเป็น (ในโหมดปกติ) ที่จะตีCtrl- -W Shift TCtrl-W เป็นคำนำหน้าทั่วไปสำหรับคำสั่งการปรับแต่งหน้าต่างที่หลากหลาย

ดู:

:help Ctrl-W_T
:help Ctrl-W

3
โปรดทราบว่าhelp Ctrl-W_Tจะนำคุณไปยังรายการความช่วยเหลือของCtrl-W_t(ตัวพิมพ์เล็ก) แต่ส่วนล่างของหน้าคือCtrl-W_Tรายการ (ด้วยตัวพิมพ์ใหญ่ T) โดยพูดว่า "ย้ายหน้าต่างปัจจุบันไปยังหน้าแท็บใหม่ .... "
Rabarberski

1
@DrAl และวิธีที่เราย้ายหน้าต่างแท็บใหม่เพื่อแยกหน้าต่าง?
Ramiz Uddin

@RamizUddin ไม่มีวิธีง่ายๆในการทำเช่นนี้ (เนื่องจากไม่ชัดเจนว่าคุณต้องการแบ่งออกเป็นหน้าต่างใด) อย่างไรก็ตามคุณสามารถค้นหาหมายเลขบัฟเฟอร์สำหรับหน้าแท็บปัจจุบันของคุณด้วย:echo bufnr("")และใช้หมายเลขนี้คุณสามารถแยกหน้าต่างด้วย:sp #3หรือ:sb 3(สมมติว่าตัวเลขคือ 3) คุณอาจสามารถใช้การแมปหรือฟังก์ชั่นเพื่อทำให้สิ่งนี้ง่ายขึ้น
DrAl

1
คุณจะย้ายบัฟเฟอร์ไปยังแท็บใหม่ได้อย่างไรโดยคงสถานะการเลิกทำ / ทำซ้ำ กล่าวอีกนัยหนึ่งฉันไม่ต้องการเปิดไฟล์เดียวกันในแท็บใหม่ฉันต้องการย้ายบัฟเฟอร์ไปยังแท็บใหม่เพื่อให้สามารถใช้ประวัติการแก้ไขในแท็บใหม่ได้ หากไม่มีวิธีการเริ่มต้นฉันสามารถวางปลั๊กอินที่เพิ่มทางลัดใหม่สำหรับการทำสิ่งนี้ซึ่งเขียนประวัติเลิกทำไปยังไฟล์ swap สำหรับบัฟเฟอร์ใหม่
trusktr

2
@trusktr ฉันคิดว่าการเปิดบัฟเฟอร์ในแท็บใหม่ด้วย:sbจะใช้งานได้ แต่ด้วย Vim (> = 7.3) เวอร์ชันล่าสุดคุณยังสามารถใช้การเลิกทำแบบถาวรได้โดยตั้งค่าset undodir=/path/to/dirที่ / path / to / dir เป็นไดเรกทอรีที่คุณ set undofileสร้างขึ้นเพื่อวัตถุประสงค์แล้ว สิ่งนี้จะอนุญาตให้คุณออกเป็นกลุ่มแล้วเริ่มใหม่และยังคงสถานะเลิกทำ / ทำซ้ำ
DrAl

103

ลอง

:tabedit %<CR>

3
แค่สงสัยว่าทำไมคุณรวม <CR> เข้าด้วย
สวิส

17
ด้วยเหตุผลเดียวกันฉันได้รวม ":" นี่คือการรวมกันเป็นกลุ่มคีย์ vim ในโหมดปกติและคุณสามารถใช้สิ่งนี้ใน 'nnoremap' และใน 'nmap'
Mykola Golubyev

6
มันทำงานได้ดียกเว้นมันจะโคลน / ทำซ้ำหน้าต่างไปยังแท็บใหม่ซึ่งตรงข้ามกับการปิดมันก่อนแล้วเปิดมันในแท็บใหม่ ไม่ใช่เรื่องใหญ่. สิ่งที่ต้องระวัง
A-Dubb

6
สิ่งนี้ไม่ย้ายบัฟเฟอร์ไปยังแท็บใหม่มันเพิ่งเปิดไฟล์เดียวกันในแท็บใหม่ แต่คุณจะไม่มีประวัติการเลิกทำ / ทำซ้ำ ฯลฯ
trusktr

5
C-w Tเป็นวิธีที่เร็วกว่าในการทำสิ่งเดียวกัน
Dylanthepiguy

3

สิ่งนี้จะย้ายบัฟเฟอร์ใหม่ล่าสุดในแท็บใหม่และคืนค่าบัฟเฟอร์ก่อนหน้าในแท็บปัจจุบัน ฉันใช้สิ่งนี้หลังจากลากไฟล์ใหม่ไปยัง Gvim ของฉัน

:sbp |wincmd p| wincmd T

คุณสามารถแมปแบบนั้นกับ Ctrl-Backspace

:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>

มันทำงานได้ดีโดยเฉพาะกับ

:set switchbuf=usetab

0

ฉันใช้สิ่งนี้ซึ่งให้สองฟังก์ชั่นซึ่งสามารถผูกกับคีย์ลัดหรือคำสั่งคู่หนึ่งซึ่งทำงานได้โดยสัญชาตญาณ Ctrl-W_Tฉันกำลังค่อนข้างมั่นใจว่ามันมีพฤติกรรมแม้เป็นมิตรมากกว่าเช่น

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

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

สิ่งนี้หมายความว่าคำสั่งย้ายคู่เดียวจะช่วยให้ทั้งสองหน้าต่างแบบเลื่อนรอบแท็บแยกหน้าต่างออกเป็นแท็บ (โดยผลักหน้าต่างออกไปจนสุด) และเข้าร่วมแท็บแยกกันในหน้าต่างภายในแท็บเดียวแทบทุกอย่าง คุณอาจต้องการขาดการจัดตำแหน่ง (ซึ่งเป็นหัวข้อที่แยกต่างหากและคำสั่งในตัวCtrl-W+ Shift-HJKLทำงานได้ดีสำหรับ)

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