ความแตกต่างระหว่าง Emacs และ Vim


686

โดยไม่ได้รับการโต้เถียงทางศาสนาเกี่ยวกับสาเหตุหนึ่งดีกว่าอื่น ๆ อะไรคือความแตกต่างระหว่าง Emacs และ Vim ในทางปฏิบัติ ฉันกำลังมองหาการเรียนรู้อย่างใดอย่างหนึ่ง แต่ฉันตระหนักถึงเส้นโค้งการเรียนรู้สำหรับแต่ละสูงและฉันไม่สามารถตัดสินใจ ฉันไม่เคยใช้เครื่องมือแก้ไขประเภทนี้ (ฉันใช้ IDE ทุกครั้ง) ดังนั้นสิ่งที่ช่วยให้มือใหม่เป็นข้อดี


ก่อนสงครามไฟเริ่ม: ฉันไม่ได้ถามว่าอะไรดีกว่าฉันถามความแตกต่างระหว่างทั้งสอง ฉันต้องการเปรียบเทียบวัตถุประสงค์


3
หากคุณใช้ Mac (OSX) คุณจะพบว่าคำสั่งการย้ายเคอร์เซอร์ emacs พื้นฐานจำนวนมากทำงานได้ทุกที่ (ตัวอย่างเช่นพวกเขาทำงานที่นี่ที่ฉันพิมพ์ความคิดเห็นนี้ลงในหน้าเว็บ) ดังนั้นสำหรับผู้ใช้ Mac มีประโยชน์ทั้งระบบในการเรียนรู้อย่างน้อย emacs ชุดย่อยต่อไปนี้: ^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt

2
@ JamesAnderson: จากประสบการณ์ของฉันมันตรงกันข้าม ใช้เสียงเรียกเข้านาน 2.5 ปีแล้วเปลี่ยนเป็น emacs คน emacs ส่วนใหญ่ไม่สนใจ ... "อะไรก็ได้ที่เหมาะกับคุณ" นี่คือสิ่งที่,salespitchกล่าวว่าใน #emacs<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
Silex

2
Emacs เป็นระบบปฏิบัติการที่ยอดเยี่ยม แต่ขาดเพียงโปรแกรมแก้ไขที่ดี
technical_difficulty

1
@ JimmyM.G.Lim ไม่มันใช้เพจเจอร์ปัจจุบันบนระบบ หากคุณเรียกใช้PAGER=cat manแล้วคนจะแสดงข้อความโดยตรงไปที่หน้าจอ
SS Anne

1
เดาว่าตำรวจ "อิงตามความคิดเห็นเป็นหลัก" ไม่มีอยู่ตอนนี้ถูกถามเป็นครั้งแรก ;-) อ่าครั้งง่ายกว่า ... สิ่งหนึ่งที่ฉันจะบอกก็คือครั้งหนึ่งอ่านหนังสือเกี่ยวกับ emacs แล้วลองคิดดู เป็นระเบิด 3 สัปดาห์ของวันหยุดหลังจากนั้นฉันพบว่าฉันลืมการกดแป้นทั้งหมด เป็นกลุ่มบนมืออื่น ๆ ไม่ได้จริงๆสิ่งที่ฉัน i, esc, wqแต่ฉันสามารถเชื่อถือกึ่งฟังก์ชั่นกับมันเมื่อมีความจำเป็นโดยใช้เพียง
JL Peyret

คำตอบ:


491

(ข้อความด้านล่างเป็นความเห็นของฉันมันไม่ควรนำมาเป็นข้อเท็จจริงหรือดูถูก)

ด้วย Emacs คุณคาดว่าจะเปิดให้บริการตลอด 24 ชั่วโมงทุกวันและอยู่ในโปรแกรมเกือบทุกอย่างที่คุณสามารถทำได้จากที่นั่น คุณเขียนส่วนขยายของคุณเองใช้สำหรับจดบันทึก, การจัดระเบียบ, เกม, การเขียนโปรแกรม, การเข้าถึงเปลือก, การเข้าถึงไฟล์, การฟังเพลง, การท่องเว็บ ใช้เวลาเป็นสัปดาห์และสัปดาห์จนกว่าคุณจะมีความสุขกับมันและจากนั้นคุณจะได้เรียนรู้สิ่งใหม่ตลอดเวลา คุณจะรำคาญเมื่อคุณไม่สามารถเข้าถึงได้และเปลี่ยนการตั้งค่าของคุณอย่างต่อเนื่อง คุณจะไม่สามารถใช้ emacs รุ่นอื่นได้อย่างง่ายดายและไม่เพียงติดตั้ง มันใช้เสียงกระเพื่อมซึ่งเยี่ยมมาก คุณสามารถทำให้มันกลายเป็นอะไรก็ได้ที่คุณต้องการ (อะไรก็ได้)

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

แม้ว่าฉันจะใช้ Emacs ทุกวันทุกวัน (และรักมัน) เว้นแต่ว่าคุณตั้งใจจะใช้เวลาส่วนใหญ่ในโปรแกรมที่คุณเลือกฉันจะเลือกเป็นกลุ่ม


154
Wrt ไม่มีให้ใช้งาน: ฉันขอแนะนำให้คุณวาง. emacs และ. emacs.d ไว้ใน repo control source และการติดตั้ง Emacs ที่สมบูรณ์แบบของคุณนั้นเป็นเรื่องของการชำระเงิน
Duncan Bayne

7
ทั้ง emacs และ vim สามารถทนทุกข์ทรมานจากสิ่งที่อธิบายไว้ข้างต้น: ทั้งสองสามารถกำหนดค่าไปยังจุดที่พวกเขาจำไม่ได้เมื่อเทียบกับรูปแบบวานิลลาของพวกเขา นอกจากนี้ฉันสองใช้ vcs
Alexej Magura

11
คุณทำงานกับระบบอะไร @Radu ฉันไม่เคยเห็นระบบในชีวิตจริงในปี 2010 ที่มีจริงviแทนที่จะเป็นvimนามแฝงที่
ELLIOTTCABLE

9
บางทีกลุ่ม Vim นั้นเรียนรู้ได้ง่ายกว่า Emacs แต่มันก็ทำให้เกิดความสับสนในครั้งแรกที่คุณเริ่มเล่นถ้าคุณไม่มีประสบการณ์มาก่อนเลย! ฉันต้องใช้ google เพื่อให้สามารถปิดและยังต้องลองหลายครั้งเพื่อให้ถูกต้อง
HelloGoodbye

9
อย่าดูถูกความประมาท "ที่ติดตั้งไว้ล่วงหน้า" ของ VIM: เกือบทุกครั้งที่คุณไปและสามารถใช้งานได้ด้วยการปรับแต่งเล็กน้อย / ไม่มีเลย ฉันใช้มันตลอดเวลาเมื่อsshไอเอ็นจีกับเครื่องอื่น ๆ นี่คือเหตุผลที่ฉันเรียนรู้ก่อน - และเพราะเพื่อนของฉันรู้จัก VIM และสามารถช่วยเหลือฉันได้ (อย่าประมาทสนับสนุนเพื่อนด้วย!)
jvriesem

137

Vim ไม่ใช่เชลล์ และมันไม่สามารถสื่อสารได้ดีกับกระบวนการย่อย นี่คือเกือบโดยการออกแบบในขณะที่ Emacs องค์ประกอบเหล่านี้รวมอยู่ในการออกแบบ ซึ่งหมายความว่าบางสิ่งบางอย่างเช่นการฝังตัวดีบักเกอร์หรือล่าม (ให้ผลเป็น IDE) เป็นเรื่องยากใน Vim

นอกจากนี้ทางลัดของ Emacs นั้นส่วนใหญ่จะเข้าถึงได้ผ่านตัวดัดแปลงและเห็นได้ชัดว่าส่วนต่อประสาน Vim นั้นเป็นโมดัลที่มีชื่อเสียงทำให้สามารถเข้าถึงปุ่มตรงสำหรับการจัดการได้อย่างไร้สาระ

Emacs เคยเป็นตัวแก้ไขเพียงตัวเดียวของทั้งสองที่สามารถตั้งโปรแกรมได้และในขณะที่ Vim มีระดับความสามารถในการเขียนโปรแกรมที่แปลกไปหลายอย่างด้วยการเพิ่ม Python และ Ruby bindings (และอื่น ๆ ฉันลืม) Vim สามารถตั้งโปรแกรมได้ คุณจะสนใจ

ฉันใช้ Vim และฉันก็ค่อนข้างมีความสุขกับมัน


6
การอัพเดทเล็กน้อย: Vim รองรับการสื่อสารที่ดียิ่งขึ้นกับกระบวนการย่อยตั้งแต่เวอร์ชัน 8.0 และ 8.1 ถึงแม้ว่าจะแนะนำเทอร์มินัลบัฟเฟอร์ดังนั้นจึงเข้าใกล้ emacs มากขึ้นเล็กน้อย
DarkWiiPlayer

110

กลุ่ม:

  • ดีกว่าเป็นเครื่องมือแก้ไขอย่างง่าย (ต้องใช้แป้นน้อยลงสำหรับงานง่ายๆ)
  • ชุมชนการเขียนสคริปต์ที่ใช้งานมากขึ้น - ภาษาภายใน: vimscript
  • ที่เก็บส่วนกลางหนึ่งของสคริปต์, ปลั๊กอิน, โครงร่างสี, ...
  • ขยายได้ในหลามทับทิม
  • สามารถทำแบบพกพา (emacs มีปัญหาบางอย่างกับที่)

Emacs:

  • ไม่ใช่ modal โดยค่าเริ่มต้น (บรรณาธิการของวันนี้ส่วนใหญ่มีวิธีนี้) แม้ว่าจะมีโหมดชั่วร้ายซึ่งเลียนแบบพฤติกรรมที่เป็นกลุ่ม
  • ภาษาที่ทรงพลังยิ่งกว่าสำหรับการขยาย (elisp เป็นภาษาที่ถูกเป่าเต็มและใน emacs คุณสามารถกำหนดนิยามใหม่ได้ทุกอย่างในขณะที่ในกลุ่มคุณไม่สามารถกำหนด build ในฟังก์ชันของตัวแก้ไขได้ในข้อเสีย vimscript นั้นค่อนข้างคล้ายกับภาษา ไม่เหมือนอะไรมาก)
  • ยืดเพิ่มเติมได้
  • การสนับสนุนที่ยอดเยี่ยมสำหรับเครื่องมือ GNU (กลุ่มของพวกเขา)

โดยส่วนตัวแล้วฉันชอบเสียงเรียกเข้า - มันเล็กทำในสิ่งที่ควรทำและเมื่อฉันต้องการ IDE แบบเต็มรูปแบบฉันเปิด VS วิธีการของ Emacs ในการเป็นบรรณาธิการซึ่งต้องการเป็น IDE (หรือฉันควรจะพูดว่า OS) แต่ก็ไม่เป็นเช่นนั้น IMHO ล้าสมัยไปแล้ว ในสมัยก่อนมีไคลเอนต์อีเมลไคลเอนต์ ftp, tetris, ... สิ่งที่อยู่ในแพ็คเกจเดียว (emacs) มีเหตุผลบางอย่าง ... ทุกวันนี้มันไม่มีอีกแล้ว

ทั้งสองเป็นหัวข้อของการสนทนาทางศาสนาในหมู่ผู้ใช้โปรแกรมเมอร์และผู้ใช้ชุมชน superuser และในแง่ที่ทั้งสองเป็นเลิศสำหรับการเริ่มต้นสงครามเปลวไฟถ้าใส่ในการติดต่อ (ในประโยค / คำถามเดียวกัน)


47
"ดีกว่าในฐานะบรรณาธิการ" ค่อนข้างคลุมเครือ ฉันสนใจที่จะเห็นเหตุผลว่าทำไม
อัลเลน

41
@Allen - คลุมเครือในนั้นคืออะไร? ฉันไม่ค่อยพบผู้ใช้ทั้งกลุ่มและ emac ที่มีปัญหากับคำสั่งนั้น แม้แต่ผู้ใช้ emacs ที่ไม่ยอมใครง่ายๆก็มักจะยอมรับว่าเป็นเรื่องจริง คุณเคยใช้ทั้งสองบรรณาธิการหรือไม่? ฉันเชื่อว่ามันค่อนข้างชัดเจนว่ากลุ่มมีความได้เปรียบในด้านของคุณสมบัติการแก้ไขข้อความ
โกง

36
ฉันเหลือเชื่อที่ทุกคนจะยอมรับว่าเป็นความจริง ในฐานะที่เป็นผู้ใช้ emacs และธรรมดา VI มาเป็นเวลานานฉันได้ใช้ vim สองสามครั้ง - แต่ "ดีกว่าในฐานะบรรณาธิการ" ต้องไปที่ emacs ในใจของฉันหากไม่มีเหตุผลอื่นนอกเหนือจากโหมดหลักและโหมดรองที่กว้างกว่า เพื่อช่วยคุณพิมพ์
Kendall Helmstetter Gelner

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

7
แต่ที่กันได้อย่างมีประสิทธิภาพเป็นกลุ่มมีความเหมาะสมดีกว่าสำหรับการแก้ไข: หมายเลขบรรทัดโหมดภาพจัดการwint1.kaist.ac.kr/files/attach/images/59/450/... FCOL ฉันมีปัญหาในการรับ emacs เพียงเพื่อเลื่อนครั้งละหนึ่งบรรทัด
โกง

52

หากคุณกำลังมองหาการวิเคราะห์วัตถุประสงค์ของบรรณาธิการทั้งสองให้ดูที่ต้นกำเนิดและปรัชญาเบื้องหลังการออกแบบของพวกเขา คิดว่าอันไหนจะเหมาะกับคุณมากขึ้นและเรียนรู้ (และเรียนรู้และเรียนรู้เพราะต้องใช้เวลาก่อนที่คุณจะค้นพบยูทิลิตี้ที่แท้จริงของมันเทียบกับ IDE ใด ๆ ) เบื้องต้นเกี่ยวกับการแสดงการแก้ไขกับ Viถูกเขียนขึ้นโดยบิลจอยและมาร์คฮอร์ตันและเขาอธิบายว่าทำไมเขาเลือกออกแบบกิริยาและเหตุผลสำหรับจังหวะสำคัญต่างๆ (มันช่วยให้ผมจำได้ว่า CTRL-W + W (จะเปลี่ยนไปถัดW indow และมัน จะเหมือนกันสำหรับ CTRL W + CTRL W ในกรณีที่คุณถือแป้น CTRL เป็นเวลานาน

นี่คือลิงค์ไปยังไทม์ไลน์ของ Emacsและมีการอ้างอิงถึงกระดาษ Multics Emacs นี่คือกระดาษ RMS ในEmacsที่ฉันเห็นความตึงเครียดอยู่ในโปรแกรมแก้ไขข้อความที่ตั้งโปรแกรมได้ (ย้อนกลับไปในปี 1981 และก่อนหน้านี้)

ฉันยังไม่ได้อ่านเอกสาร emacs แต่ได้อ่านหนังสือพิมพ์ Vi ของ Bill Joy สองครั้ง ทั้งสองเป็นรุ่นเก่า แต่คุณยังคงได้รับปรัชญาและคุณอาจเลือกที่จะใช้เครื่องมือปัจจุบัน (กลุ่ม 7.x หรือ emacs 25?)

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


43
  1. เสียงเรียกเข้านั้นเร็วกว่าการเริ่มต้นมากกว่า Emac ฉันกำลังบอกว่าในเครื่องทุกเครื่องการติดตั้งแบบ Vim แบบธรรมดาจะเริ่มต้นได้เร็วกว่าการติดตั้งแบบ Emacs แบบนอกกรอบ และฉันมักจะคิดว่าหลังจากปรับแต่งในระดับปานกลางอย่างใดอย่างหนึ่งเป็นกลุ่มจะยังคงเริ่มต้นได้เร็วกว่า Emacs

  2. หลังจากนั้นความแตกต่างในทางปฏิบัติอื่น ๆ คือโหมดของ Emacs พวกเขาทำให้ชีวิตของคุณง่ายขึ้นอย่างมากเมื่อแก้ไข XML, C / C ++ / Java / อะไรก็ตาม LaTeX และภาษายอดนิยมที่คุณนึกออก พวกเขาทำให้คุณต้องการให้ตัวแก้ไขเปิดสำหรับเซสชันที่ยาวนานและทำงาน

โดยรวมแล้วฉันจะบอกว่า Vim ดึงคุณไปหางานแก้ไขที่รวดเร็วและรวดเร็ว ในขณะที่ Emacs สนับสนุนให้คุณดำน้ำเป็นเวลานาน


1
ฉันไม่คิดว่าโหมดทำให้ชีวิตง่ายขึ้นในทางตรงกันข้าม และแลร์รีเทสเลอร์คิดเดียวกัน
Eliran Malka

2
โหมดของ Emacs ช่วยการเข้ารหัสได้อย่างไร (ฉันใหม่สำหรับมัน ... )
jvriesem

4
นานมาแล้วฉันเปลี่ยนจาก vi เป็น emacs ด้วยเหตุผลสี่ประการ: (a) คลิกเดียวเพื่อไปที่ข้อผิดพลาดคอมไพเลอร์ต่อไป (b) การรวม gdb, (c) grep และ find-grep เป็นไปได้ไหมที่จะทำสิ่งเหล่านี้เป็นกลุ่ม?
zzz777

"Vim นั้นเร็วกว่าการเริ่มต้นมากกว่า Emacs" - หากคุณให้เซิร์ฟเวอร์ emacs ทำงานอยู่ emacs-tarting ลูกค้าจะเร็วมาก ฉันมีสคริปต์สำหรับสิ่งนั้นที่ฉันทำซ้ำ (โดยใช้ git) ในทุกเครื่องของฉัน (ฉัน * ทำ * ยังใช้เป็นกลุ่มจริง ๆ แล้วมันขึ้นอยู่กับว่าฉันอยู่ที่ไหนและทำอะไรอยู่เสมอ)
Jay

"เสียงเรียกใช้เร็วกว่าการเริ่มต้นมากกว่า Emacs" - use-packageและด้วย:deferตัวเลือกของมันEmacs ของฉันจะเปิดขึ้นเกือบจะในทันที ฉันยอมแพ้โดยใช้ emacsclient
Jay

37

VI พร้อมใช้งานเสมอและจะทำงานในโหมดผู้ใช้คนเดียวที่พิการมากที่สุด, กราฟิกที่เสียหาย, ไม่มี keymap, เครื่องลิงค์ช้า - ดังนั้นจึงคุ้มค่าที่จะรู้วิธีการแก้ไขไฟล์อย่างง่าย ๆ สำหรับงานดูแลระบบ

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

การเรียนรู้ความสามารถของ Emacs นั้นคุ้มค่าหรือไม่เมื่อเทียบกับการใช้ตัวแก้ไข GUI / IDE และการใช้งานเช่น python / awk / etc สำหรับงานพิเศษนั้นขึ้นอยู่กับคุณ


2
ฉันรู้ว่า VI ด้วยเหตุผลเหล่านั้น - แต่วันนี้ฉันจะบอกว่ามันไม่น่าเป็นไปได้ที่คุณจะพบระบบ UNIX โดยไม่ต้องมีการติดตั้ง EMACS ขั้นพื้นฐานอย่างน้อยและมันสามารถทำให้สภาพแวดล้อมของเชลล์ไม่ดีขึ้น
Kendall Helmstetter Gelner

3
หรือติดตั้ง busybox ลงใน initrd และดีบั๊กไดรเวอร์อุปกรณ์เก็บข้อมูลที่ใช้งานไม่ได้ดังนั้นในขั้นตอนเริ่มต้นของกระบวนการ init ที่คุณมีทั้งหมดคือดิสก์ RAM เริ่มต้นและคุณยังมีเอดิเตอร์ - vi
smcameron

2
หลังจากผ่านไปครู่หนึ่งกับนิ้วมือของคุณก็รู้ถึงการเคลื่อนไหว - แต่คุณจำไม่ได้ว่าปุ่มอะไรเป็นของจริง
Martin Beckett

10
ฉันคิดว่ามันเป็นed"พร้อมใช้งานตลอดเวลาและจะทำงานบนโหมดผู้ใช้คนเดียวที่พิการมากที่สุด, กราฟิกที่เสียหาย, ไม่มี keymap, เครื่องลิงค์ช้า" เดี๋ยวก่อนปีนี้คืออะไร? (ถอนหายใจ - edฉันจะไม่มีวันลืมคุณ)
belacqua

2
@ เคนดัลล์: อูบุนตู Linux ปัจจุบันไม่ได้ติดตั้ง emacs
intuited

25

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


2
นี่เป็นประสบการณ์ของฉันเช่นกัน ... Emacs หรือ uEmacs ไม่เคยมีให้บริการ บรรณาธิการคนแรกของฉันคือ uEmacs (บน Amiga) แต่เนื่องจากฉันเรียนรู้เป็นกลุ่มมันสะดวกเกินไปที่จะมีอยู่รอบตัว
Marius

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

14

ดูเหมือนว่าจะมีคำตอบที่เลือกไว้แล้ว แต่ความแตกต่างที่สำคัญสำหรับฉันคือคำกริยาและไม่ใช่คำกริยา Vim เป็น modal ซึ่งหมายความว่าจะทำการปรับให้เหมาะสมตามโหมดการใช้งานเฉพาะ อย่างน้อยนั่นคือวิธีที่ฉันดูอยู่เสมอ สิ่งนี้ทำให้การใช้ Vim เป็นประสบการณ์ที่แตกต่างเพราะแทนที่จะมีพื้นที่ทำงานที่คุณพิมพ์รหัสคุณจะบอกให้สภาพแวดล้อมทำงานกับข้อความ นี่คือเหตุผลที่ผู้คนพูดสิ่งต่าง ๆ เช่น Vim คุณกำลังเรียนภาษาจริงๆ กระบวนการ: wq และ: s / foo / bar เป็นส่วนหนึ่งของเชลล์เช่นสภาพแวดล้อมที่แก้ไขและอ่านข้อความ

ในทางกลับกัน Emacs นั้นใกล้เคียงกับ Editors / word processor / etc เกือบทั้งหมด คุณเห็นวันนี้ คุณมีพื้นที่ทำงานที่มีอินเตอร์เฟซที่ตั้งโปรแกรมได้สูง นั่นคือเหตุผลที่คุณเห็นสิ่งต่าง ๆ เช่นอีเมล, irc, shells เป็นต้นในฐานะโปรแกรมเมอร์มันง่ายที่จะคิดในแง่ของการพูดว่า "รับหมายเลขบรรทัดที่ฉันใช้และทำอะไรกับข้อมูล" ความปรารถนาที่จะออกจากโปรแกรมแก้ไขจะน้อยลงเพราะแทนที่จะต้องออกจากเปิดแอพ / ภาษาอื่น ๆ และทำสิ่งต่าง ๆ ในข้อความคุณมี Emacs ที่คุณสามารถทำสิ่งเหล่านี้ภายในขอบเขตของโปรแกรมแก้ไขของคุณ

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


13

ฉันเริ่มต้นด้วย vi, ไปที่ emacs, จากนั้นไปเป็นกลุ่ม ฉันคิดว่าจะลอง Emacs ดูว่ามีอะไรเปลี่ยนแปลงในช่วงห้าปีที่ผ่านมา (เมื่อพูดถึง IDE ของฉันได้รับในคราสอยู่พักหนึ่ง แต่ฉันชอบหน้าต่างเทอร์มินัลของฉันที่เชื่อมต่อแม็คกับกล่องลินุกซ์ (สามี))

สิ่งที่ตัดและแปะทำให้ฉันรำคาญเมื่อเร็ว ๆ นี้ การตัดและวางใน Vim ใช้ขั้นตอนมากกว่า Emacs, IIRC และการวางจากเบราว์เซอร์ไปยังหน้าต่างเทอร์มินัลนั้นน่ารำคาญเว้นแต่คุณจะทำสิ่งที่ฉันไม่อยากทำดังนั้นฉันจึงทนกับการเยื้องที่แปลก ฉันคิดว่าการแก้ไขหลายไฟล์ใน emacs นั้นง่ายกว่า อย่างน้อยก็กระโดดจากไฟล์หนึ่งไปอีกไฟล์หนึ่งถ้าคุณมีทั้งสองไฟล์บนหน้าจอ

ฉันไม่ได้เล่นกับคุณสมบัติแฟนซีของทั้ง vi หรือ emacs เพราะฉันแค่อยากจะทำธุรกิจเกี่ยวกับการเข้ารหัส สิ่งที่ฉันต้องการคือสีสวยและแท็บที่เหมาะสมในการแปลงพื้นที่ (สำคัญอย่างยิ่งกับงูหลาม)

ฉันคิดว่ามันทั้งหมดขึ้นอยู่กับว่าคุณต้องการใช้:wqหรือCtrl-x Ctrl-s(IIRC) เพื่อบันทึกไฟล์ถ้าคุณไม่สนใจเรื่องแฟนซี

@mgb ถูกต้อง ฉันอยู่ในลินุกซ์ขั้นต่ำเปลือยเพื่อแก้ไขบางอย่างเพียงหนึ่งหรือสองเดือนที่ผ่านมาในเดเบียน distro vi เป็นเครื่องมือแก้ไขเดียวที่มีให้


1
สิ่งนี้ยังไม่เสร็จสิ้น แต่ทำได้ง่ายกว่าการปรับการตั้งค่าทั้งหมดที่ทำให้หน้าจอเทอร์มินัลเสียหาย ใช้:set pasteจากนั้นวางข้อความของคุณและเมื่อเสร็จแล้ว:set nopasteจะกลับสู่โหมดปกติ นอกจากนี้ยังมี:set pastetoggle=<F2>คำสั่งที่จะสลับนี้โดยใช้คีย์ผสมที่คุณเลือก
hbar

ในโหมดการเยื้องคุณสามารถทำ^R^P+เพื่อวางจากคลิปบอร์ดและเก็บการเยื้องปัจจุบัน ^R^O+จะลดการเยื้อง ^R+จะแทรกราวกับว่าคุณพิมพ์ :help i_^R^Pสำหรับข้อมูลเพิ่มเติม
intuited

3
ฉันไม่สามารถจินตนาการได้ว่าการตัด / วางทำได้ง่ายกว่าyypนี้ นอกจากนี้ดูที่นี่เพื่อตัดและวางไปยังและจาก windows ที่แตกต่างกันstackoverflow.com/a/8757876/654789
puk

@puk - Ctrl-k (yank) / Ctr-y (ใส่) นั้นง่ายใน emacs ใน Emacs คุณยังมีการลงทะเบียนหลายครั้ง (az) คุณสามารถบันทึกข้อความหรือตำแหน่งปัจจุบันลงใน ...
Kendall Helmstetter Gelner

3
vim มีการลงทะเบียนหลายครั้งเช่นกัน
TamaMcGlinn

12

มีความแตกต่างอย่างมากในระดับต่อวันคือVim (หรือตัวแปร vi) ใด ๆ ที่เป็นกิริยาช่วยโดยเนื้อแท้ (คุณเข้าสู่โหมดคำสั่งที่คุณไม่สามารถแก้ไขได้) และ Emacs (รวมถึงเครื่องมือแก้ไขอื่น ๆ )

แน่นอนว่าการใช้เมนูและเช่นนั้นคุณไม่จำเป็นต้องเข้าสู่โหมดคำสั่งใน Vim - ตอนแรก แต่หากต้องการใช้พลังของ Vim เพียงเล็กน้อยคุณก็จะทำได้ นั่นคือหัวใจของการอภิปราย Vim / Emacs

โดยส่วนตัวแล้วฉันคิดว่า Emacs นั้นสามารถขยายได้มากขึ้น คุณสามารถค้นหาแพ็คเกจ Elisp ได้หลายอย่าง

อย่างไรก็ตามฉันอยากรู้ว่าทำไมคุณคิดที่จะเรียนรู้สิ่งเหล่านี้ผ่าน IDE แบบดั้งเดิมมากกว่า คุณต้องการเรียนรู้สิ่งเหล่านี้เพื่ออะไร


8
ฉันแค่ต้องการเรียนรู้มันเพื่อดูว่ามันยืนขึ้นกับโฆษณาของมันเพื่อความซื่อสัตย์ ฉันเห็นว่าทั้งคู่มีความยืดหยุ่นและฉันเห็นผู้เชี่ยวชาญทำสิ่งที่ค่อนข้างบ้าคลั่งในพวกเขาและฉันต้องการดูว่ามันคุ้มค่ากับช่วงการเรียนรู้หรือไม่ นอกจากนี้ IDE ของฉันไม่รองรับเสียงกระเพื่อม :)
Sasha Chedygov

3
อืมมม ปัญหาคือมี Emacs มาก ... แต่สิ่งที่ฉันยังคงใช้ IDE สำหรับการใช้ emacs นั้นเป็นชุดที่ซับซ้อนของงานซ้ำ ๆ ซึ่งฉันทำโดยอัตโนมัติโดยใช้การบันทึกแมโคร ตัวอย่างเช่นคุณสามารถใช้คำหรือนิพจน์ปัจจุบันคัดลอกสิ่งนั้นลงใน "บัฟเฟอร์" (คิดว่าตัด / วางเพียงคุณเท่านั้นที่สามารถมีมากกว่าหนึ่ง) จากนั้นไปที่ไฟล์อื่นพิมพ์ข้อความบางส่วนโดยใช้ค่าที่คัดลอกแล้วก่อนหน้านี้ ค่าที่คัดลอกเช่นกันเลื่อนเคอร์เซอร์บันทึกตำแหน่งและกลับไปที่บัฟเฟอร์แรกอีกครั้ง ... จากนั้นทำซ้ำกระบวนการสำหรับบรรทัดถัดไปของไฟล์ต้นฉบับ
Kendall Helmstetter Gelner

1
ฉันใช้มาโครอย่างหนักทั้งใน vi และ Emacs สิ่งที่คุณขาดหายไปคือความจริงที่ว่า Emacs มีวิธีการเข้าถึงที่หลากหลายในขณะที่ใช้งานมาโครและความจริงที่ว่าคุณสามารถใช้บัฟเฟอร์แบบตัดได้ทุกที่ - แม้จะอยู่ตรงกลางของคำค้นหา โปรดบอกฉันว่าคุณจะเขียนแมโครอย่างไรที่จะเลือกหนึ่งคำของนิพจน์โดยยึดตาม regex ใช้คำที่พบค้นหาเอกสารอื่นในคำนั้นแล้วทำการแทนที่โดยรอบ
Kendall Helmstetter Gelner

2
@ kendall-helmstetter-gelner - ที่เป็นไปได้ด้วย vimscript หรือภาษาที่กลุ่มมีการผูก (เช่น ruby ​​/ vim / tcl / perl) คุณสามารถเข้าถึงฟังก์ชั่นทั้งหมดของกลุ่มและกลุ่มเครื่องมือแก้ไขจากภาษาสคริปต์
segy

1
มันน่าประทับใจ แต่การทำแบบเดียวกันกับ Emacs นั้นต้องใช้เพียงการกดแป้นที่ฉันรู้แล้วว่าจะสร้างมาโครที่ซับซ้อนแทนที่จะต้องเขียนด้วยมือ เป็นเรื่องง่ายสำหรับทุกคนที่รู้จัก emacs ในการสร้างมาโครที่ทำงานนั้น แต่ฉันจะบอกว่ามีผู้ใช้ VI ไม่มากที่สามารถสร้างมาโครที่คุณวางโดยไม่มีการวิจัยจำนวนพอสมควร
Kendall Helmstetter Gelner

11

มีหลายสิ่งหลายอย่างที่ถูกกล่าวถึงเกี่ยวกับบรรณาธิการทั้งสอง แต่ฉันมี 5 เพนนีเท่านั้นที่จะเพิ่ม บรรณาธิการทั้งสองนั้นยอดเยี่ยมและคุณไม่สามารถไปผิดกับพวกเขาทั้งคู่

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

สำหรับฉันความแตกต่างที่สำคัญในตัวแก้ไขที่กลุ่มทำให้คุณใช้สภาพแวดล้อม / ระบบปฏิบัติการในขณะที่ emacs พยายามที่จะแค็ปซูลหรือแทนที่ ตัวอย่างเช่นคุณสามารถเพิ่มวันที่ในข้อความของคุณโดย: r! date เป็นกลุ่มหรือปฏิทินด้วย: r! cal 1 2014 หรือแม้กระทั่งแทนที่เนื้อหาของบัฟเฟอร์ของคุณด้วยเวอร์ชันฐานสิบหกของเนื้อหา เช่น. :%! xxd, แก้ไข hex แล้วกลับด้วย:%! xxd -r, และการใช้อื่น ๆ อีกมากมายเช่น builtin grep, sed, เป็นต้น

อีกตัวอย่างหนึ่งคือการใช้งานกับและjq gronเช่น. วาง json blob ไปยังเครื่องมือแก้ไขจากนั้นเรียกใช้เพื่อเปลี่ยนรูปแบบ:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

หรือ

:%!jq .path.to.stuff

คำสั่ง piped ด้านบนแต่ละคำสั่งสามารถเรียกใช้แยกกันผ่าน:%!<command>ซึ่ง%หมายความว่าเอกสารทั้งหมด แต่ยังสามารถเรียกใช้ในการเลือกบรรทัดที่เลือก ฯลฯ ที่นี่ gron outputสามารถใช้เป็นjqเส้นทาง

คุณยังได้รับฟังก์ชันการแก้ไขแบบแบทช์ EX เช่น การแทนที่คำบางคำการจัดรูปแบบโค้ดใหม่การแปลงตัวอักษร dos-> unix ขึ้นบรรทัดใหม่ให้เรียกใช้แมโครจากไฟล์ 100 ไฟล์ในเวลาเดียวกัน มันทำได้อย่างง่ายดายด้วยอดีต ฉันไม่แน่ใจว่า emacs มีบางอย่างที่คล้ายกันหรือไม่

กล่าวอีกนัยหนึ่ง IMHO เป็นไปใกล้กับปรัชญายูนิกซ์ โดยทั่วไปแล้วจะง่ายและเล็กลง แต่ถ้าคุณรู้จักระบบปฏิบัติการและเครื่องมือของคุณคุณคงไม่ต้องการมากกว่านั้น (VIM) ฉันไม่เคยทำ

นอกจาก vi เป็นมาตรฐาน defacto ในระบบ unix / linux ใด ๆ ทำไมเรียนรู้ที่จะใช้เครื่องมือ 2 อย่างที่ทำสิ่งเดียวกัน แน่นอนว่าระบบบางระบบมี mg หรือบางอย่างที่คล้ายกัน แต่ไม่ทั้งหมดนั้นแน่นอน Unix + Vi <3

แค่ 5 เพนนีของฉัน


8
"เสียงเรียกเข้าใกล้กับปรัชญายูนิกซ์" - คุณกำลังพูดถึงปรัชญาเกี่ยวกับเครื่องมือที่มีอยู่ในเชลล์ของคุณ อย่างไรก็ตามเชลล์เองนั้นเป็นการรวมตัวกันครั้งใหญ่ของ built-ins, ประวัติ, การทำให้โค้ง, การควบคุมกระบวนการ, ความสามารถในการโปรแกรมและอื่น ๆ Emacs อยู่ใกล้กับปรัชญาของยูนิกซ์เชลล์มากขึ้น:จัดเตรียมสภาพแวดล้อมที่สามารถปรับแต่งได้อย่างสูงภายในเครื่องมือที่สามารถใช้ร่วมกันและทำให้ผู้ใช้สามารถขยายชุดเครื่องมือด้วยชุดโค้ดของตนเองขณะที่ทำงาน ฉันคิดว่าเราเห็นได้ว่าทั้ง emacและvimนั้นหยั่งรากลึกในประเพณียูนิกซ์
แมตต์

1
ขอบคุณสำหรับความคิดเห็นของคุณ มันไม่ได้เป็นความตั้งใจของฉันที่จะเริ่มสงครามการแก้ไขที่นี่ไม่ได้เป็นการรุกรานผู้ใช้emacs ฉันเพิ่งพบว่าง่ายขึ้นและพกพาได้มากกว่าที่จะเรียกใช้คำสั่งจริงจาก shell (หรือจากภายในตัวแก้ไข) ซึ่งตรงข้ามกับการเขียนส่วนขยายที่ซับซ้อนเพื่อห่อหุ้มฟังก์ชันในemacsซึ่งมีแนวโน้มที่จะทำให้สภาพแวดล้อมป่องเมื่อเวลาผ่านไป อย่างไรก็ตามส่วนขยายเหล่านี้ขึ้นอยู่กับการตั้งค่าของผู้ใช้และสามารถทำได้ แต่ไม่ได้บังคับใช้โดยบรรณาธิการอย่างใดอย่างหนึ่ง เห็นด้วยกับคุณเกี่ยวกับสถานที่emacsและvi (m)ในประเพณี UNIX
Alex

1
เพียงเพื่อดำเนินการต่อที่ไม่ใช่สงครามฉันหวังว่ามันชัดเจนว่าฉันไม่เห็นด้วยกับการเปรียบเทียบของคุณ "เสียงเรียกเข้าเป็นเหมือนเครื่องมือยูนิกซ์" มันก็เกิดขึ้นกับฉันที่สัญชาตญาณนี้สามารถขยายด้วย "และ emacs เป็นเหมือนยูนิกซ์เชลล์" :-)
แมตต์

@ Matt: ฉันชอบการเปรียบเทียบ สาธุกับสิ่งนั้น ;)
Alex

2
คุณสามารถทำทุกอย่างที่คุณพูดถึงและอื่น ๆ อีกมากมายใน emacs (เช่นโหมด hexl ไปที่ด้านขวาเพื่อแก้ไขไฟล์ใน hex ด้วยการแสดงตัวอย่าง ascii ไปทางด้านข้าง) ฉันรู้ว่า VI ค่อนข้างดีเช่นกัน แต่การสร้างมาโครนั้นง่ายกว่าและยืดหยุ่นกว่าใน Emacs และมันก็สามารถทำได้มากกว่าการใช้ VIM ที่ทันสมัยที่สุด นั่นเป็นเหตุผลที่รู้เพราะ emacs อยู่ในสถานที่ส่วนใหญ่และสามารถเพิ่มข้อความแก้ไขได้จริง
Kendall Helmstetter Gelner

10

สำหรับฉันข้อดีของ emacs คือ

  • โหมดจรจัดช่วยให้คุณสามารถแก้ไขไฟล์ระยะไกลผ่าน ssh เช่นเดียวกับไฟล์ในเครื่อง
  • tramp-mode + dired = ไคลเอ็นต์ sftp เต็มรูปแบบ
  • รองรับทุกภาษาที่คุณต้องการ
  • สร้างขึ้นในเทอร์มินัลอีมูเลเตอร์ (โหมดคำศัพท์) ดังนั้นฉันจึงสามารถเข้ารหัสได้โดยไม่ต้องสลับระหว่างแอปพลิเคชัน
  • ความสามารถในการขยายสิ่งที่คุณไม่ชอบคุณสามารถเปลี่ยนได้โดยใช้เสียงกระเพื่อม

11
FWIW: เสียงเรียกเข้าค่อนข้างมากมี 3 ตัวแรก (แม้ว่าจะมีชื่อแตกต่างกัน "โหมดจรจัด" คือ "netrw" ในเสียงเรียกเข้า) # 4 โดยทั่วไปแล้วจะถือว่าเป็นข้อบกพร่องไม่ใช่คุณสมบัติของผู้ใช้ที่เป็นกลุ่ม # 5 เป็นจริงในกลุ่มถ้าคุณแทนที่ "elisp" (ภาษาเสียงกระเพื่อมที่เลวร้ายที่สุดที่เคยเพื่อนรัก Emacs ของฉันบอกฉัน) ด้วย python / mzscheme / perl / ruby ​​/ tcl / vimscript
Laurence Gonsalves

3
คุณสามารถแสดงความคิดเห็นว่าทำไมข้อผิดพลาด # 4 หรือไม่
Hamza Yerlikaya

2
ลองใช้Conque addon เพื่อหาเชลล์ที่ฝังอยู่ในกลุ่ม
intuited

9

สำหรับฉัน emacs มีเครื่องมือในการพัฒนาที่ดีกว่า (ไม่เพียง แต่เป็นเครื่องมือที่ใช้แท็ก)


9

ฉันต้องการที่จะพูดที่นี่จากหนังสือ "The Art of UNIX Programming":

หลายคนที่ใช้ทั้ง vi และ Emacs เป็นประจำมีแนวโน้มที่จะใช้พวกเขาสำหรับสิ่งต่าง ๆ และพบว่ามันมีค่าที่จะรู้ทั้งสองอย่าง

โดยทั่วไป vi จะดีที่สุดสำหรับงานขนาดเล็ก - ตอบกลับอีเมลอย่างรวดเร็วปรับแต่งง่าย ๆ กับการกำหนดค่าระบบและสิ่งที่ชอบ มันมีประโยชน์อย่างยิ่งเมื่อคุณใช้ระบบใหม่ (หรือรีโมตผ่านเครือข่าย) และไม่มีไฟล์การปรับแต่ง Emacs ของคุณที่มีประโยชน์

Emac มีตัวของมันเองสำหรับการแก้ไขเพิ่มเติมที่คุณต้องจัดการกับงานที่ซับซ้อนแก้ไขไฟล์หลายไฟล์และใช้ผลลัพธ์จากโปรแกรมอื่น ๆ ในระหว่างเซสชัน สำหรับโปรแกรมเมอร์ที่ใช้ X บนคอนโซล (ซึ่งเป็นเรื่องปกติของ Unixes รุ่นใหม่) มันเป็นเรื่องปกติที่จะเริ่มต้นใช้งาน Emacs หลังจากเวลาล็อกอินในหน้าต่างขนาดใหญ่และปล่อยให้มันทำงานตลอดไปอาจจะไปที่ไฟล์หลายสิบไฟล์

สิ่งที่ฉันต้องการเน้นที่นี่คือ: « หลายคนคิดว่ามันมีค่าที่จะรู้ทั้งสองอย่าง»


นี่อาจจะล้าสมัย ฉันคิดว่าสมัยนั้นความสามารถของ Emacs ในการมี Browser, SSH, Music Player และระบบที่ช้าซึ่งหยุดการทำงานของแอพอื่นทำให้เชื่อว่าเป็นการดีกว่าที่จะเปิดแอปหนึ่งและติดกับมัน
Nishant

ข่าวดีคือมันไม่ล้าสมัย! คุณสามารถใช้เบราว์เซอร์, เครื่องเล่นเพลงและอื่น ๆ ที่อยู่นอก Emacs แต่สิ่งที่ Emacs นำมานั้นเป็นอินเทอร์เฟซที่ดีเหมือนกันกับฟังก์ชั่นเหล่านี้ทั้งหมดและทางเดียว (Elisp) เพื่อขยาย
Andriy Tykhonov

ตามมุมมองของ TAUP เกี่ยวกับ Emacs นั้นล้าสมัยไปแล้วเพราะสมัยนั้น Emacs ได้เปรียบเพราะมีแอพเดียวที่ทำงานได้หลายอย่างในเวลาเดียวกันเช่น irc, เพลง, การแก้ไขจากระยะไกลเป็นต้น อย่างไรก็ตามวันนี้คุณมีแอปพลิเคชั่นที่ยอดเยี่ยมสำหรับแต่ละวัตถุประสงค์และหน่วยความจำไม่เป็นปัญหาเหมือนก่อน ... ลองนึกภาพการอ่าน Gmail ใน Emacs - ฉันหมายถึงส่วนต่อประสาน Gmail มีการสร้าง keybindings ที่ยอดเยี่ยม ใช้เวลาพอสมควรและอาจไม่ดีเท่า Gmail Interface เป็นต้น
Nishant

มันไม่ล้าสมัย! :)
Andriy Tykhonov

> อย่างไรก็ตามวันนี้คุณมีแอปพลิเคชั่นที่ยอดเยี่ยมสำหรับวัตถุประสงค์เหล่านี้ใช่ แต่คุณมีแอปพลิเคชั่นทั้งหมดที่มีอินเตอร์เฟสการตั้งค่าประสบการณ์ผู้ใช้ ฯลฯ ฯลฯ ที่แตกต่างกันมาก ... แต่ Emacs เป็นเครื่องมือเดียว! ตัวอย่างเช่นฉันชอบ Emacs การผูกคีย์ฉันใช้มันในเชลล์ในเบราว์เซอร์ และเป็นเรื่องดีมากที่อย่างน้อยก็มีบางอย่างเหมือนกันในแอปพลิเคชัน ...
Andriy Tykhonov

9

ประโยชน์ของ Emacs

  • Emacs มีทั้งอินเตอร์เฟสที่ไม่เป็นโมดัล (โดยค่าเริ่มต้น) และ modal one (เช่นสามารถเลียนแบบ vim และ vi ผ่าน Evil, Viper หรือ Vimpulse)

  • หนึ่งในโปรแกรมคอมพิวเตอร์ที่ได้รับการปรับพอร์ตมากที่สุด มันทำงานในโหมดข้อความและภายใต้ส่วนต่อประสานกราฟิกกับผู้ใช้บนระบบปฏิบัติการที่หลากหลายรวมถึงระบบ Unix-like ส่วนใหญ่ (Linux, BSD ต่างๆ, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, และ OpenVMS ระบบ Unix ทั้งฟรีและเป็นเจ้าของมักให้ Emacs ที่มาพร้อมกับระบบปฏิบัติการ

  • สถาปัตยกรรมเซิร์ฟเวอร์ Emacs อนุญาตให้ไคลเอนต์หลายรายแนบไปกับอินสแตนซ์ Emacs เดียวกันและแชร์รายการบัฟเฟอร์ kill ring ยกเลิกประวัติและสถานะอื่น ๆ

  • ระบบความช่วยเหลือออนไลน์ที่แพร่หลายด้วยการเชื่อมโยงคีย์ฟังก์ชั่นและคำสั่งที่บันทึกไว้ได้ทันที

  • ชุดภาษาการเขียนโปรแกรม Lisp แบบขยายได้และปรับแต่งได้ (Emacs Lisp) พร้อมคุณสมบัติที่รวมถึง:

  • เครื่องมือจัดการไฟล์ที่ทรงพลังและขยายได้ (dired) ดีบักเกอร์รวมและชุดการพัฒนาขนาดใหญ่และเครื่องมืออื่น ๆ

  • การมีทุกคำสั่งเป็นฟังก์ชั่น Emacs Lisp ช่วยให้คำสั่ง DWIM (ทำในสิ่งที่ฉันหมายถึง) โดยโปรแกรมตอบสนองต่อการกระทำที่ผ่านมาและสถานะเอกสาร ตัวอย่างเช่นคำสั่ง switch-or-split-window สามารถสลับไปที่หน้าต่างอื่นหากมีอยู่หรือสร้างขึ้นมาใหม่หากจำเป็น สิ่งนี้จะลดจำนวนการกดแป้นและคำสั่งที่ผู้ใช้ต้องจดจำ

  • "ระบบปฏิบัติการภายในระบบปฏิบัติการ" Emacs Lisp ช่วยให้ Emacs สามารถตั้งโปรแกรมได้นอกเหนือจากคุณสมบัติการแก้ไข แม้แต่การติดตั้งพื้นฐานยังมีแอพพลิเคชั่นหลายโหลซึ่งรวมถึงเว็บเบราว์เซอร์สองตัวผู้อ่านข่าวตัวแทนจดหมายหลายรายไคลเอนต์ IRC สี่เวอร์ชันของ ELIZA และเกมที่หลากหลาย แอปพลิเคชันทั้งหมดเหล่านี้สามารถใช้ได้ทุกที่ที่ Emacs รันด้วยส่วนต่อประสานผู้ใช้และฟังก์ชันการทำงานเดียวกัน เริ่มต้นด้วยรุ่น 24 Emacs มีตัวจัดการแพคเกจทำให้ง่ายต่อการติดตั้งแอปพลิเคชันเพิ่มเติมรวมถึงเว็บเบราว์เซอร์สำรอง EMMS (ระบบมัลติมีเดีย Emacs) และอีกมากมาย นอกจากนี้ยังมีแพคเกจมากมายสำหรับการเขียนโปรแกรมรวมถึงการกำหนดเป้าหมายที่ชุดภาษา / ไลบรารีที่เฉพาะเจาะจงหรือรูปแบบการเข้ารหัส

ประโยชน์ของบรรณาธิการที่มีลักษณะคล้าย vi

  • คำสั่งแก้ไขเป็นองค์ประกอบ
  • Vi มีอินเตอร์เฟสแบบโมดัล (ซึ่ง Emacs สามารถเลียนแบบได้)
  • ในอดีต vi จะโหลดเร็วกว่า Emacs
  • ในขณะที่เกี่ยวข้องอย่างลึกซึ้งกับประเพณี UNIX มันทำงานบนทุกระบบที่สามารถใช้ไลบรารี C มาตรฐานรวมถึง UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD และ POSIX ระบบ
  • สามารถขยายและปรับแต่งได้ด้วยสคริปต์ Vim หรือ API สำหรับภาษาที่ตีความเช่น Python, Ruby, Perl, และ Lua
  • แพร่หลาย. โดยพื้นฐานแล้วระบบที่เหมือนกับ Unix และ Unix ทั้งหมดนั้นมาพร้อมกับ vi (หรือรุ่นที่แตกต่างกัน) ในตัว ระบุ Vi (และ ex แต่ไม่ใช่ vim) ในมาตรฐาน POSIX
  • สภาพแวดล้อมการช่วยชีวิตระบบ, ระบบฝังตัว (โดยเฉพาะผู้ที่มี busybox) และสภาพแวดล้อมที่ จำกัด อื่น ๆ มักจะรวมถึง vi แต่ไม่ใช่ emacs

ที่มา: https://en.wikipedia.org/wiki/Editor_war


7

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

ตามที่กล่าวไว้

บรรณาธิการที่ดีที่สุดไม่ใช่ทั้ง Emac และกลุ่ม, มันคือ Emacs และกลุ่ม

Spacemacs ผสมผสานสิ่งที่ดีที่สุดจากทั้ง Emacs และ Vim ซึ่งทำให้ชีวิตและงานของคุณง่ายขึ้นมาก

ดูภาพหน้าจอด้านล่าง


(ที่มา: spacemacs.org )


3
นี่คือการโกง ... มัน emacs กับการกำหนดค่าบางอย่างขี้ขลาด;) ค่อนข้างมากการตั้งค่าจริง ๆ
อเล็กซ์

2
นี่เป็นสิ่งที่ดี - เมื่อใช้งานได้ เมื่อมันไม่ - หากคุณไม่รู้จัก elisp และ emacs อยู่แล้วหรือคุณไม่สามารถหาผู้สนับสนุนหลักในการแชทของผู้ที่มีปัญหา - คุณมักติดขัดและโชคไม่ดี (บางครั้งการลบไดเรกทอรี melpa ของคุณใน. emacs สามารถแก้ไขสิ่งต่าง ๆ ได้ แต่ ... )
Aaron Hall

1
แม้ว่ามันจะมีอะไรมากกว่าที่ฉันต้องการ แต่ฉันก็พอใจกับ Spacemacs มาก ฉันมี dotfiles ของฉันบน github เพื่อให้ฉันสามารถติดตั้งเครื่องใหม่ได้อย่างง่ายดาย / เร็วและเนื่องจากฉันใช้ evil (vim keybindings) ฉันมีทักษะเพียงพอที่จะผ่านเมื่อฉันต้องทำงานกับเครื่องจักรที่ฉันไม่สามารถติดตั้ง spacemacs config ของฉันได้
anr78

6

ความแตกต่างที่ใหญ่ที่สุดสำหรับฉันในการเลือกใช้ emacs มากกว่ากลุ่มคือการสร้าง gdb ใน emacs Vim ไม่มีสิ่งนี้รวมอยู่ในการแจกจ่ายเริ่มต้นและโครงการที่รวม gdb และ vim นั้นแทบจะเป็นไปไม่ได้เลยที่จะทำงานกับ MacVim ได้


1
ผมใช้เป็นกลุ่มสำหรับการแก้ไขและ Xcode สำหรับการแก้จุดบกพร่องก็น้อยกว่าเหมาะ แต่ doable ..
StackedCrooked

4

มันเหมือนแอปเปิ้ลและส้ม ทั้งสองมีการออกแบบและปรัชญาแตกต่างกัน Vim เป็นตัวแก้ไขข้อความในขณะที่ Emacs เป็น Lisp Interpreter ที่ใช้แก้ไขข้อความ

ฉันใช้ Vim เพราะมันรวดเร็วนุ่มนวลและเก่งในการจัดการกับข้อความ มันมีการเชื่อมโยงคีย์ธรรมชาติแบบเรียงซ้อนที่สามารถทำให้งานพัฒนาของคุณกลมกลืนกันจริงๆ Vim ตั้งอยู่บนพื้นฐานของ * nix philiosphy ในการทำสิ่งที่ดีจริงๆ - เช่นการจัดการข้อความ

การขยายเสียงเรียกเข้าโดยใช้ bash / zsh และ tmux นั้นเป็นเรื่องง่ายและช่วยให้คุณเรียนรู้สิ่งต่างๆมากมาย IMHO นี่เป็นช่วงการเรียนรู้ที่ดี สิ่งสำคัญคือการเรียนรู้วิธีรวมสิ่งเหล่านี้เพื่อรับแอปพลิเคชันที่ทำงานขนาดใหญ่ขึ้น ด้วย Vim คุณจะต้องเรียนรู้การรวมเข้าด้วยกันเพราะมันไม่ได้รวมเข้าด้วยกันเว้นแต่ว่าคุณบอกวิธีการ ส่วนขยายที่คุ้มค่าอีกอย่างที่ฉันใช้คือ Tig ส่วนหน้าของ Git เป็น ncurses ฉันเพิ่งมีผลผูกพันที่เปิด Tig เงียบ ๆ แล้วฉันทำทุกสิ่ง Git ที่นั่น

มันขึ้นอยู่กับผู้ใช้เพื่อตัดสินใจว่าอะไรดีที่สุด Emacs และ Vim นั้นยืนหยัดการทดสอบของเวลาเป็นเครื่องพิสูจน์ความมีค่าของพวกเขา ในที่สุดโปรแกรมเมอร์ที่ดีก็ไม่ต้องการอะไรมากไปกว่าปากกาและกระดาษ อัลกอริธึมที่ดีไม่ต้องการให้ผู้แก้ไขทำการสำรอง ดังนั้นลองทั้งคู่และดูว่าอะไรทำให้คุณมีประสิทธิผลมากขึ้น และเรียนรู้รูปแบบการออกแบบจากซอฟต์แวร์ทั้งสองนี้เนื่องจากมีมากมายให้เรียนรู้และค้นพบ!


4

Emacs มีโหมด viper ดังนั้นในความเป็นจริงมันมีคุณสมบัติที่เหนือกว่า (ยกเว้นสิ่งที่อธิบายไว้ในฟีเจอร์ Vim ที่หายไปใน Emacs กับ Viper และ Vimpulse? )

vi (และ VIM IIRC) มีน้ำหนักเบากว่า (สามารถแก้ไขไฟล์ได้) แต่มีคุณสมบัติน้อยลง (การสื่อสารของกระบวนการย่อยภาษาส่วนขยาย)


3

Emacs เป็นโปรแกรมทำทุกอย่างจริงๆและ vi (m) เป็นเพียงโปรแกรมแก้ไขเท่านั้น หากคุณกำลังแก้ไขข้อความพวกเขาทั้งคู่ก็ดี แต่ฉันชอบ emacs เพียงเพราะฉันต้องเลื่อนออกจากแถวแรกเพื่อย้ายไปรอบ ๆ และพิมพ์สิ่งที่ผิดในโหมดคำสั่งต่อไป ฉันไม่มีปัญหานั้น vi (m) อาจเป็นตัวแก้ไขสำหรับคุณ


2

มุมมองที่ดีซ่าน:

vi (ไม่ใช่เสียงเรียกเข้า) เป็นสิ่งจำเป็นสำหรับมืออาชีพ คุณมี vi รูปแบบที่สามารถใช้งานได้ง่ายเสมอไม่ว่าสภาพแวดล้อมจะเป็นเช่นไร คุณสามารถอยู่ใน vi เมื่ออยู่ใน emacs คุณสามารถอยู่ใน vi เพื่อสร้างคำสั่ง bash ใน unix-land

แม้แต่ Microsquish ก็ต้องสนับสนุน vi (แม้ว่าพวกเขาจะทำได้ดีในการซ่อนมัน) เพราะรัฐบาลและการปฏิบัติตามมาตรฐานการตีพิมพ์ของ บริษัท

ในความคิดของฉันถ้าคุณอยู่ในงานที่ต้องทำในสภาพแวดล้อมที่ยุ่ง - ไม่ใช่ดอกไม้โรงบ่มเพาะที่ถูก จำกัด อยู่ในแท่นขุดเจาะแฟนซีในสภาพแวดล้อมการพัฒนาหรือในสถานศึกษา - การรู้จำนวนมากเกี่ยวกับตัวแก้ไขแฟนซี อย่าเรียนรู้เทคนิคแฟนซีทั้งหมดในกลุ่มหรือ emacs และอย่าพัฒนามาโครเพื่อทำให้สภาพแวดล้อมการแก้ไขเป็นไปตามที่คุณต้องการ มันเป็นช่วงเวลาที่ยิ่งใหญ่เมื่อคุณไปถึงเครื่องจักรต่าง ๆ ที่คุณอาจไม่สามารถพิสูจน์ได้ในสภาพแวดล้อมของโรงงาน

อ่านบทความของ Bill Joy - มันเป็นแบบฝึกหัดที่มีความสามารถมากแม้กระทั่งความสวยงามวิศวกรรมในการแก้ไขข้อความธรรมดาอย่างรวดเร็วมาก กฎของ Parito นำมาใช้ที่นี่: 80% ของผลไม้อยู่ใน 20% ของตะกร้า การแก้ไขข้อความธรรมดาอย่างรวดเร็วเป็นสิ่งสำคัญในการแก้ไขความสามารถ - อื่น ๆ เป็นตัวเลือก - และบางครั้งก็เป็นอันตราย


3
คุณกำลังพูดถึงกระดาษแผ่นไหน? อย่างน้อยคุณสามารถตั้งชื่อถ้าไม่ใช่ลิงค์ได้หรือไม่?
darkfeline

2
"แม้แต่ MS ก็ต้องสนับสนุน vi" คุณสำรองข้อมูลได้ไหม
dodgethesteamroller

1

ถ้าคุณย้ายจากไซต์หนึ่งไปยังอีกที่หนึ่งหรืองานของคุณเกี่ยวข้องกับการเข้าสู่ระบบการผลิตแล้วกลุ่มคือวิธีที่จะไป

เครื่อง * nix ทั้งหมดจะมีการติดตั้ง vi เป็นค่าเริ่มต้น

sysdamins ส่วนใหญ่ต้องการ ksh เป็นเชลล์เริ่มต้น ksh ใช้การกดแป้นคำสั่ง vi (หรือ emacs) เพื่อค้นหาประวัติและแก้ไขบรรทัดคำสั่ง

หากคุณไม่ทราบว่า vi คุณพิการอย่างรุนแรงเมื่อคุณเข้าสู่กล่อง Unix ด้วยการกำหนดค่ามาตรฐาน

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


1
สำหรับทุบตีลองใช้set -o viในของคุณ.bashrcแทนset -o emacsซึ่งถูกใช้โดยค่าเริ่มต้น ฉันไม่เคยใช้ ksh แต่อาจจะเหมือนกัน
sjas

1

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

สำหรับงานที่แม่นยำเพียงลืมเกี่ยวกับ Vi การรวม Emacs กับ LISP นั้นยอดเยี่ยมมาก! คุณควรใช้ SLIME จากนั้นคุณจะมีการรวมที่ยอดเยี่ยมกับ REPL ความสามารถในการevalทำงานบัฟเฟอร์หรือไฟล์โดยตรงไปยังล่ามที่กำลังทำงานอยู่ในบัฟเฟอร์ emacs และอีกมากมาย ...


1
ใช่ฉันรู้เรื่องนี้ แต่ฉันกำลังมองหาเครื่องมือแก้ไขเสียงกระเพื่อมที่เหมาะสมไม่ใช่เหตุผลที่ถามคำถามนี้ - มันเป็นเพียงตัวอย่าง ขอบคุณสำหรับการตอบสนองแม้ว่า!
Sasha Chedygov

1

ฉันได้ทำงานกับ spacemacs ประมาณ 2 ปีและ neovim ประมาณหนึ่งปีในสภาพแวดล้อมการผลิต / การวิจัย Spacemacs เป็น emacs ที่มีคุณสมบัติพิเศษที่ดีเช่นเลเยอร์เป็นต้นและ neovim ก็เป็นอีกกลุ่มที่เป็นกลุ่มของกลุ่มอีกครั้งที่มีคุณสมบัติพิเศษบางอย่าง

ฉันค่อนข้างไม่พอใจกับทั้งคู่ในแง่ของประสบการณ์ และฉันยังคงมองหาทางออกระยะยาวสำหรับความต้องการแก้ไขข้อความของฉัน

นี่คือการเปรียบเทียบอย่างง่าย:

  • Neovim, vim, emacs, spacemacs และอื่น ๆ บรรณาธิการทั้งหมดใช้ทรัพยากรน้อยกว่าเมื่อเทียบกับบรรณาธิการส่วนใหญ่

  • Neovim / vim นั้นเร็วกว่า emacs เล็กน้อยโดยเร็วกว่า spacemacs

  • ในแง่ของประสบการณ์การแก้ไข ฉันสามารถพูดได้อย่างง่ายดายว่าแพ็คเกจ emacs รู้สึกดีกว่า ฉันคิดว่านั่นเป็นเพราะพวกเขาผสมผสานกับแกนกลางของ emacs ได้ดีขึ้น

  • Vimscript นั้นดีและมีโครงการที่ยอดเยี่ยมในระบบนิเวศที่เป็นกลุ่มเช่นกัน สิ่งที่ดีคือพวกเขามีเอกสารที่ดีกว่าโครงการ emacs ส่วนใหญ่ที่ฉันเคยเห็น

  • ทั้งสองอย่างอาจมีปัญหาขึ้นอยู่กับแพ็คเกจที่คุณใช้งาน Spacemacs มักจะหยุดนิ่งและ neovim มักจะแสดงข้อความผิดพลาดที่น่ากลัวดังนั้นเลือกพิษของคุณที่นั่น

  • การแก้ไข modal ในกลุ่มไม่ใช่แนวคิดที่ใช้งานง่าย แต่เมื่อคุณคุ้นเคยกับมันแล้วคุณต้องการมันทุกอย่าง บรรณาธิการทั้งสองระบุว่า


1
"การแก้ไข Modal (... ) เมื่อคุณคุ้นเคยกับมันแล้วคุณต้องการมัน" - น่าสนใจ ฉันใช้เวลาหลายปีในการใช้ Emacs ด้วยโหมดความชั่วร้ายและใช้ในการแก้ไขแบบโมดัลและตอนนี้กลับไปเป็นแบบไม่กิด ... มันรู้สึกดีขึ้น ฉันคิดว่าสิ่งนี้ไม่เพียง แต่ขึ้นอยู่กับบุคคลเท่านั้น แต่ยังขึ้นอยู่กับบริบท / เวลาในชีวิต / อะไรก็ตาม ลองคิดดูสิ :)
Jay

1
@Jay ฉันเดา แต่คุณไม่ควรพลาดสิ่งที่ชอบการเลือกคอลัมน์และกระโดดไปรอบ ๆ ด้วย ": XX"?
Kaan E.

ไม่จริง ... ฉันใช้การเลือกรูปสี่เหลี่ยมผืนผ้าของ Emacs บางครั้งและแทนที่จะเป็น: xx ฉันใช้ "Mg g XX" - การกดแป้นอีกสองสามครั้ง แต่ฉันแทบจะไม่ต้องไปที่บรรทัดใดเลย โดยปกติแล้วแอปพลิเคชั่น Emacs (ดีบักเกอร์ ฯลฯ ) จะส่งฉันไปที่บรรทัดขวา
Jay

0

การกดแป้นการดำเนินการ ::: การแก้ไข vi จะคงการเรียงสับเปลี่ยนของคีย์ที่พิมพ์แต่ละครั้ง สิ่งนี้จะสร้างพา ธ ในแผนผังการตัดสินใจซึ่งระบุคำสั่งใด ๆ ได้อย่างชัดเจนในขณะที่คำสั่ง Emacs เป็นการรวมกันของคีย์พิมพ์ที่ดำเนินการทันทีซึ่งทำให้ผู้ใช้เลือกได้ว่าจะใช้คำสั่งหรือไม่

การใช้หน่วยความจำและความสามารถในการปรับแต่ง ::: vi เป็นโปรแกรมที่เล็กลงและเร็วขึ้นด้วยความจุที่ จำกัด มากขึ้นสำหรับการปรับแต่งในขณะที่ Emacs ใช้เวลาในการเริ่มต้นนานขึ้นและต้องการหน่วยความจำเพิ่มเติม อย่างไรก็ตามมันสามารถปรับแต่งได้อย่างมากและมีคุณสมบัติจำนวนมากเนื่องจากเป็นสภาพแวดล้อมการทำงานหลักสำหรับโปรแกรม Lisp ที่ออกแบบมาสำหรับการแก้ไขข้อความ


0

เป็นกลุ่มแก้ไขที่มีประโยชน์คุณพิมพ์ง่าย ๆvim filenameเพื่อเปิดไฟล์แก้ไขบันทึกและปิด

emacsเป็น "ระบบปฏิบัติการ" หลอกว่าเป็นบรรณาธิการคุณสามารถevalโค้ดเพื่อเปลี่ยนพฤติกรรมและขยายได้ตามที่คุณต้องการ A modeเพื่อรับ / ส่งอีเมลใน emacs เป็นเหมือนซอฟต์แวร์อีเมลบนระบบปฏิบัติการ

เมื่อทำแก้ไขง่ายเช่นการปรับเปลี่ยนไฟล์ config ผมใช้เป็นกลุ่ม

มิฉะนั้นผมไม่เคยออกจากemacs


0

ฉันคิดว่าความแตกต่างที่สำคัญคือเป้าหมายการออกแบบ VIM ใช้สำหรับ UNIX เป็นตัวแก้ไขการทำงาน Emacs สำหรับ GNU และแฮ็กเกอร์เสียงกระเพื่อมดังนั้นจึงมีองค์ประกอบการออกแบบที่หลากหลาย

ฉันใช้เป็นกลุ่มบนเวิร์กสเตชันของฉันในขณะที่ฉันรัก emacs เช่นกัน


0

ฉันเป็นแฟนของ Emacs แต่สนับสนุนให้ผู้พัฒนารายอื่นเรียนรู้ VI เพราะ:

  1. คุณสามารถใช้ VI เพื่อแก้ไขไฟล์ emacs
  2. VI รวมคำสั่ง ed และผู้ใช้ UNIX ทุกคนควรรู้จัก ed และ sed

ฉันสังเกตเห็นหลายความคิดเห็นเกี่ยวกับ VIM ที่เริ่มต้นเร็วกว่า emacs หากคุณสนใจจริงๆให้เรียกใช้ emacs ในโหมดเซิร์ฟเวอร์และชื่อแทน 'emacs' เป็น 'emacsclient' ไคลเอนต์เร็วสุด ๆ เพราะจะแตะเซิร์ฟเวอร์ที่บ่าและบอกไฟล์ที่คุณต้องการแก้ไข บน MacOSX emacsclient เพียง 33K ในขณะที่ emacs คือ 287M

ฉันไม่แน่ใจว่าสิ่งนี้จำเป็นสำหรับฮาร์ดแวร์ที่ทันสมัย บน MacBook Pro ของฉัน (2013 Retina), emacs โหลดเกือบทันทีเมื่อฉันเรียกใช้จากเปลือก ฉันตรวจพบไม่หยุดเลย เมื่อฉันรัน Emacs.app (เวอร์ชัน GUI) อาจใช้เวลาทั้งหมด 3 วินาที

การร้องเรียนส่วนใหญ่ที่ฉันได้ยินเกี่ยวกับ emacs ดูเหมือนว่ามาจากคนที่เข้าใจผิดเกี่ยวกับ emacs ต้องใช้ทั้ง vi และ emacs ตั้งแต่ปี 1982 ฉันจำได้ว่าเวลาที่ emacs โหลดช้ากว่า vi มากและใช้หน่วยความจำกายภาพส่วนใหญ่ในกล่อง UNIX ยุคแรกของฉัน แต่นั่นไม่ใช่กรณีและไม่ได้เป็นอย่างน้อย 15 20 ปี.

หนึ่งร้องเรียนที่ฉันจะยอมรับคือ "emacs pinkie" สิ่งนี้ไม่เคยรบกวนฉันเลยเมื่อฉันยังเด็ก ตอนนี้ฉันอายุ 58 ปีแล้วพิ้งกี้ของฉันก็เจ็บเล็กน้อยจากการเข้าถึงปุ่มควบคุมซ้ำ ๆ สำหรับ emacs chording นี่เป็นจริงโดยเฉพาะอย่างยิ่งบนแป้นพิมพ์ MacBook Pro ซึ่งการควบคุมถูกย้ายไปหนึ่งตำแหน่งทางด้านขวาเพื่อให้มีที่ว่างสำหรับปุ่ม "fn" มันเกือบจะไม่น่ารำคาญเมื่อ Control เป็นปุ่มซ้ายล่าง


นอกจากนี้คุณยังสามารถ "ทิ้ง" emacs ซึ่งโดยทั่วไปหมายถึงการถ่ายภาพส่วนขยายของเอลลิสที่คุณต้องการ Emacs เริ่มต้นได้เร็วขึ้นด้วยวิธีนี้ แต่ใช้เวลาสักครู่ในการพิจารณาว่าส่วนขยายใดที่คุณต้องการรวม
ฟิล Harbison

นอกจากนี้คุณยังสามารถเล่น "หอคอยแห่งฮานอย" ได้ใน emacs มันเจ๋งแค่ไหน? :)
Phil Harbison

Re: "emacs pinkie" สำหรับแป้นพิมพ์รุ่นเก่าบางรุ่นเช่น Sun Type 3/4 ซึ่ง HHKB Professional ใช้เป็นพื้นฐานการควบคุมจะวางไว้ที่ Caps Lock ปกติ ฉันไม่มีประสบการณ์ emacs ที่คุณมี แต่ฉันเคยชินกับการควบคุมในแถวบ้าน มากจนฉันได้ทำการเปลี่ยนแปลงบนคีย์บอร์ดของฉัน (MacBook Pro ด้วย) HHKB มีการปรับปรุงเพิ่มเติมบางอย่างเช่น Backspace เหนือ Enter และ Esc ถัดจาก 1
martinweiss

@PhilHarbison สามารถอธิบายรายละเอียดเกี่ยวกับ "dump" ได้หรือไม่
A_P

0

ฉันเป็นผู้ใช้กลุ่มแรกแล้วฉันเปลี่ยนเป็น emacs จากนั้นเป็นกลุ่มตอนนี้ฉันกำลังทดลองใช้ emacs อีกครั้ง

  • ทั้งคู่เป็นบรรณาธิการที่ยอดเยี่ยม
  • ทั้งสองมีความสามารถขยายได้มากในวันนี้
  • ทั้งสองมีปลั๊กอินและชุมชนที่ยอดเยี่ยม

ในฐานะนักพัฒนาเราพิมพ์มากและในที่สุดสำหรับฉันการย้ายไปรอบ ๆ ในบัฟเฟอร์และไฟล์เป็นงานซ้ำที่ยิ่งใหญ่ที่สุดดังนั้นฉันต้องการแก้ไขที่ฉันสามารถย้ายได้อย่างรวดเร็ว!

แรงจูงใจในการทดลองกับ emacs อีกครั้งคือฉันกดมัน Ctrl นำไปสู่การโยงคีย์เร็วกว่ากลุ่มและง่ายต่อการให้เหตุผล

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

ใน emacs ไม่มีโหมดโดยทั่วไปคุณกด Ctrl ด้วยสีชมพูของคุณและพิมพ์การกดแป้นเช่น Cx Cf, Cx Cs, Cx Cc มีปุ่มลัดที่คุณจำเป็นต้องปล่อยปุ่ม ctrl ฉันเกลียดอันนี้และแทนที่พวกมันด้วยปุ่มควบคุม

ฉันคิดว่าวิธี emacs นั้นเร็วกว่าที่จะคิดและพิมพ์ แต่กลุ่มมีความแข็งแกร่งอื่นเพื่อ คำสั่งมันคอมโพสิตพวกเขามักจะมีรูปแบบ ตัวอย่างเช่นในการลบบรรทัดคุณสามารถใช้เพื่อลบคำdd dwปลั๊กอินทำให้การใช้งานของการตัดโค่นว่ามีกลุ่ม-รอบทิศทางปลั๊กอินคุณสามารถลบคำพูดกับ ds "(รอบทิศทางลบ") ลบขึ้นไป dt// ลบสูงสุด / ก่อนหน้า /: dT/และอื่น ๆ ตราบใดที่คุณเรียนรู้สิ่งที่เคลื่อนไหวเริ่มน่าสนใจมาก

สรุปแล้ววันนี้ฉันรู้สึกว่า emacs keybinds เร็วขึ้นสำหรับการแก้ไขมาโครและคำสั่ง vim นั้นมีประสิทธิภาพมากขึ้นสำหรับการทำให้เป็นไมโคร

ฉันใช้เสียงเรียกเข้าเป็นเวลาห้าปีที่ผ่านมาดังนั้นฉันจึงแก้ไขความคิดส่วนใหญ่เกี่ยวกับคำ, เส้น, ล้อมรอบ, บล็อก, ฯลฯ ลบบรรทัดนี้, ลบเครื่องหมายคำพูด, แทนที่คำพูด, ลบคำในเคอร์เซอร์, ฉันพยายามค้นหา emacs ย้ายที่

ในฐานะที่เป็นคำพูดสุดท้ายที่ฉันจะบอกว่าฉันเป็นห่วงเกี่ยวกับfzfมากกว่าเกี่ยวกับ emacs หรือเป็นกลุ่มฉันชอบที่จะมีบรรณาธิการที่ fzf สมบูรณ์


-9

ตอนแรก Vi (การรับรู้ดั้งเดิม) ไม่ได้ใช้วันนี้ ที่คุณพูดมาคือเสียงเรียกเข้าบางส่วน

ในการขยายฟังก์ชั่น Vim คุณจะต้องคอมไพล์ Vim ใหม่ไม่ใช่ Emacs

Emacs มีกลุ่มในตัวเอง (โหมด viper)

โดยปกติแล้ว Emacs จะต้องทำการติดตั้งด้วยตนเองโดยทั่วไป Vim จะติดตั้งไว้ล่วงหน้าในระบบปฏิบัติการ Unix เช่น OS (แต่ถ้าคุณมีการเข้าถึง ssh ไปยัง host tramp-mode win Vim :)

หากคุณลองเป็นกลุ่มคุณจะเกลียด Emacs ดังนั้นเริ่มจาก Emacs ก่อน

นอกจากนี้อ่านhttp://www.dina.dk/~abraham/religion/vi-tutorial.html (ลิงก์ลงไปเพื่อใช้สิ่งนี้ )

Anwer ค้นหาใน hxxp: //en.wikipedia.org/wiki/Editor_war


8
คุณไม่จำเป็นต้องคอมไพล์เป็นกลุ่มอีกครั้งเพื่อขยาย คุณไม่จำเป็นต้องออกจากกลุ่มด้วยซ้ำ
php มากเกินไป

1
มี vimscript / Python / Ruby / etc เข้าถึงโครงสร้างภายใน Vim ทั้งหมดหรือไม่ ถ้า editor codebase ช่วยในการขยายหรือความซับซ้อนของการขยายในระดับหนึ่งของความซับซ้อนของ EDITOR?
gavenkoa

1
สคริปต์ Vim ส่วนใหญ่เช่นมาโครที่เลือกสรร ในการขยายเสียงเรียกเข้าคุณต้องใช้ปลั๊กอิน ((
gavenkoa

1
Vi ไม่ได้ใช้?!?!! อะไร? nvi ถูกพิจารณาว่าเป็นต้นฉบับหรือไม่ หรือ 'ดั้งเดิม vi'? ระบบจำนวนมากเช่น FreeBSD, ArchLinix รวม vi หรือ nvi แบบดั้งเดิมมาด้วยและฉันรู้สึกขอบคุณสำหรับสิ่งนั้น บางระบบเช่น Debian go with vim ซึ่งอยู่ในโหมดที่เข้ากันได้โดยค่าเริ่มต้น (รู้สึกเหมือน vi)
Alex

1
@gavenkoa ฉันเห็นด้วยกับ Alex อย่างแน่นอนคุณไม่เคยลองใช้ระบบที่ต้องติดตั้งด้วยตนเองเช่น Gentoo, BSDs หรือ Arch Linux บางตัว «ถ้าคุณลองเป็นกลุ่มคุณเกลียด Emacs ดังนั้นเริ่มจาก Emacs ก่อน " จะทำให้ฉันลองใช้ VIM ก่อนและคุณเช่นกันถ้าคุณคิดเล็ก ๆ น้อย ๆ นั่นทำให้ฉันนึกถึงคนที่พูดว่าอย่าลองเขียนโปรแกรมฟังก์ชั่นก่อน ฉันเสียใจฉันไม่ได้ลองเร็วกว่านี้ ...
JMCF125
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.