วิธีรัน 'emacs' ใน terminal emulator โดยไม่มีหน้าต่างแยกต่างหาก


16

ฉันกำลังมองหาที่จะเปลี่ยนไปใช้ Emacs จาก Vim และสิ่งหนึ่งที่ทำให้ฉันไม่อยู่คือ Emacs เปิดหน้าต่างแยกต่างหากของตัวเองเมื่อทำงานภายใต้ X ฉันจะได้รับพฤติกรรมเดียวกันกับ Emacs เหมือนที่ไม่ได้ทำงานภายใต้ X หรือไม่ นั่นคือฉันต้องการให้ Emacs เริ่มเซสชันในเทอร์มินัลเดียวกับที่เปิดใช้

แจ้งให้เราทราบหากคำถามไม่ชัดเจน ขอขอบคุณล่วงหน้า!

คำตอบ:


34

ฉันไม่ใช่ผู้เชี่ยวชาญ emacs แต่นี่เป็นเคล็ดลับสำหรับฉัน:

emacs -nw

7
คุณพูดถูกสำหรับคนอยากรู้อยากเห็น -nw ย่อมาจาก - no-window-system ซึ่งบอกว่า emacs จะไม่ใช้ส่วนต่อประสาน X

@Mic: ขอขอบคุณสำหรับคำอธิบายวิธีนี้ฉันจะจำสิ่งที่มันยืนสำหรับ
อัลแบร์โต Zaccagni

16

คุณอาจต้องการเริ่ม emacs เป็นemacs --daemonแล้วใช้emacsclient -tเพื่อแก้ไขไฟล์ สิ่งนี้ทำให้ Emacs โหลดอยู่ในพื้นหลังเพื่อให้คุณสามารถใช้ Emacs ได้มากขึ้นเช่น vi เซสชันการแก้ไขจะเริ่มขึ้นทันทีและ "การเลิก" ผ่าน Cx Cc จะเป็นการปิดการเชื่อมต่อปัจจุบัน มันเป็นสิ่งที่ดีมาก


5

แม้ว่าคำถามของคุณจะได้รับคำตอบ แต่ฉันอยากจะบอกว่านี่ไม่ใช่วิธีที่ผู้ใช้ทั่วไปจะใช้ emacs โดยทั่วไปแล้ว emacs จะมีเวลาเริ่มต้นที่นานกว่าและมีแนวโน้มที่จะทำงานตลอดเวลาด้วยบัฟเฟอร์แบบเปิดหลายแบบ ดังนั้นเมื่อคุณต้องการทำบางสิ่งกับ emacs ใน terminal คุณจะเรียกใช้emacsclient -nw(สมมติว่า emacs server เริ่มต้นแล้ว) ดูวิธีเริ่มใช้ EmacsClientเพื่อดูรายละเอียด


2

หากคุณใช้ bash คุณสามารถเพิ่มสิ่งต่อไปนี้ใน. bashrc ของคุณได้ตลอดเวลา

alias emacs = "emacs -nw"

นั่นช่วยฉันได้มากในการพิมพ์ (และคำสาปเมื่อฉันลืมพิมพ์สวิตช์)


1

เมื่อรวมคำตอบข้างต้นโดย Dick Kenny และ Alberto Zaccagni คุณจะได้รับการกำหนดค่าต่อไปนี้ซึ่งฉันใช้ใน.bashrc:

alias emacs='emacsclient -nw -c -a ""'

สิ่งนี้จะพยายามเชื่อมต่อกับดีมอน emacs ที่เหลืออยู่ หากไม่มีใครทำงานมันจะเริ่มต้นใหม่จากนั้นเชื่อมต่อโดยใช้หน้าต่างเทอร์มินัลปัจจุบัน

จากเอกสาร:

-a EDITOR, --alternate-editor=EDITOR
        Editor to fallback to if the server is not running
        If EDITOR is the empty string, start Emacs in daemon
        mode and try connecting again

-nw, -t, --tty      Open a new Emacs frame on the current terminal

-c, --create-frame  Create a new frame instead of trying to 
                    use the current Emacs frame

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