วิธีสร้างสภาพแวดล้อมการพัฒนาแบบไม่ใช้เมาส์ของคุณเอง
เผยแพร่แล้ว: 2022-03-10กาลครั้งหนึ่ง ในดินแดนมหัศจรรย์แห่งการพัฒนาซอฟต์แวร์ มีนักพัฒนารุ่นเยาว์ คนรับใช้ที่ถ่อมตนของคุณ ค้นพบ Linux เป็นครั้งแรก ทันใดนั้น ฉันก็สามารถเข้าถึง Linux shell ซึ่งเป็นเครื่องมือที่มีหลายวิธีในการทำให้ทุกอย่างที่ฉันไม่ต้องการทำเป็นอัตโนมัติซ้ำแล้วซ้ำเล่า
แต่อูบุนตูไม่มีข้อเสีย ฉันมักจะตกเป็นเหยื่อของข้อบกพร่องในการแสดงผลและการขัดข้อง และมันเริ่มช้าลงเรื่อยๆ เมื่อเวลาผ่านไป
อยู่มาวันหนึ่ง มีบางสิ่งที่เลวร้ายเกิดขึ้น ฉันต้องอัปเดต Ubuntu เป็นเวอร์ชันหลักถัดไป ทุกอย่างพังทลาย ฉันไม่สามารถเริ่มระบบได้อีกต่อไป ฉันไม่รู้ว่าจะแก้ปัญหาที่เผชิญได้อย่างไรเพราะฉันไม่รู้ว่า Linux ทำงานอย่างไรภายใต้ประทุน อูบุนตูกำลัง สรุปสาระสำคัญ ทั้งหมดให้ฉันไม่สนใจเรื่องนี้
ฉันต้องติดตั้งทุกอย่างใหม่ด้วยตนเอง — Ubuntu และเครื่องมือทั้งหมดของฉัน ส่วนที่แย่ที่สุดคือการกำหนดค่าทุกอย่างใหม่ ทั้งหมดนี้ฉันต้องใช้เวลาหลายวันกว่าจะกลับมาใช้ระบบเดิมก่อนที่จะเกิดความผิดพลาด แต่ฉันไม่รู้ทางเลือกอื่นเลย ดังนั้นฉันจึงใช้ Ubuntu ต่อไปอีกหลายปี ในช่วงเวลานี้ ฉันไม่เคยจัดการอัปเดตเป็นเวอร์ชันหลักถัดไปโดยไม่จำเป็นต้องติดตั้งทุกอย่างใหม่ด้วยตนเองครั้งแล้วครั้งเล่า
ชีวิตของฉันในฐานะนักพัฒนาเปลี่ยนไปอีกครั้งเมื่อบริษัทของฉันจ้างนักพัฒนาที่ยอดเยี่ยมสองคน พวกเขารู้มากเกี่ยวกับลินุกซ์และดิสทริบิวชันต่างๆ ที่ฉันสามารถใช้ได้ พวกเขาแนะนำฉัน แสดงให้ฉันเห็นเครื่องมือที่แก้ปัญหาทั้งหมดที่ฉันมีกับอูบุนตู เครื่องมือเหล่านี้ ปรับปรุงเวิร์กโฟลว์ของฉันอย่างมาก พวกเขาแสดงให้ฉันเห็นว่ามันใช้งานได้จริงแค่ไหนสำหรับนักพัฒนาที่จะคอยควบคุมคีย์บอร์ดให้มากที่สุด
สิ่งนี้เกิดขึ้นเมื่อหกปีที่แล้ว วันนี้ฉันยังคงใช้สภาพแวดล้อมการพัฒนาแบบเดิม ฉันใช้แป้นพิมพ์ 92.8% ใน การจัดการเครื่องมือทั้งหมดของฉัน โดยใช้การกดแป้นที่สมเหตุสมผลและจดจำได้ง่าย ฉันสามารถติดตั้งใหม่ทั้งระบบได้โดยใช้สคริปต์จำนวนมากที่ฉันเคยเขียน รวมถึงเครื่องมือทั้งหมดที่ฉันใช้และการกำหนดค่าของสคริปต์เหล่านั้น
วันนี้ ฉันต้องการแบ่งปันเครื่องมือเหล่านี้กับคุณ เพื่อที่คุณจะสามารถเพิ่มประสิทธิภาพและความสะดวกสบายในการทำงานประจำวันของคุณได้เช่นกัน พวกเขาทำงานร่วมกันได้ดี — กำหนดรูปแบบสิ่งที่ฉันเรียกว่า Mouseless Development Environment ของฉัน ให้ละเอียดยิ่งขึ้น เราจะพูดถึง:
- เหตุใดการใช้เชลล์ Linux จึงมีประสิทธิภาพมากเมื่อทำงานกับข้อความธรรมดา (รวมถึงโค้ด)
- ทำไมต้องใช้ Arch Linux ที่น่ากลัว
- ข้อดีของตัวจัดการหน้าต่างปูกระเบื้อง
- วิธีมีประสบการณ์เทอร์มินัลที่ยอดเยี่ยมกับ URxvt, tmux และ tmuxp
- ทำไม Vim สามารถกลายเป็นเพื่อนที่ดีที่สุดของคุณได้
หมายเหตุ : เครื่องมือที่ฉันแนะนำในบทความนี้ทำงานบนระบบที่ใช้ Linux คุณยังสามารถใช้กับ macOS ได้ ยกเว้น i3 สำหรับ Windows วิธีที่ง่ายที่สุดคือการใช้ Windows Linux Subsystem (WSL) เพื่อติดตั้งและใช้งาน
ฉันจะไม่มีวันค้นพบวิธีการทำงานใหม่นี้โดยไม่ได้ลองใช้เครื่องมือเหล่านี้ นั่นเป็นเหตุผลที่ฉันสนับสนุนให้คุณติดตั้ง ทดลองกับมัน และดูด้วยตัวคุณเองว่าคุณตกหลุมรักเหมือนฉันไหม
Mouseless กับเชลล์
ในฐานะนักพัฒนา แทบจะเป็นไปไม่ได้เลยที่จะหลีกเลี่ยงการใช้เชลล์ นี่เป็นเครื่องมืออันทรงพลังที่ช่วยลดความซับซ้อนของขั้นตอนการทำงานโดยทำให้งานที่น่าเบื่อทั้งหมดเป็นแบบอัตโนมัติ
ประโยชน์ของเชลล์
ก่อนที่จะพูดเกี่ยวกับประโยชน์ของการใช้เชลล์และเทอร์มินัล เรามาอธิบายสั้นๆ ก่อนว่าแนวคิดทั้งสองนี้มีความแตกต่างกันอย่างไร
เทอร์มินัลเป็นส่วนต่อประสานกราฟิกที่ให้คุณโต้ตอบกับเชลล์ได้ บน Linux เชลล์นี้มักจะเป็น Bash แต่ก็สามารถเป็นอย่างอื่นได้เช่นกัน eh Zsh เชลล์เป็นล่าม คุณสามารถ ป้อนด้วยคำสั่งต่างๆ และจะดำเนินการตามคำสั่งเหล่านั้นเพื่อดำเนินการบางอย่าง บางครั้งมันก็ให้ผลลัพธ์กลับมาเช่นกัน คำว่า "บรรทัดคำสั่ง" และ "เชลล์" เป็นคำพ้องความหมาย
หากเราจะเปรียบเทียบสภาพแวดล้อมการพัฒนาแบบไม่ใช้เมาส์กับระบบสุริยะ เปลือกก็จะเป็นดวงอาทิตย์ และอย่างอื่นจะหันกลับมา เป็นเพราะเชลล์มีประสิทธิภาพมาก: ช่วยให้คุณสามารถเรียกใช้โปรแกรมขนาดเล็กจำนวนมากซึ่งทำงานร่วมกันได้เป็นอย่างดี เรียกว่า CLIs (Command-Line Interfaces)
ข้อได้เปรียบที่สำคัญของเครื่องมือเหล่านี้: เป็นเครื่องมือที่เรียบง่ายและแยกจากกันได้ แต่คุณสามารถ เชื่อมโยงมันเพื่อผลลัพธ์อันทรงพลัง ตัวอย่างเช่น คุณสามารถใช้ "history", "sort", "uniq" และ "head" ทั้งหมดของ CLI เพื่อแสดง CLI ที่คุณใช้บ่อยที่สุดและความถี่ในการใช้งานได้
มี CLI มากมายที่พร้อมใช้งาน ประการแรกเนื่องจากเชลล์ Linux ใช้งานได้นาน นักพัฒนามีเวลาในการพัฒนาเครื่องมือมากมายและทำให้เชื่อถือได้ ประการที่สอง เนื่องจาก การพัฒนา CLI ทำได้ง่ายกว่า GUI (Graphical User Interfaces) การออกแบบและการใช้งานอินเทอร์เฟซแบบกราฟิกเหล่านี้ต้องใช้ความพยายามอย่างมาก CLI มี อินเทอร์เฟซแบบข้อความ เท่านั้น ซึ่งง่ายต่อการพัฒนา เปลี่ยนแปลง และบำรุงรักษา
นอกจากนี้ยังเป็นสาเหตุที่ CLI ทำงานได้รวดเร็ว ไม่จำเป็นต้องวุ่นวายกับจอแสดงผลและองค์ประกอบกราฟิกอื่นๆ มันเป็นหนึ่งในปัญหาหลักของฉันกับ Ubuntu: สภาพแวดล้อมเดสก์ท็อปของ Unity นั้นค่อนข้างหนัก ช้า และบั๊กกี้ อย่างน้อยในประสบการณ์ของฉัน การใช้ GUI เพิ่มเติมด้านบนทำให้สิ่งต่างๆ แย่ลง
ข้อได้เปรียบที่สำคัญอีกประการหนึ่งของบรรทัดคำสั่ง : คุณสามารถเขียนเชลล์สคริปต์เพื่อทำให้งานที่น่าเบื่อทั้งหมดที่คุณทำซ้ำทุกวันเป็นไปโดยอัตโนมัติ ตัวอย่างเช่น หากคุณต้องการปรับขนาดรูปภาพให้มีขนาดเท่ากันบ่อยมาก คุณสามารถเขียนสคริปต์สำหรับสิ่งนั้นได้ หากคุณค้นหาไฟล์บางประเภทบ่อยครั้ง คุณสามารถทำให้เป็นอัตโนมัติได้เช่นกัน ท้องฟ้ามีขีดจำกัด
CLIs ก็มีข้อเสียเช่นกัน การใช้งานสำหรับผู้เริ่มต้นใช้งานนั้นค่อนข้างยุ่งยาก แต่มีหลายวิธีในการรับสิ่งที่คุณต้องการอย่างรวดเร็ว แม้ว่าคุณจะไม่ทราบวิธีใช้ CLI เฉพาะก็ตาม
สุดท้ายนี้ หากคุณมีงานบางอย่างที่ต้องทำบนเซิร์ฟเวอร์ระยะไกล คุณมักจะจบลงด้วยการใช้เชลล์ พวกมันไม่มีอินเทอร์เฟซแบบกราฟิกเป็นส่วนใหญ่ ดังนั้นคุณไม่มีทางเลือกอื่น ในกรณีเหล่านี้ คุณจำเป็นต้องรู้แนวทางของคุณในบรรทัดคำสั่ง
วิธีการแบบไม่ใช้เมาส์
เนื่องจากเชลล์มีอินเทอร์เฟซแบบข้อความ มือของคุณจึงอยู่บนแป้นพิมพ์เมื่อคุณใช้งาน นี่คือสิ่งที่ฉันไม่เคยคิดเลยจริงๆ ในช่วงปีแรกๆ ในฐานะนักพัฒนา แต่เป็นข้อได้เปรียบอย่างมาก
จากประสบการณ์ของผม การหลีกเลี่ยงการ เคลื่อนไหวของมือหลายร้อยครั้งระหว่างแป้นพิมพ์และเมาส์ ช่วยประหยัดพลังงานทางปัญญาได้มาก ฉันรู้สึกตกใจเมื่อพบว่ารู้สึกสบายเพียงใดเมื่อฉันพยายามจะยึดแป้นพิมพ์ เป็นโบนัส ฉันรู้สึกเหมือนเป็นแฮ็กเกอร์ที่ใช้แป้นพิมพ์ของฉันกับเปลือกของฉัน ถึงแม้ว่าฉันจะเขียนแค่รายการซื้อของ! มันยอดเยี่ยมแค่ไหน?
ฉันต้องยอมรับว่าฉันสงสัยมากเกี่ยวกับแนวคิด "ไร้เมาส์" นี้ก่อนที่จะลองทำ ด้วยเครื่องมือที่ฉันอธิบายด้านล่าง ฉันไม่จำเป็นต้องเปลี่ยนนิสัยทั้งหมดของฉันจากวันหนึ่งเป็นวันอื่น คุณสามารถใช้เมาส์กับสิ่งเหล่านี้ได้เช่นกัน แต่พวกมันเปล่งประกายมากเมื่อจัดการด้วยคีย์บอร์ด
แม้ว่าจะไม่เคยได้รับการพิสูจน์จริงๆ ก็ตาม ฉันยังเชื่อว่า การใช้แป้นพิมพ์ทำให้เรามีประสิทธิภาพมากขึ้น ตามที่หนังสือ The Pragmatic Programmer ชี้ให้เห็น:
“การใช้เฉพาะการกดแป้นสำหรับการแก้ไขทั่วไปจะมีประสิทธิภาพมากกว่าการใช้คำสั่งด้วยเมาส์หรือเมนู เพราะมือของคุณไม่เคยออกจากคีย์บอร์ด”
ดังที่กล่าวไปแล้ว ประสิทธิภาพไม่ใช่เป้าหมายหลักที่นี่ ฉันชอบอยู่บนแป้นพิมพ์และใช้เครื่องมือเหล่านี้ทั้งหมด เพราะฉันสามารถจดจ่อกับงานที่ทำอยู่ได้ทั้งหมด เป็นแรงบันดาลใจให้ฉันเริ่มทำงานและทำงานให้เสร็จ
The Bedrock: Arch Linux
ในช่วงเริ่มต้นของการเดินทางโดยไม่ใช้เมาส์ เพื่อนใหม่คนหนึ่งของฉันแนะนำให้ฉันใช้ Arch Linux แทน Ubuntu อีกครั้ง ความสงสัยกำลังคืบคลาน ความสงสัยกำลังบุกรุกสมองที่น่าสงสารของฉัน อาร์ค ลินุกซ์? การกระจาย Linux ที่น่ากลัวนี้ คุณต้องติดตั้งและกำหนดค่าด้วยตนเองทั้งหมดหรือไม่ ระบบที่ไม่เสถียรนี้กลายเป็นเรื่องตลกสำหรับหลาย ๆ คน?
บางครั้งแบบแผนไม่เกี่ยวข้องกับความเป็นจริง และ Arch Linux เป็นตัวอย่างที่สมบูรณ์แบบสำหรับแนวคิดนี้ ฉันเคยใช้ Windows (ตั้งแต่ 98 ถึง 7) macOS และฉันก็ลองใช้ลีนุกซ์รุ่นอื่นด้วย ข้อสรุปของฉันโดยไม่ต้องสงสัย: Arch Linux มีเสถียรภาพมากที่สุด
ดังที่กล่าวไว้ Arch Linux ไม่จำเป็นสำหรับสภาพแวดล้อมการพัฒนาแบบไม่ใช้เมาส์ คุณสามารถใช้เครื่องมืออื่นๆ ทั้งหมดที่อธิบายไว้ในบทความนี้กับลีนุกซ์รุ่นอื่นๆ ได้เช่นกัน คุณยังสามารถใช้กับ macOS (ยกเว้น i3) หรือ Windows หากคุณมี Windows Subsystem for Linux (WSL) แต่ก่อนที่คุณจะทำเช่นนั้น ให้ฉันบอกคุณ ว่าทำไมคุณจึงควรพิจารณา Arch Linux อย่างจริงจัง
ระบบโรลลิ่งสรีลีส
Arch Linux มี ระบบเผยแพร่แบบกลิ้ง หมายความว่าคุณจำเป็นต้องอัปเดตทั้งระบบบ่อยๆ ทุกสัปดาห์หรือทุกสองสัปดาห์ ในการกลับมาใช้ Ubuntu อีกครั้ง มันมี ระบบสนับสนุนระยะยาว : คุณต้องอัปเดตปีละสองครั้งหรือน้อยกว่านั้นหากต้องการ
นักพัฒนาหลายคนคิดว่าระบบการเผยแพร่แบบต่อเนื่องทำให้สภาพแวดล้อมการพัฒนาของคุณไม่เสถียร ซึ่งอธิบายชื่อเสียงของ Arch Linux บางส่วน แต่ฉันไม่เคยมีปัญหากับการใช้ชีวิตประจำวันเป็นเวลาหกปีและเพื่อนของฉันก็ใช้มันเช่นกัน อีกด้านหนึ่ง ข้อดีของระบบลูกกลิ้ง คือ:
- แอปพลิเคชันทั้งหมดที่ฉันใช้อัปเดตอยู่เสมอ ไม่จำเป็นต้องคอมไพล์ด้วยตนเองเพื่อให้มีเวอร์ชันล่าสุดเมื่อจำเป็น
- การอัปเดตระบบของคุณมักจะหมายความว่าจะมีการแนะนำการเปลี่ยนแปลงน้อยลงในคราวเดียว ส่งผลให้มีโอกาสเกิดปัญหาน้อยลงด้วย
ฉันบอกคุณถึงประสบการณ์ของฉันกับ Ubuntu และข้อขัดข้องที่ฉันมีเมื่ออัปเดต ฉันไม่เคยมีปัญหาใดๆ กับ Arch Linux
ทุกอย่างที่คุณต้องการ
นอกจากนี้ ที่เก็บของ Arch Linux มีขนาดใหญ่มาก เป็นไปได้มากที่คุณจะพบเครื่องมือทุกอย่างที่คุณต้องการ หากไม่เป็นเช่นนั้น คุณสามารถดู AUR (ที่เก็บผู้ใช้ Arch) ซึ่งมีทุกอย่างอื่น AUR ไม่ใช่ที่เก็บข้อมูลอย่างเป็นทางการ ดังนั้นจึงอาจมีปัญหาด้านความปลอดภัยกับแอปพลิเคชันที่พบที่นั่น อีกครั้ง ฉันไม่เคยมีปัญหากับพวกเขาเลย แต่ก็เป็นไปได้ ตราบใดที่คุณยึดติดกับที่เก็บข้อมูลอย่างเป็นทางการ และคุณไม่ได้ติดตั้งทุกอย่างและทุกอย่างจาก AUR คุณจะไม่มีปัญหาใดๆ
โอกาสในการเรียนรู้
ให้พูดถึงด้วยว่า Arch Linux เป็นการกระจายที่น้อยมาก มันไม่ได้กำหนดแอปพลิเคชั่นที่ไร้ประโยชน์มากมายเมื่อคุณติดตั้ง คุณต้องติดตั้งการกระจายทั้งหมดด้วยตนเองโดยใช้เชลล์ งานนี้อาจดูน่ากลัว แต่ในอีกด้านหนึ่ง คุณจะได้เรียนรู้มากมายจากประสบการณ์
ดังที่ฉันได้กล่าวไว้ในตอนต้นของบทความนี้ การ รู้ขั้นต่ำว่าระบบที่ใช้ Linux ทำงานอย่างไรภายใต้ประทุน สามารถช่วยคุณได้เมื่อระบบของคุณทำงานผิดปกติหรือเมื่อเกิดปัญหา มันไม่ได้ซับซ้อนอย่างที่คิด และหากคุณเป็นนักพัฒนา ฉันก็เถียงว่ามันบังคับ เว็บ โทรศัพท์ของคุณ หรือ Raspberry Pie ทำงานบน Linux ในปัจจุบัน
สุดท้าย แต่ไม่ท้ายสุด Arch Wiki เป็นสถานที่ที่ดีที่สุดที่คุณสามารถหาทุกอย่างที่เกี่ยวข้องกับ Linux มันช่วยฉันได้มากในช่วงหลายปีที่ผ่านมา แม้ว่าฉันจะใช้ Ubuntu เป็นที่ที่ดีสำหรับการ แก้ไขปัญหาระบบของคุณ และค้นหาเครื่องมือใหม่
การจัดการ Windows ของคุณด้วย i3
ตอนนี้เราได้ทบทวนแล้วว่าเหตุใด Arch Linux จึงเป็นรากฐานที่มั่นคงสำหรับ Mouseless Development Environment ของคุณ มาดูกันว่าเราสามารถเพิ่มอะไรได้บ้าง
แต่ก่อนอื่นบิตของทฤษฎี ระบบปฏิบัติการมักจะมีสามชั้น มากหรือน้อยคู่กัน:
- เคอร์เนล ซึ่งทำงานโดยตรงกับฮาร์ดแวร์ของคอมพิวเตอร์ของคุณ
- เชลล์ อินเทอร์เฟซสำหรับคุณ หรือบางแอปพลิเคชัน เพื่อโต้ตอบกับเคอร์เนล
- เลเยอร์การแสดงผล ที่ด้านบน เช่น ตัวจัดการเดสก์ท็อปหรือตัวจัดการหน้าต่างแบบเรียงต่อกัน
Gnome หรือ Unity เป็นทั้งผู้จัดการเดสก์ท็อปสำหรับระบบที่ใช้ Linux พวกเขาจัดการหน้าต่างของคุณและสิ่งอื่น ๆ อีกมากมาย เช่น แถบสถานะหรือตัวเรียกใช้แอปพลิเคชันของคุณ ตัวจัดการหน้าต่างแบบเรียงต่อกันเป็นอีกทางเลือกหนึ่งสำหรับผู้จัดการเดสก์ท็อป และมักจะเล็กกว่าและเน้นไปที่การจัดการหน้าต่างมากกว่า
ตัวจัดการหน้าต่างแบบเรียงต่อกัน i3 นั้นเบามากจริง ๆ ฉันใช้มันตอนนี้บนคอมพิวเตอร์อายุ 10 ปี (Lenovo x220) และมันไม่ทำงานช้าลง นอกจากนี้ยังใช้งานง่าย เอกสารประกอบดีมาก และที่สำคัญที่สุด คุณสามารถจัดการหน้าต่างด้วยแป้นพิมพ์เท่านั้น (หากต้องการ)
พื้นฐานของ i3 นั้นเรียบง่าย: คุณสามารถเปิดหน้าต่างใน พื้นที่ทำงานต่างๆ ที่แสดงทั้งหน้าจอ ได้ คล้ายกับเดสก์ท็อปเสมือนที่ผู้จัดการเดสก์ท็อป Linux จำนวนมากมี จากนั้น เมื่อคุณเปิดแอปพลิเคชั่นโปรด หน้าจอจะถูกแชร์โดยอัตโนมัติขึ้นอยู่กับจำนวนหน้าต่างบนหน้าจอ
ตัวอย่างเช่น หากคุณเปิด Firefox หน้าต่างจะใช้พื้นที่ 100% ของหน้าจอ หากคุณเปิด Firefox สามอินสแตนซ์ แต่ละอินสแตนซ์จะใช้ 33% ของหน้าจอ
คุณยังสามารถเปลี่ยนเลย์เอาต์ของหน้าต่างได้อีกด้วย แทนที่จะให้หน้าต่างทั้งหมดปรากฏบนหน้าจอ คุณสามารถวางซ้อนกันและผ่านหน้าต่างทั้งหมดได้ด้วยการกดแป้นพิมพ์ง่ายๆ หากคุณต้องการหน้าต่างลอย "ปกติ" คุณสามารถกำหนดค่าได้เช่นกัน
เป้าหมายของ i3 คือการทำให้การจัดการหน้าต่างทั้งหมดของคุณง่ายขึ้น แทนที่จะใช้เมาส์เพื่อย้ายและปรับขนาดทุกครั้งที่คุณเปิดรายการใหม่ คุณสามารถใช้การกดแป้นพิมพ์เพื่อดำเนินการเดียวกัน ได้เฉพาะเมื่อคุณต้องการ
มันดูซับซ้อนเกินไปหรือเปล่า? ฉันมีประสิทธิภาพกับ i3 สองวันหลังจากลองใช้ ฉันไม่ใช่อัจฉริยะ ถ้าฉันทำได้ คุณก็ทำได้เช่นกัน
เชอร์รี่บนเค้ก: เช่นเดียวกับเครื่องมือทุกอย่างที่อธิบายไว้ในบทความนี้ คุณสามารถปรับแต่ง i3 และการกดแป้น ตามที่คุณพอใจได้
ข้อเสียเปรียบเพียงอย่างเดียวของ i3: ไม่พร้อมใช้งานสำหรับ macOS แต่มี ทางเลือกอื่น ที่ดี เช่น ตัวจัดการหน้าต่างแบบเรียงต่อกัน Amethyst หรือ Divvy
เพิ่มระดับเทอร์มินัลของคุณด้วย URxvt, tmux และ tmuxp
เทอร์มินัลคืออินเทอร์เฟซที่ให้คุณเข้าถึงเชลล์ได้ แม้ว่าเชลล์จะเป็นของจริง แต่เราสามารถทำให้ใช้งานได้ง่ายขึ้นด้วยเครื่องมือสองสามอย่าง
เส้นทางแห่งความเรียบง่ายด้วย URxvt
ฉันชอบความเรียบง่าย และนั่นเป็นส่วนหนึ่งที่ทำให้ฉันชอบสภาพแวดล้อมการพัฒนาที่ฉันอธิบายไว้ในบทความนี้ เมื่อพูดถึงเรื่องนี้ URxvt เป็นหนึ่งในเทอร์มินัลที่ง่ายที่สุดที่คุณสามารถหาได้ นอกจากนี้ยังรวดเร็วและเชื่อถือได้ ในหกปี ผมไม่เคยเห็นมันพังหรือช้าลงเลย มันทำในสิ่งที่ควรทำ: ให้คุณใช้เชลล์ได้ ไม่มากไม่น้อย.
เทอร์มินัล Multiplexer พร้อม tmux
แม้ว่าฉันจะชอบความเรียบง่ายของ URxvt แต่ฉันก็ยังต้องการมีเทอร์มินัลมัลติเพล็กเซอร์ที่ดีที่ฉันวางใจได้ เช่น tmux
เทอร์มินัลมัลติเพล็กเซอร์คืออะไร? ช่วยให้คุณสามารถเปิดเซสชันที่มีหลายเชลล์ เซสชันเหล่านี้ยังคงอยู่ในเบื้องหลัง: แม้ว่าเทอร์มินัลของคุณจะขัดข้องหรือหากคุณปิดโดยไม่ได้ตั้งใจ เชลล์ของคุณก็จะไม่หายไป คุณสามารถกู้คืนได้ในเทอร์มินัลอื่นทุกเมื่อที่คุณต้องการ (ราวกับว่าไม่มีอะไรเกิดขึ้น)
สิ่งนี้มีประโยชน์บนคอมพิวเตอร์ของคุณ แต่จะดียิ่งกว่าบนเซิร์ฟเวอร์ระยะไกล ตัวอย่างเช่น คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH เรียกใช้สคริปต์ ปิดการเชื่อมต่อ SSH และเทอร์มินัลบนเครื่องท้องถิ่นของคุณ และกลับบ้านได้ เนื่องจากเชลล์ของคุณยังคงทำงานอยู่บนเซิร์ฟเวอร์ของคุณ ต้องขอบคุณ tmux สคริปต์ของคุณก็จะยังทำงานได้เช่นกัน
นั่นไม่ใช่ทั้งหมด: tmux เป็นสินค้าประเภทที่ไม่ค่อยมีใครรู้จัก ในแง่ดี คุณสามารถ ใช้เพื่อเปิดหน้าต่างหลายบานที่มีบานหน้าต่างหลายบาน ในเทอร์มินัลเดียว คุณสามารถคิดหน้าต่างเป็นเทอร์มินัลทั้งหมด และบานหน้าต่างเป็นเชลล์ที่ใช้เปอร์เซ็นต์ของหน้าต่าง
มันเตือนคุณถึง i3 หรือไม่? มันใช้หลักการเดียวกัน แต่สามารถสร้างเปลือกใหม่ได้เท่านั้น นั่นเป็นเหตุผลที่ผู้ใช้จำนวนมากที่พอใจกับ i3 ไม่เห็นประโยชน์ในการใช้ tmux โดยส่วนตัวชอบใช้ทั้งสองแบบ
เช่นเคย คุณสามารถจัดการหน้าต่างและบานหน้าต่างของ tmux ด้วยแป้นพิมพ์ของคุณ และคุณสามารถกำหนดค่า tmux เองได้ตามความต้องการที่บ้าที่สุดของคุณ
tmuxp
ลองนึกภาพว่าคุณต้องการใช้ tmux สำหรับแอปพลิเคชันที่รบกวนการทำงานที่คุณกำลังพัฒนาอยู่ในขณะนี้ คุณต้องเปิดเทอร์มินัลก่อน จากนั้น คุณต้องสร้างหน้าต่างของ tmux ได้มากเท่าที่คุณต้องการ และแบ่งหน้าต่างเหล่านี้ด้วยบานหน้าต่างที่คุณต้องการ
ข้อควร จำ : บานหน้าต่างแสดงถึงเชลล์ ในแต่ละเชลล์เหล่านี้ คุณสามารถรัน CLI ทั้งหมดที่คุณต้องการสำหรับโปรเจ็กต์เฉพาะ: ตัวอย่างเช่น การรันคอนเทนเนอร์ docker หรือการแสดงบันทึกบางอย่าง
แต่คุณยังสามารถทำให้ทุกอย่างเป็นอัตโนมัติได้ และนี่คือจุดที่ พลังที่แท้จริงของ tmux — ในบริบทของสภาพแวดล้อมการพัฒนา — เปล่งประกายจริงๆ เมื่อใช้ CLI อื่นที่เรียกว่า tmuxp คุณสามารถเขียนไฟล์การกำหนดค่า YAML ว่าหน้าต่าง บานหน้าต่าง และคำสั่งใดที่คุณต้องการ จากนั้น คุณสามารถโหลดการกำหนดค่านี้และสร้างเซสชัน tmux ที่คุณกำหนดเองโดยอัตโนมัติ
ฉันมีไฟล์คอนฟิกูเรชันหนึ่งไฟล์สำหรับแต่ละโปรเจ็กต์ของฉัน ช่วยประหยัดเวลาและพลังงานได้มาก ดังที่ฉันได้กล่าวไว้ข้างต้น นี่เป็นหนึ่งในประโยชน์หลักของการใช้เชลล์
Editor Plus Shell เท่ากับ IDE
เนื่องจากเชลล์ทรงพลังมาก ทำไมไม่ให้ตัวแก้ไขทำงานโดยตรงในนั้นล่ะ ทำไมไม่ใช้ Vim?
เช่นเดียวกับ Arch Linux Vim มีชื่อเสียงที่เรียนรู้ได้ยาก มีความละเอียดอ่อนมากขึ้น: มันค่อนข้างง่ายที่จะทำงานด้วยมัน แต่ต้องใช้เวลานานกว่าจะเชี่ยวชาญ หากคุณใช้ Linux และติดตั้ง Vim ไว้ คุณสามารถ เรียนรู้พื้นฐานได้ภายใน 20 นาที โดยเรียกใช้ vimtutor
ในเชลล์ของคุณ
Vim มีฟังก์ชันมากมายที่สามารถขยายเพิ่มเติมได้ด้วยปลั๊กอินจำนวนนับไม่ถ้วน นอกจากนี้ คุณสามารถโต้ตอบกับเชลล์ของคุณโดยตรงโดยใช้ Vim โดยใช้ CLI ใดก็ได้ที่คุณต้องการโดยตรงในโปรแกรมแก้ไขของคุณ มันจะแปลง Vim เป็น IDE ที่สมบูรณ์
Vim มีข้อได้เปรียบที่สำคัญอีกประการหนึ่ง: คุณสามารถใช้เพื่อพัฒนาในภาษาโปรแกรมต่างๆ ได้ ฉันไม่ชอบสลับไปมาระหว่าง IDE ต่างๆ ทุกครั้งที่ต้องเขียนโปรแกรมใน PHP, Golang หรือ Clojure อินเทอร์เฟซแตกต่างกัน ฉันต้องกำหนดค่าตัวแก้ไขเหล่านี้แยกกัน และฉันไม่สามารถบันทึกการกำหนดค่าที่ใดที่หนึ่งเพื่อใช้อีกครั้งเมื่อฉันติดตั้งเครื่องมือเหล่านี้ใหม่
ด้วย Vim ฉันสามารถเขียนโค้ดในภาษาใดก็ได้ที่ฉันต้องการในขณะที่ อยู่ในโปรแกรมแก้ไขเดียวกัน เช่นเดียวกับ VS Code คุณสามารถใช้ LSP (Language Server Providers) เพื่อเปิดใช้งานการเติมข้อมูลอัตโนมัติ linting และ refactoring อัตโนมัติสำหรับภาษาการเขียนโปรแกรมทั่วไปส่วนใหญ่ (และแม้แต่ภาษาที่ลึกลับกว่า)
เป็นกลุ่มยังเร็ว ไม่ต้องใช้ทรัพยากรจำนวนมากในการทำงาน ฉันมักจะมีตัวแก้ไข 6 หรือ 7 ตัวเปิดอยู่ตลอดเวลาบนคอมพิวเตอร์เครื่องเก่า — โดยไม่มีปัญหาใดๆ ในการเปรียบเทียบ ฉันใช้ IntelliJ IDE มาหลายปีแล้ว และเมื่อฉันเปิดสองอันนั้น ระบบทั้งหมดของฉันก็เริ่มช้าลง มันใช้งานได้จริงเมื่อฉันทำงานในโครงการต่างๆ ในเวลาเดียวกัน เช่น ไมโครเซอร์วิสหลายๆ ตัว เป็นต้น
ฉันควรเพิ่มว่า Vim สามารถกำหนดค่าได้สูง หรือไม่ แทนที่จะมีฟังก์ชันมากมายใน IDE ของคุณโดยตรง (รวมถึงบางฟังก์ชันที่คุณไม่เคยใช้) คุณสามารถเลือกสิ่งที่คุณต้องการอย่างแท้จริงและละทิ้งสิ่งที่คุณไม่ต้องการ
ชุดของการกดแป้นพิมพ์ที่สอดคล้องกัน
หาก Arch Linux เป็นรากฐานของ Mouseless Development Environment ของฉัน ดังนั้น i3, Zsh, tmux และ Vim จึงเป็นเครื่องปรับแต่งสำหรับความต้องการเชิงสร้างสรรค์ของฉัน มันให้ความสบายในระดับที่ไม่เคยสัมผัสมาก่อนกับเครื่องมืออื่นๆ
แต่คุณอาจสงสัยว่าทำไมคุณควรใช้เครื่องมือใหม่เหล่านี้และการกดแป้นพิมพ์ในเมื่อคุณสามารถใช้ทางลัดสำหรับเครื่องมือที่คุณรู้จักอยู่แล้ว
ทางลัดของแอปพลิเคชันส่วนใหญ่มักไม่มีความหมาย มันเป็นซุปของกุญแจที่ไม่มีความสัมพันธ์ซึ่งกันและกัน เป็นผลให้พวกเขาจำยากและอาจแตกต่างจากเครื่องมือหนึ่งไปยังอีกเครื่องมือหนึ่ง
เครื่องมือที่ฉันอธิบายในบทความนี้มีไว้เพื่อให้เข้ากันได้อย่างลงตัว คุณสามารถใช้การกดแป้นพิมพ์เดียวกันกับแต่ละรายการได้ มีเพียงคีย์เดียวเท่านั้นที่แตกต่างกัน เพื่อให้ระบบทราบว่าคุณต้องการใช้เครื่องมือใด ทำให้การกดแป้นต่างๆ จดจำได้ง่ายขึ้น
นอกจากนี้ Vim ยังได้รับการออกแบบมาให้มีการกดแป้นพิมพ์ที่เหมาะสมโดยการสร้างภาษาง่ายๆ ที่คุณวางใจได้ ตัวอย่างเช่น หากต้องการลบคำ คุณสามารถกด daw
หากต้องการลบย่อหน้า ให้ลบ dap
เนื่องจาก CLI จำนวนมากใช้การกดแป้นของ Vim การเรียนรู้ Vim จะเปิดประตูสู่ CLI อื่นๆ อีกมากมาย
การติดตั้งสภาพแวดล้อมการพัฒนาแบบไม่ใช้เมาส์ของคุณโดยอัตโนมัติ
การติดตั้ง Arch Linux ด้วยตนเองนั้นดีที่จะเรียนรู้มากมายเกี่ยวกับระบบที่ใช้ Linux แต่มันจะเก่าลงเมื่อคุณต้องทำทุกครั้งที่ต้องการติดตั้งระบบบนคอมพิวเตอร์เครื่องใหม่ นั่นเป็นเหตุผลที่ฉันสร้างสคริปต์ของตัวเองเพื่อติดตั้ง Mouseless Development Environment ทั้งหมดของฉัน พวกเขาติดตั้ง Arch Linux รวมถึงเครื่องมือทั้งหมดที่ฉันใช้กับการกำหนดค่า เมื่อฉันต้องการใช้คอมพิวเตอร์เครื่องใหม่ ฉันสามารถเรียกใช้สคริปต์เหล่านี้ได้ และ voila!
คุณพร้อมที่จะเป็นนักพัฒนาเมาส์หรือไม่?
เนื่องจากความยืดหยุ่น ฉันมีกับสภาพแวดล้อมการพัฒนาของฉัน ฉันจึงสามารถสลับเครื่องมือได้อย่างง่ายดาย ตัวอย่างเช่น ถ้าฉันไม่ต้องการใช้ tmux อีกต่อไป ฉันสามารถแทนที่ด้วยเทอร์มินัลมัลติเพล็กเซอร์อื่นได้ ถ้าฉันไม่ชอบแถบสถานะของ i3 หรือตัวเรียกใช้งานแอปพลิเคชันของฉัน ฉันก็สามารถเปลี่ยนมันได้เช่นกัน
อย่างที่คุณอาจเดาได้ การกำหนดค่าระบบประเภทนี้ต้องใช้เวลา แรงจูงใจ และความพยายาม นั่นเป็นเหตุผลที่ฉันเขียนหนังสือชื่อ "การสร้างสภาพแวดล้อมการพัฒนาที่ไม่ใช้เมาส์ของคุณ" ซึ่งจะอธิบายรายละเอียดวิธีกำหนดค่าเครื่องมือทั้งหมด วิธีสร้างสคริปต์เพื่อติดตั้งทั้งระบบด้วยคำสั่งเดียว และวิธีปรับแต่งทุกอย่างให้เหมาะกับความต้องการส่วนบุคคลของคุณ หากคุณไม่ค่อยรู้เกี่ยวกับเชลล์ของ Linux มากนัก มันจะช่วยให้คุณสร้างโปรเจ็กต์แบบกำหนดเองเพื่อทำความคุ้นเคยได้
หากคุณสนใจ คุณจะพบตัวอย่างหนังสือที่นี่รวมถึงสารบัญทั้งหมด
ฉันคิดว่าวิธีที่ดีที่สุดในการค้นหาว่าคุณต้องการระบบประเภทนี้หรือไม่ ก็แค่ลองใช้มัน ฉันสามารถรับประกันได้สิ่งหนึ่ง: คุณจะได้เรียนรู้มากมายไปพร้อมกัน!
อ่านเพิ่มเติมเกี่ยวกับ Smashing Magazine
- “ฉันใช้เว็บแค่วันเดียวโดยใช้คีย์บอร์ด” Chris Ashton
- “คู่มือฉบับสมบูรณ์สำหรับคีย์บอร์ดเครื่องกล” Ben Frain
- "สร้างกรณีที่แข็งแกร่งสำหรับการเข้าถึง" Todd Libby
- “การเข้าถึงใน Chrome DevTools” Umar Hansa