Vim / Emacs ให้ผลผลิตเฉพาะอะไรบ้างจากโปรแกรมแก้ไขข้อความ GUI


100

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

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

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


1
ฉันจำไม่ได้ว่ามีการติดตั้ง vim บนเครื่อง windows ใด ๆ ของฉัน ...
Greg

9
@Greg: ไม่ได้รับการติดตั้งเฉยๆ คุณออกไปทำเองเถอะ ไม่ว่าคุณจะไม่ใช่นักพัฒนาซอฟต์แวร์ตัวจริงหรือคุณได้ทำมันไปมากแล้วตอนนี้คุณกำลังติดตั้ง vim ในโหมดสลีป :-)
TED

6
ควรทำเครื่องหมายเป็นคำถาม Community Wiki เนื่องจากเป็นคำถามแบบอัตนัย
STW

7
@ Yoooder: ทำไมผู้คนถึงเอาแต่บ่นเกี่ยวกับคำถามเกี่ยวกับวิกิชุมชน? ฉันไม่พบกฎใด ๆ ที่ควบคุมวิกิชุมชน
John Smith

คำตอบ:


111

สำหรับ Vim:

  • Vim มีการทำงานร่วมกับเครื่องมืออื่น ๆ (คำสั่งเชลล์สคริปต์คอมไพเลอร์ระบบควบคุมเวอร์ชัน ctags ฯลฯ ) ได้ดีกว่าตัวแก้ไขส่วนใหญ่ แม้แต่สิ่งง่ายๆเช่น:.!การไพพ์เอาต์พุตของคำสั่งลงในบัฟเฟอร์ก็เป็นสิ่งที่คุณจะไม่พบในโปรแกรมแก้ไข GUI ส่วนใหญ่

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

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

  • แบบบูรณาการdiffและgrep(เป็นอิสระจากแพลตฟอร์มดังนั้นคุณไม่จำเป็นต้องดาวน์โหลดและเรียนรู้เครื่องมือใหม่ทุกครั้งที่คุณเปลี่ยนคอมพิวเตอร์)

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

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

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

  • การย้ายคัดลอกวางและลบข้อความทำได้อย่างรวดเร็วใน Vim คำสั่งนั้นง่ายการกดแป้นเดียวและประกอบได้ เพิ่มทุกครั้งที่คุณทำไฮไลต์เมาส์และ Ctrl-X อย่างระมัดระวังและลำบากจากนั้นแทนที่ทั้งหมดด้วยda((ลบชุดของ parens ที่ตรงกันและทุกอย่างในนั้น) ประหยัดเวลามากกว่าที่คุณคิด

  • สิ่งเล็ก ๆ น้อย ๆ เช่น*ค้นหาคำที่อยู่ใต้เคอร์เซอร์หรือ.ทำซ้ำคำสั่งหรือ%เด้งไปมาระหว่างพาเรนเปิดและปิด มีรายการเหล่านี้มากเกินไป

  • ภาษาสคริปต์ในตัวและความสามารถในการแมปคีย์ที่มีประสิทธิภาพและมาโครเพื่อให้ตัวแก้ไขสามารถขยายได้ทุกวิธีที่คุณต้องการ สคริปต์มากมายที่เขียนและดาวน์โหลดได้แล้ว

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

หลายจุดเหล่านี้ใช้ได้ดีกับ Emacs (ในรูปแบบที่แตกต่างกัน แต่โดยปกติแล้วจะมีประสิทธิภาพเท่ากัน)


2
นี่เป็นตัวอย่างที่ดีสำหรับบางสิ่งที่เป็นรูปธรรมที่ช่วยเพิ่มผลผลิตในกลุ่ม
Adam Plumb

14
คุณลืมพูดถึงการสนับสนุนข้ามแพลตฟอร์มที่น่าทึ่ง ถึงขนาดใช้ตัวแก้ไขเดียวกันในบรรทัดคำสั่งที่คุณใช้ในสภาพแวดล้อมที่มีหน้าต่าง
Singletoned

3
ประเด็นเกี่ยวกับมุมมองแบบแท็บเทียบกับมุมมองแบบหน้าต่างค่อนข้างล้าสมัย เครื่องมือแก้ไข gui ส่วนใหญ่ที่ฉันเคยอนุญาตให้ใช้เลย์เอาต์แบบหน้าต่าง
Shawn O'Hare

1
Org-Mode ใน Emacs ช่วยเพิ่มผลผลิตได้มาก
18 ไบต์

37

(vim เป็นพิษของฉันฉันแน่ใจว่า emacs ให้ผลตอบแทนที่ใกล้เคียงกัน)

กำไรที่ใหญ่ที่สุด: ไม่จำเป็นต้องสัมผัสเมาส์

สำหรับฉันสิ่งที่สะดวกที่สุดคือการข้ามไปข้างหน้า (หรือก่อนหน้า) ตัวอักษรเฉพาะหรือการรวมกันของตัวอักษรหรือย้อนกลับด้วยการกดแป้นพิมพ์สองสามครั้ง การกระโดดไปข้างหน้าด้วยเงื่อนไขเดิมสองครั้งหรือสิบครั้งเป็นเพียงแค่การขึ้นต้นด้วยตัวเลข

หากคุณต้องการแก้ไขซ้ำให้ข้ามไปยังตำแหน่งนั้น (การกดแป้น 2-3 ครั้ง) จากนั้นกด "" เพื่อทำการแก้ไขครั้งล่าสุดซ้ำ การข้ามไปข้างหน้า (หรือถอยหลัง) นั้นง่ายกว่า - การกดแป้นพิมพ์ครั้งเดียว - หากเป็นเงื่อนไขการค้นหาเดียวกัน

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

หลังจากผ่านไปสองสามวันคุณจะพบว่าตัวเองรู้สึกไม่พอใจทุกครั้งที่ต้องเอื้อมมือไปจับเมาส์ (หรือตี <Down> 15 ครั้ง) เมื่อคุณอยู่ในโปรแกรมแก้ไข GUI


2
ควรสังเกตว่าหากคุณใช้ gVim (หรือหากคุณติดตั้ง gpm และใช้เพียงแค่ vim ธรรมดาในเทอร์มินัล) คุณสามารถใช้เมาส์ได้หากต้องการ มีบางสถานการณ์ที่การใช้เมาส์มีประโยชน์
thebrokencube

1
ฉันมี "set mouse = a" ใน. vimrc ของฉันในกรณีที่ฉันจำเป็นต้องปัดภาพจำนวนมาก;)
Jeremy Smyth

ใช่เมาส์สามารถเป็นตัวช่วยประหยัดเวลาสำหรับการเลือกพื้นที่ของข้อความหรือเลื่อนเคอร์เซอร์ไปยังจุดที่ต้องการในข้อความจำนวนมาก ไม่งั้นเสียเปล่า ๆ
TED

1
จากเสียงของมันฉันสามารถทำสิ่งที่คุณอธิบายโดยใช้ Ctrl + ซ้ายหรือ Ctrl + ขวาในโปรแกรมแก้ไขอื่น ๆ ฉันได้ยินมาตลอดว่าคุณสามารถทำบางอย่างเช่น "d5w" เพื่อลบ 5 คำได้ ... แต่ Ctrl + Delete จะทำได้เร็วกว่า
แพะไม่พอใจ

4
Ctrl-Right เพียงแค่เลื่อนไปข้างหน้าคำ คุณต้องทำ 5 ครั้งเพื่อไปข้างหน้าห้าคำ ในกลุ่มคุณพิมพ์ 5w เพื่อไปข้างหน้า 5 คำ :) หรือ 9w เพื่อไปข้างหน้า 9 คำ หรือ) เพื่อไปที่จุดเริ่มต้นของประโยคถัดไปหรือ} เพื่อไปยังย่อหน้าถัดไป มีทางลัดหนึ่งหรือสองปุ่มเล็ก ๆ น้อย ๆ มากมายที่จะย้ายไปในทุกทิศทางที่ชาญฉลาด และถ้าคุณต้องการลบทุกอย่างจนถึงจุดที่คุณเพิ่งย้ายไปคุณเพียงแค่นำหน้าคำสั่งการเคลื่อนไหวด้วย d เพื่อลบสามประโยค d3) คือสิ่งที่คุณต้องการ :)
Jeremy Smyth

33

ฉันสงสัยเสมอว่าทำไมมีคนไม่กี่คนที่กาก้ามากกว่า Vim ดูวิดีโอของ Vim power user ในการดำเนินการ:

https://www.youtube.com/watch?v=FcpQ7koECgk

หากบรรณาธิการปัจจุบันของคุณสามารถทำสิ่งที่เขากำลังทำอยู่ก็ไม่จำเป็นต้องเปลี่ยน! :)

นอกจากนี้โปรดอ่านhttp://www.viemu.com/a-why-vi-vim.htmlนี้

หลังจากดูวิดีโอและอ่านบทความนั้นฉันไม่มีทางเลือกอื่นนอกจากเริ่มเรียนรู้ VIM เป็นเวลาเกือบปีแล้วที่ฉันเปลี่ยนมาใช้ VIM และฉันนึกไม่ออกว่าจะใช้อย่างอื่น


4
ว้าววิดีโอเหล่านั้นยอดเยี่ยมจริงๆ! ขอบคุณสำหรับการโพสต์!
thebrokencube

วิดีโอที่น่าสนใจเป็นเรื่องน่าเสียดายที่ฉันต้องใช้เวลานานมากในการจดจำวิดีโอทั้งหมดในทางปฏิบัติ :)
Frerich Raabe

8
ผู้เขียนวิดีโอตัวแรกจำเป็นต้องเรียนรู้โหมดบล็อกภาพซึ่งเร็วกว่ามาโครสำหรับการเปลี่ยนบล็อคข้อความที่ด้านล่าง
ปีเตอร์

23

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


5
Customizability เป็นคุณลักษณะที่ขาดหายไปในโปรแกรมแก้ไข GUI เกือบทั้งหมด คุณสามารถใช้ยูทิลิตี้การขยายมาโครของบุคคลที่สาม (AutoKey อะไรก็ได้) เพื่อช่วยในบางส่วนนี้ แต่การติดตั้งไว้ในตัวแก้ไขนั้นมีประโยชน์
Alex Feinman

โอ้สำหรับบันทึก ฉันทำงานกับผลิตภัณฑ์ของ Microsoft และการใช้ VimEmu สำหรับ Visual Studio นั้นถือว่ามาจากสวรรค์ ยังคงเหมือนกลับบ้านที่อาคารผู้โดยสารของฉันและเป็นกลุ่มแม้ว่า :)
Stefan Mai

1
ViEmu ขั้นเทพแน่นอน ฉันจะบอกว่า Visual Studio ไม่สามารถใช้งานได้อย่างแน่นอนหากไม่มีมัน :)
thebrokencube

1
Textpad บน Windows มีสิ่งนี้และมันง่ายอย่างเหลือเชื่อ: กดบันทึกทำมาโครแล้วบันทึก คุณยังสามารถกำหนดทางลัดให้ได้ น่าเสียดายที่ฉันไม่พบสิ่งที่เทียบเท่าบน Linux (TP ทำงานกับ Wine แต่ดูน่าเกลียดและไม่มีฟังก์ชันการทำงานของ Linux บางอย่าง)
แพะไม่พอใจ

1
@DisgruntledGoat - หากคุณสามารถพิจารณา ctrl-X (เป็น "การกดปุ่มบันทึก" และ ctrl-X) เป็น "บันทึก" แสดงว่าคุณพบสิ่งที่เทียบเท่าบน Linux, Windows, Unix และ Emacs ทุกแพลตฟอร์มอื่น ๆ ถูกย้ายไปแล้ว ถึง.
TED

15

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

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

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

ความแตกต่างก็คือ Emacs ติดตามตำแหน่งสุดท้ายหลายตำแหน่งที่กำหนดไว้ในวงแหวนเครื่องหมายและคุณสามารถกลับไปที่ตำแหน่งเหล่านั้นด้วยการกดแป้นพิมพ์ (หรือสองครั้งขึ้นอยู่กับการกำหนดค่าของคุณ) ฉันพบว่าสิ่งนี้มีประโยชน์อย่างยิ่งโดยเฉพาะอย่างยิ่งเนื่องจากคำสั่ง Emacs จำนวนมากที่เปลี่ยนตำแหน่งของคุณในบัฟเฟอร์จะกำหนดเครื่องหมายไว้ที่ตำแหน่งเดิมของคุณ ตัวอย่างคือเมื่อฉันแก้ไขโมดูล Python และต้องการเพิ่มคำสั่งนำเข้าที่ด้านบนของไฟล์ การกดแป้นพิมพ์เพื่อไปที่ด้านบนของบัฟเฟอร์ (Alt- <) จะกำหนดเครื่องหมาย ฉันเพิ่มใบแจ้งยอดการนำเข้า ฉันกด Ctrl-u Ctrl-Space และฉันกลับมาที่จุดเริ่มต้น ฉันสามารถทำสิ่งนี้ต่อไปเพื่อวนกลับไปยังตำแหน่งก่อนหน้าได้เช่นกัน (บางทีฉันอาจต้องเลือกข้อความบางส่วนในขณะที่เพิ่มคำสั่งนำเข้านั้น)

ความแตกต่างของ Emacs อื่น ๆ (และเป็นที่รู้จักมากขึ้นคือแหวนสังหาร การกดแป้นพิมพ์ส่วนใหญ่สำหรับการลบข้อความออกจากบัฟเฟอร์บันทึกข้อความไปยัง kill ring ซึ่งสามารถเรียกคืนได้ด้วยคำสั่ง "ดึง" (Ctrl-y) คุณสมบัติที่สำคัญคือคำสั่ง yank ที่ตามมาจะดึงข้อความที่เก่ากว่าที่ถูกฆ่า ดังนั้นคุณสามารถฆ่าหลายส่วนของข้อความในแถวจากนั้นเรียกดูตามลำดับ คุณยังสามารถวนรอบวงแหวนฆ่าด้วย Alt-y หลังจากงัดเอาข้อความที่ดึงออกมาและแทรกรายการถัดไปในวงแหวน

Emacs มีคุณสมบัติเหล่านี้ในปี 1978 ระบบหลักอื่น ๆ เพียงระบบเดียวที่จะนำมาใช้ในทุกระดับคือ NeXTStep (และปัจจุบันสืบทอดโดย Cocoa) เครื่องมืออื่น ๆ มีคุณสมบัติเพิ่มเติมสำหรับงานเฉพาะสามารถขยายเป็นภาษาได้ง่ายกว่า Emacs Lisp และมีอินเทอร์เฟซภาพที่ดีกว่า ... แต่ Emacs ยังคงแก้ไขข้อความได้ดีกว่า ซึ่งเป็นเหตุผลว่าทำไมเมื่อคุณรู้วิธีใช้แล้วก็ยากที่จะเลิกใช้


ไม่ต้องสงสัยเลยว่า emacs อาจเป็นตัวเลือกที่ใช้ได้สำหรับหลาย ๆ คนเนื่องจากมีผู้ใช้จำนวนมาก แต่ฉันต้องสบายนานแค่ไหน? ฉันมีประสบการณ์ในการพิมพ์ดีดที่รวดเร็วมากและสามารถใช้ทัชแพด macbook pro ได้เป็นอย่างดีโดยใช้โปรแกรมแก้ไขข้อความ gui เช่น textmate ฉันไม่เคยคุ้นเคยกับ emacs กับการผูกทั้งหมด เจ็บมือหลังจากใช้ไปประมาณหนึ่งเดือน โดยรวมแล้วฉันไม่แน่ใจว่า emacs ทำให้ฉันเร็วขึ้น ระบบชี้ตำแหน่งของ mac นั้นแม่นยำและรวดเร็วมากและตัวแก้ไขข้อความ gui ในตัวเหล่านี้มีปุ่มทางลัดมากมายที่สามารถทำได้มากมาย ฉันใช้เวลามากและยังไม่เห็นผลกำไรใด ๆ
user798719

13

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

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


2
หากคุณมีการเชื่อมต่อที่ช้าฉันขอแนะนำให้ใช้ Emacs และ Tramp
John Smith

1
แก้ไขการเปลี่ยนแปลงบน sftp ซิงค์เมื่อบันทึก
Roman A.Taycher

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

13

สำหรับฉันสิ่งที่เพิ่มผลผลิตที่ยิ่งใหญ่คือ

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

11

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


โอ้ใช่! นั่นเป็นหนึ่งในคำสั่งที่หอมหวานที่สุด! ฉันไม่สามารถเขียนโค้ดได้หากไม่มี :-)
Jay Atkinson

8

จากประสบการณ์ของฉันผลผลิตหลักที่ได้รับจาก vim และ emacs (ฉันเป็นคนกลุ่มหนึ่ง แต่ emac เหมือนกันอย่างแน่นอน) ให้คือ:

  • คุณสามารถมีคุณสมบัติเหล่านั้นซึ่ง IDEs ทันสมัยให้ (เช่นเดียวกดปุ่มแก้ไขสร้างวิ่งรอบและเอกสารแบบอินไลน์และเสร็จสิ้นแท็บและ whatnot) แต่คุณไม่ต้อง เพิ่มผลผลิต? คุณจะเห็นเท่าที่คุณต้องการดูเท่านั้น จากประสบการณ์ของฉัน IDE ไม่ได้ทำให้ผู้คนมีประสิทธิผลมากขึ้นเพราะพวกเขาแสดงข้อมูลมากเกินไป (เบราว์เซอร์ทุกประเภท) "พลังพิเศษเล็กน้อยเมื่อคุณต้องการ - แต่ไม่ช้าก็เร็ว" นี้เป็น IMHO ที่เพิ่มประสิทธิผล

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

  • จากประสบการณ์ของฉัน (ฉันพูดได้เฉพาะ vim ที่นี่) ผู้ใช้ vim โดยเฉลี่ยเป็นวิศวกรซอฟต์แวร์ที่ค่อนข้างดี ฉันไม่รู้ว่าทำไมถึงเป็นอย่างนั้น (หรือบางทีฉันก็โชคดี) แต่บางทีคนที่ใช้อุปสรรคในการคุ้นเคยกับเครื่องมือ 'เก่า' เช่น emacs หรือ vim มีความทุ่มเทที่ถูกต้อง (และติดต่อกับคนอื่นเช่นนั้น ). บางทีมันอาจจะเป็นผลกระทบทางอ้อมของบรรณาธิการเหล่านี้ แต่การออกไปเที่ยวกับกลุ่มคนอื่น ๆ (หรือ emac) ในเช่น IRC นั้นค่อนข้างน่าสนใจเนื่องจากคนกลุ่มเดียวกันก็ค่อนข้างสนใจปัญหาด้านวิศวกรรมซอฟต์แวร์ (หรือวิทยาศาสตร์คอมพิวเตอร์) ทุกประเภท . บรรณาธิการเหล่านี้ดูเหมือนจะดึงดูดบุคลิกภาพบางอย่าง :-)


7

"การเพิ่มผลผลิต" ที่ฉันได้รับจากการใช้โคลนอีแมคที่มีน้ำหนักเบาสำหรับโปรแกรมขนาดเล็กก็คือมันเริ่มต้นขึ้นเหมือนสายฟ้าฟาด โดยปกติฉันสามารถใช้โปรแกรมทดสอบด่วนใน C # ได้ก่อนที่ Visual Studio จะโหลดโซลูชัน "แซนด์บ็อกซ์" เสร็จสิ้น

แน่นอนฉันสามารถเปิด Visual Studio ทิ้งไว้ (หรือเปิด VS อื่นถ้าฉันกำลังทำงานอยู่ในเวลานั้น) แต่มันจะถูกสลับออกไปถ้าฉันปล่อยให้มันไม่ได้ใช้งานสักพักเป็นต้น

สำหรับสิ่งที่มีขนาดสำคัญใด ๆ - หรือถ้าฉันไม่รู้จัก API ที่ฉันใช้ค่อนข้างดี IDE คือหนทางข้างหน้า IMO


6
เรียกใช้ emac ในโหมด daemon และ "เวลาเริ่มต้น" เป็นเรื่องเล็กน้อย
aehlke

6

ฉันใช้ gvim สำหรับ windows ในทางเทคนิคแล้วมันเป็นโปรแกรมแก้ไขข้อความ GUI แต่เป็นกลุ่ม ..

สำหรับการเพิ่มประสิทธิภาพการทำงานฉันพบว่า:

  1. ฉันไม่ต้องใช้เมาส์ดังนั้นฉันจึงเร็วกว่า
  2. ค้นหาแทนที่คัดลอก / วาง ฯลฯ ทั้งหมดนั้นเร็วขึ้นด้วยการเชื่อมต่อแบบกลุ่มกับการเคลื่อนไหวของเมาส์ (เมื่อเส้นโค้งการเรียนรู้ถูกเอาชนะ)
  3. ตามที่กล่าวไว้ในความคิดเห็นก่อนหน้านี้ RSI ลดลงอย่างมาก ข้อมือของฉันขอบคุณฉันตั้งแต่ฉันย้ายไปที่กลุ่ม
  4. น้ำหนักเบาและรวดเร็ว

4

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

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

ตัวเร่งการค้นหาทั่วไป * และ # คำเหมาะสำหรับการพลิกดูโค้ด และ% สำหรับวงเล็บที่ตรงกันมีประโยชน์อย่างยิ่ง แน่นอนว่าแทบจะไม่เหมือนมากเมื่อเทียบกับ ctl-] แต่การกดแป้นครึ่งหนึ่งจะเพิ่มขึ้น

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

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


3

ฉันใช้ Vim ค่อนข้างบ่อย มันไม่ได้แทนที่UltraEditสำหรับฉัน เนื่องจากมีการระบุรายการเชิงบวกไว้มากมายฉันเดาว่าฉันจะขัดกับเมล็ดพืชและแสดงรายการที่น่ารำคาญกับ Vim

  • การจัดการ FTP ที่อ่อนแอ ฉัน "จัดเรียง" ไซต์จำนวนมากและไม่สามารถเรียกดูและแก้ไขไฟล์บนเซิร์ฟเวอร์ FTP ระยะไกลได้อย่างง่ายดายถือเป็นข้อบกพร่องที่ยิ่งใหญ่สำหรับฉัน NWRead ไม่ดีพอ
  • ความแปลกของคอนโซลที่สืบทอดมาจากปัญหาเทอร์มินัลทั่วไปที่ดูเหมือนจะทำให้ลีนุกซ์เสียหาย ฉันมักจะใช้PuTTYเพื่อเชื่อมต่อกับกล่อง Linux ของฉัน (ใช้ Ubuntu) และด้วยเหตุผลบางประการปุ่มลูกศรจะจับคู่กับ A / B / C / D ในโหมดแทรก (และปัญหาการรองรับสีทั้งหมด) ใน gVim สามารถแมป ctrl-tab กับ "bn" ได้ง่าย แต่ไม่ใช่ในโหมดคอนโซลปัญหาดังกล่าวมีมาก
  • ตัวเลือกการค้นหา / แทนที่นั้นอ่อนแอมากอินเทอร์เฟซที่ชาญฉลาด การต้องพิมพ์สิ่งทั้งหมดลงในบรรทัดเดียวนั้นไม่ดีพอ ฉันรู้สึกว่าบทสนทนาที่ซับซ้อนมากขึ้นในการพูดว่า UltraEdit ทำให้ฉันมีพลังมากขึ้นในตอนท้ายแม้ว่าการสนับสนุนนิพจน์ทั่วไปที่แท้จริงอาจจะอ่อนแอกว่ามากก็ตาม
  • การพึ่งพารูปแบบแป้นพิมพ์ของสหรัฐอเมริกาแข็งแกร่งเกินไป ปุ่มจำนวนมากที่ใช้สำหรับฟังก์ชั่นหลักเช่น "ไม่ได้พิมพ์บนรูปแบบแป้นพิมพ์ภาษาเดนมาร์กของฉัน (และตั้งอยู่อย่างไม่สะดวกเช่นเดียวกับ $ และอื่น ๆ อีกมากมาย) ทำให้การใช้งานบางฟังก์ชั่นค่อนข้างอึดอัด

สำหรับปัญหา # 2 ให้ติดตั้ง "vim" หรือ "vim-full" เพื่อกำจัดสิ่งนั้น
Adam Plumb

ปัญหาอยู่ที่อื่นฉันกลัว คุณสามารถดูการแก้ไขที่แนะนำได้ที่นี่vim.wikia.com/wiki/…แต่น่าเศร้าที่ไม่มีวิธีใดที่ได้ผลสำหรับฉัน
Svend

Re number 3 ใช้ ctrl-f after: เพื่อรับ windrow แก้ไขที่ทำงานได้อย่างสมบูรณ์สำหรับคำสั่งของคุณ ฯลฯ
ErichBSchulz

greplace เป็นโซลูชันสำหรับ # 3 มีปลั๊กอิน grep อื่น ๆ แต่ฉันต้องการทั้งหมด ทำให้การค้นหา / แทนที่ง่ายกว่าใน IDE หรือโปรแกรมแก้ไขข้อความอื่น ๆ ที่ฉันเคยใช้
domi91c

2

เดสก์ท็อประยะไกลจะแสดงเฉพาะแอปพลิเคชัน Windows ดั้งเดิมอย่างรวดเร็ว เราได้พยายามใช้ Eclipse เพื่อพัฒนาภายใต้ยูนิกซ์ และคุณรู้อะไรไหม? มันเป็นไปไม่ได้เลย

เหตุผลประการที่สองคือเราสามารถขยาย Vims และ Emacs เพื่อทำงานเฉพาะโครงการทั้งหมดจากการเรียกดู DB ด้วยวิธีพิเศษในการเน้นและเติมภาษาเมตาที่เป็นเจ้าของโดยอัตโนมัติ


2

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

เช่นเดียวกับการเน้นไวยากรณ์พฤติกรรมกับไฟล์ที่เฉพาะเจาะจง ฯลฯ ทุกประเภทสามารถปรับแต่งเป็นกลุ่มได้

ไม่แน่ใจว่าคุณสามารถทำได้อย่างง่ายดายในโปรแกรมแก้ไขประเภท GUI หรือไม่



1

ฉันเป็นผู้ใช้ Emacs ที่สมควรได้รับมาหลายปีแล้ว แต่ไม่เคยเข้าจริงๆ. จากนั้นฉันก็เริ่มเรียนรู้ Clojure (Lisp แรกของฉัน) และค้นพบ ParEdit

และนั่นทำให้ฉันรู้สึกแย่

(ดูตัวอย่างบางส่วนได้ที่นี่: https://www.youtube.com/watch?v=D6h5dFyyUX0 )

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

และแตกต่างจาก Eclipse นี่ไม่ใช่การตรวจสอบแบบเรียลไทม์ที่ยุ่งยากซึ่งทำงานอยู่เบื้องหลังเสมอทำให้โปรเซสเซอร์ของฉันลุกไหม้ ไม่มีค่าใช้จ่ายใด ๆ ... ParEdit ทำการเปลี่ยนแปลงโครงสร้างที่ถูกต้องเมื่อฉันขอ

(โดยทั่วไปแล้ว Emacs จะเร็วเท่าที่ต้องการซึ่งแตกต่างจาก Eclipse ที่เหมือนกับการพิมพ์กาว)

สิ่งต่อไปที่ฉันค้นพบคือ Yasnippet ( http://emacswiki.org/emacs/Yasnippet ) อีกครั้งฉันไม่เคยใช้อะไรแบบนี้มาก่อน ไม่ใช่แค่มาโครสำหรับเพิ่มต้นแบบ แต่เป็นรูปแบบไดนามิกที่นำทางได้

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


1

(พื้นเพของฉันคือ Visual Studio และ IDE อื่น ๆ ไม่กี่ปีจากนั้นเป็น Vim 15 ปีและ 6 เดือนล่าสุดกับ Emacs)

อายุยืนยาว - Vim / Emacs เป็น FOSSและมีมานานหลายทศวรรษแล้ว การใช้งานของพวกเขาจะไม่ลดลงและฟีเจอร์ของพวกเขาจะพัง / หายไป / เปลี่ยนแปลงไปมากมายดังนั้นคุณจึงสามารถวางใจในการสร้างคอร์ของกล่องเครื่องมืออาชีพทั้งหมดของคุณโดยอาศัยความเชี่ยวชาญในตัวแก้ไขเพียงตัวเดียว

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

การพัฒนาที่ขับเคลื่อนด้วย REPL - ทั้งสองโหมดมีโหมด "SLIME" ในรูปแบบต่างๆที่ผสานรวมประเภทของ REPL ที่คุณกำลังทำงานด้วย เช่นฉันไม่เคยพบการพัฒนาซ้ำ ๆ ที่ทรงพลังเท่าที่CIDER ให้มา

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

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

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

การนำทาง - แท็กการชอบ paredit เครื่องหมายหน้าต่างแท็บการกระโดดของ vim-rail และบิวด์อินอื่น ๆ อีกมากมาย

ผู้จัดการแพ็คเกจ / ที่เก็บ - Emacs มีไม่กี่อย่าง (elpa, melpa, marmalade) และ Vim ก็ดีเช่นกัน (vundle, pathogen ฯลฯ ) ฉันไม่รู้จักชุมชนรอบ ๆ IDE ที่มีอะไรเทียบได้กับสิ่งเหล่านี้ ฉันเห็นมากกว่า 5,000 package-list-packagesแพ็กเกจ

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

รวมทุกสิ่งอย่างอื่น - ดีบักเกอร์การซิงค์เบราว์เซอร์การคอมไพล์เชลล์การทดสอบการทำงาน

ปรับแต่งได้ไม่ จำกัด - Elisp เป็นภาษาที่ทรงพลังมากสำหรับการขยาย / แก้ไข Emacs VimL เทียบเท่ากับ Vim มีหนังสือที่เขียนทั้ง ปรับแต่งธีมสีและพฤติกรรมเพื่อความสุขของคุณ!


0

ข้อดีอย่างหนึ่งว่าทุกแก้ไขคอนโซลที่ใช้มีมากกว่าบรรณาธิการ GUI คือว่าพวกเขาสามารถทำงานในล็ขั้วเช่นหน้าจอหรือtmux ทำไมถึงดีขนาดนี้?

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

0

เนื่องจาก vim / emac มักใช้โดยโปรแกรมเมอร์และในฐานะผู้ใช้ C # ตั้งแต่ปี 2546 จากอคตินี้เป็นธรรมที่จะทำการเปรียบเทียบที่ไม่เป็นธรรมเป็นอย่างอื่น (อาจเป็น VS C ++ กับ Visual Assist X vs C ++ ในกลุ่ม / emacs):

สำหรับ C # และ Visual Studio:

  1. ฉันเพิ่งนับจำนวนการกดแป้นพิมพ์สำหรับบรรทัดนี้:

        public List<string> Names = new List<string>();
    //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
    //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
    // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
  2. ฉันอ่านเกี่ยวกับคุณลักษณะ emacs สำหรับการกระโดดในรหัส ฉันไม่คิดว่ามันจะมีคุณสมบัติแบบนั้น มันมีคุณสมบัติที่คล้ายกันแม้ว่า นี่คือข้อเสียของ VS. มีคุณสมบัติเล็ก ๆ น้อย ๆ มากมาย แต่เมื่อเวลาผ่านไปพวกเขาก็หยุดทำงาน ล่าสุดฉันตรวจสอบคุณสมบัติการกระโดดไม่ทำงาน แต่เมื่อสองสามปีก่อน VS แนะนำคุณสมบัติการกระโดดแบบกราฟิกใหม่ที่ฉันเคยใช้แทน ต้องใช้เมาส์หรือสัมผัส

  3. นี่คือสิ่งที่ emacs / vi ชนะ หากคุณต้องข้ามไปรอบ ๆ โค้ดเป็นจำนวนมากคุณสมบัติ VS สำหรับสิ่งนี้อาจไม่มีอยู่จริงหรือยังไม่ได้รับการทดสอบเพียงพอ

ปัญหาเกี่ยวกับการนำทาง GUI ที่ใช้เมาส์คือนั้น

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

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

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

c) และมีคุณสมบัติเล็ก ๆ มากมายที่แตกในแต่ละรุ่นดังนั้นนี่คือข้อเสียของ VS

วิธีแก้ไขปัญหา "ซอร์สแบบปิด": เขียน VS ทั้งหมดใน C # จากนั้นอนุญาตให้แก้ไข / แก้ไขโค้ดที่คอมไพล์แล้ว (ที่รันไทม์บันทึกการเปลี่ยนแปลงเป็นโปรแกรมแก้ไขที่เลือกโหลดได้ในการเริ่มต้นครั้งต่อไป) โดยไม่ปล่อยซอร์ส สิ่งนี้สามารถทำได้โดยให้ตัวถอดรหัสส่งออกโค้ดเหมือนเดิมเมื่อเข้าสู่ 180 องศาจากการทำงานของคอมไพเลอร์ดั้งเดิม จากนั้นไบนารีจะกลายเป็นซอร์สโค้ดและเรียกใช้งานได้แทนความยุ่งเหยิงของไฟล์. cs และไฟล์. exe เป็นต้นมีเครื่องมือของบุคคลที่สามที่เกือบจะทำสิ่งนี้ได้แล้วดังนั้นการ "modding" C # exe จึงค่อนข้างไม่สำคัญ แต่ฉันขอเสนอให้ทำเช่นนี้ ข้อสรุปเชิงตรรกะ: รวมแม้แต่ความคิดเห็นใน. exe และ. dll ไฟล์ยังคงมีขนาดเล็กเมื่อเทียบกับแอป C / C ++ ที่คอมไพล์แล้ว การเพิ่มประสิทธิภาพ? คุณยังสามารถใส่โค้ดที่ปรับให้เหมาะสมไว้ล่วงหน้า เมื่อ modder mods exe ในขณะที่แอปกำลังทำงานอยู่ "AST" ที่ไม่ใช่ modded และไบนารีที่ปรับให้เหมาะสมที่มาพร้อมกันจะถูกเสียบกลับแนวคิดเดียวกับในคอมไพเลอร์ C # แต่นำไปเพิ่มเติม ขั้นตอนต่อไป: เขียนระบบปฏิบัติการทั้งหมดในภาษานี้ดังนั้นแม้ว่า Windows จะเป็นแบบปิด แต่ก็สามารถแก้ไขได้เล็กน้อยเนื่องจากซอร์สโค้ดมาพร้อมกับไบนารีทุกตัว ไม่มีการตั้งค่าสภาพแวดล้อมการคอมไพล์การเชื่อมโยง เพียงแค่ปรับเปลี่ยนระบบปฏิบัติการในขณะที่กำลังทำงานอยู่ ปิดการเปรียบเทียบ: หากคุณเขียนเว็บเบราว์เซอร์ใน Common Lisp คุณสามารถแก้ไขเว็บเบราว์เซอร์ได้โดยไม่ต้องหยุดและสร้างหน้าเว็บในภาษาเดียวกับเบราว์เซอร์ สามารถแก้ไขได้เล็กน้อยเนื่องจากซอร์สโค้ดมาพร้อมกับไบนารีทุกตัว ไม่มีการตั้งค่าสภาพแวดล้อมการคอมไพล์การเชื่อมโยง เพียงแค่ปรับเปลี่ยนระบบปฏิบัติการในขณะที่กำลังทำงานอยู่ ปิดการเปรียบเทียบ: หากคุณเขียนเว็บเบราว์เซอร์ใน Common Lisp คุณสามารถแก้ไขเว็บเบราว์เซอร์ได้โดยไม่ต้องหยุดและสร้างหน้าเว็บในภาษาเดียวกับเบราว์เซอร์ สามารถแก้ไขได้เล็กน้อยเนื่องจากซอร์สโค้ดมาพร้อมกับไบนารีทุกตัว ไม่มีการตั้งค่าสภาพแวดล้อมการคอมไพล์การเชื่อมโยง เพียงแค่ปรับเปลี่ยนระบบปฏิบัติการในขณะที่กำลังทำงานอยู่ ปิดการเปรียบเทียบ: หากคุณเขียนเว็บเบราว์เซอร์ใน Common Lisp คุณสามารถแก้ไขเว็บเบราว์เซอร์ได้โดยไม่ต้องหยุดและสร้างหน้าเว็บในภาษาเดียวกับเบราว์เซอร์

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