ฉันจะเปิด Shell ภายใน Vim Window ได้อย่างไร


114

ฉันสามารถเปิดเชลล์ได้โดยใช้คำสั่ง: shell ใน Vim แต่ฉันไม่สามารถแก้ไขไฟล์ได้และในเวลาเดียวกันก็ใช้เชลล์

มีวิธีใดบ้างในการแบ่ง Vim ในหลาย ๆ Windows (หรือแท็บ) และเปิดเชลล์ในหนึ่งในนั้นหรือไม่?


1
เคยมีแพทช์เชลล์ออกมาเพื่อเป็นกลุ่ม แต่มันไม่ได้รวบรวม afaik อีกต่อไป สิ่งที่ใกล้เคียงที่สุดที่คุณจะไปถึงเชลล์ที่แท้จริงคือการใช้ screen หรือ tmux นี่คือสิ่งที่ยิ่งใหญ่ที่สุดที่ฉันพลาดในกลุ่ม
Randy Morris

2
ดูเหมือนจะซ้ำกับstackoverflow.com/questions/1236563/…
Brad Cupit

คำตอบ:


87

Neovim และ Vim 8.2สนับสนุนสิ่งนี้โดยกำเนิดผ่าน:ter[minal]คำสั่ง

ดูterminal-windowรายละเอียดในเอกสาร


5
นี่ควรเป็นโซลูชันที่ยอมรับสำหรับ vim> = 8.0
61

3
วิธีการแยกขั้วในแนวตั้ง?
Kiran Kumar Kotari

2
@KiranKumarKotari ลองvsplit term://bashถ้าคุณใช้ Neovim
prater

4
ด้วย vim 8.0 หรือใหม่กว่าterminalคำสั่งจะแบ่งหน้าต่างและให้เชลล์คำสั่งที่มีสีพิเศษบนแถบสถานะของหน้าต่าง เนียน.
NoelProf

@KiranKumarKotari vert [ical] ter [minal]
MPA95

46

มันขึ้นอยู่กับระบบปฏิบัติการของคุณจริงๆแล้วฉันไม่ได้ทดสอบบน MS Windows แต่Conqueเป็นหนึ่งในปลั๊กอินที่ดีที่สุด

จริงๆแล้วอาจจะดีกว่า แต่ได้ผล


4
หากคุณใช้ Vundle เพื่อจัดการปลั๊กอินคุณสามารถเพิ่ม Bundle 'jewes / Conque-Shell' ลงในไฟล์. vimrc ของคุณและเรียกใช้: BundleInstall เพื่อติดตั้ง
Mingjiang Shi

สิ่งหนึ่งที่ต้องระวัง: ข้อกำหนด + python หรือ + python3 สำหรับ vi อาจเป็นตัวทำลายในสภาพแวดล้อมการทำงานบางอย่าง
cfi

นี่คือ URL ที่อัปเดตแล้ว (พร้อมภาพหน้าจอ): github.com/wkentaro/conque.vim
Walty Yeung

18

:vspหรือ:sp- แบ่งกลุ่มเป็นสองอินสแตนซ์ แต่คุณไม่สามารถใช้: เชลล์ในหนึ่งในนั้น

ทำไมไม่แสดงแท็บอื่นของเทอร์มินัลไม่ใช่แท็บอื่นของกลุ่ม หากคุณชอบแนวคิดนี้คุณสามารถลองใช้: Ctrl-shift-t.และย้ายไปมาระหว่างแนวคิดเหล่านี้ด้วยCtrl - pageupและCtrl - pagedown

หากคุณต้องการคำสั่งเชลล์เพียงไม่กี่คำคุณสามารถสร้างคำสั่งเชลล์เป็นกลุ่มโดยใช้ !

ตัวอย่างเช่น:!./a.out.


1
และในการเรียกใช้ไฟล์ปฏิบัติการที่เปิดอยู่ในปัจจุบันคุณสามารถใช้vimpath magic ได้ดังนี้::!./%
cprn

ทำไมไม่แสดงแท็บอื่นของเทอร์มินัล - ไม่ใช่ทุกคนที่ใช้ vim ในโปรแกรมจำลองเทอร์มินัลเหนือ GUI ... จาก - Ctrlไม่ว่าคำตอบของคุณจะถือว่า gnome-terminal หรือโปรแกรมจำลองที่คล้ายกัน
törzsmókus

8

คุณสามารถใช้tmuxหรือscreen(ประการที่สองสามารถทำได้เฉพาะการแยกแนวนอนโดยไม่ต้องใช้แพทช์) เพื่อแยกเทอร์มินัลของคุณ แต่ฉันไม่รู้วิธีที่จะมี Vim หนึ่งอินสแตนซ์ในบานหน้าต่างทั้งสองบาน


4
หน้าจอสามารถแยกแนวตั้งได้หากคุณสร้างจากคอมไพล์
Randy Morris

8

หากคุณยังไม่พบคุณสามารถใช้ปลั๊กอินหน้าจอที่น่าทึ่งได้ได้

Conqueก็ยอดเยี่ยมเช่นกัน แต่ฉันพบว่าหน้าจอใช้งานได้จริงมากขึ้น (ตัวอย่างเช่นมันจะไม่ "ทิ้งขยะ" บัฟเฟอร์ของคุณและคุณสามารถส่งคำสั่งที่คุณต้องการจริงๆหลังจากแก้ไขในบัฟเฟอร์ของคุณ)


6

ฉันเดาว่านี่เป็นคำถามที่ค่อนข้างเก่า แต่ตอนนี้ในปี 2017 เรามี neovim ซึ่งเป็นกลุ่มแยกที่เพิ่มการรองรับเทอร์มินัล

ดังนั้นการเรียกใช้:termจะเปิดหน้าต่างเทอร์มินัล ความสวยงามของโซลูชันนี้เมื่อเทียบกับการใช้ tmux (เทอร์มินัลมัลติเพล็กเซอร์) คือคุณจะมีการผูกหน้าต่างเดียวกันกับการvimตั้งค่าของคุณ neovim เข้ากันได้กับ vim ดังนั้นโดยทั่วไปคุณสามารถคัดลอกและวางของคุณ.vimrcและมันก็จะทำงาน

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

ฉันจะอัปเดตคำตอบนี้เนื่องจาก vim กำลังวางแผนที่จะปล่อยการสนับสนุนเทอร์มินัลซึ่งอาจเป็น vim 8.1 ติดตามความคืบหน้าได้ที่นี่: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

เมื่อเปิดตัวแล้วฉันเชื่อว่านี่เป็นการตั้งค่าที่ดีกว่าการใช้ tmux


6
มันเปิดตัวใน Vim 8.0 ฉันคิดว่า
LangeHaare


1

ไม่ใช่สิ่งที่คุณต้องการอย่างแน่นอน แต่คุณอาจสนใจโดยปลั๊กอินvim-notebookของฉันซึ่งช่วยให้ผู้ใช้สามารถรักษากระบวนการพื้นหลังให้มีชีวิตอยู่และทำให้ประเมินเป็นส่วนหนึ่งของเอกสารปัจจุบัน (และเขียนผลลัพธ์ในเอกสาร) มีวัตถุประสงค์เพื่อใช้กับเอกสารแบบโน้ตบุ๊กที่มีโค้ดที่จะประเมิน


0

คุณอาจต้องการเปิดโปรแกรม "หน้าจอ" แยกหน้าจอเปิดเชลล์ในรายการหนึ่งและรวมกันเป็นกลุ่มอื่น ใช้ได้ผลสำหรับฉัน


ยกเลิก -1 เนื่องจากไม่มีคำอธิบาย นอกจากนี้ฉันได้ทดสอบโซลูชันปลั๊กอินหน้าจอเป็นกลุ่มและไม่แตกต่างจากโซลูชันของ mrcybul @mrcybul: รถถังที่พยายามช่วย เพื่อหลีกเลี่ยงการถูกลดคะแนนโปรดอ่านคำตอบอื่น ๆ อย่างละเอียดและเพิ่มคำตอบของคุณเองเฉพาะเมื่อคุณคิดว่าคำตอบนี้นำมาซึ่งสิ่งใหม่ ๆ รวมถึงสาเหตุที่โซลูชันของคุณอาจดีกว่าในบางกรณี
Titou

0

ฉันกำลังใช้ tmux

การติดตั้ง: sudo apt-get install tmux เรียกใช้: tmux

Ctrl + b ตามด้วย Ctr +%: จะแบ่งหน้าต่างเทอร์มินัลของคุณออกเป็นสองส่วนแนวตั้ง

Ctrl + "ลูกศรซ้าย | ลูกศรขวา": ย้ายไปมาระหว่างขั้ว

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