มาใช้ zsh กันเถอะ
หนึ่งในเครื่องมือที่นักพัฒนาใช้ประโยชน์แทบจะในทุกๆ วันคงหนีไม่พ้น terminal (หรือหลายๆ ครั้งเรียกว่า Shell) โดยถ้าอยู่บน Unix/Linux แล้วแทบจะเรียกได้ว่าเป็นแขนเป็นขาเลย ทีนี้เนี่ย Shell ที่เราใช้อยู่ทุกๆ วันโดยปกติแล้วหน้าจะประมาณนี้ ข้างล่างนี้หรือเรียกกันจริงๆ ว่า bash ซึ่งเป็น Shell มาตรฐานที่ติดมากับ Ubuntu ซึ่งในการใช้งานโดยปกติวิสัยแล้วมันก็เพียงพอต่อการใช้งานแทบจะครอบจักรวาลอยู่แล้ว เพียงแต่ว่า มันไม่หล่อ
อาจจะไม่มาตรฐานซะทีเดียวนะครับ เพราะอันนี้มันขี่อยู่ใน terminator |
sudo apt-get update && sudo apt-get install -y zsh
หลังจากนั้นให้เปลี่ยน shell มาตรฐานของเราจาก bash เป็น zsh ได้โดยใช้คำสั่งข้างล่าง
sudo chsh -s $(which zsh) $(whoami)
ข้อดีของ zsh ถ้าเทียบกับ bash ที่เป็น Shell มาตรฐานใน ubuntu หลักๆ แล้วมีอยู่ 3 อย่าง อย่างแรกคือ Auto completion ยกตัวอย่างเช่น โดยปกติแล้วถ้าเป็น Bash เวลาเราจะใช้คำสั่ง cd ตามด้วยชื่อ directory ถ้าเรากด tab มันจะลิสต์รายชื่อมาให้ซึ่งก็ต้องพิมพ์ตัวอักษรที่ใช้แล้วกด tab อีกจนกว่าจะไม่มีตัวเหมือนถึงจะ completion ให้หมด แต่ถ้าเป็น zsh นั้นพอเรากด tab มันจะแสดงรายชื่อ directory ที่อยู่ข้างใน working directory ของเราอยู่ ซึ่งเราสามารถกด tab หลายๆ ครั้งแล้วเลือกได้เลยว่าจะเอาอันไหน อีกเทคนิคหนึ่งคือ สมมติเราต้องการไปยัง directory: /usr/local/go ถ้าเราพิมพ์ใน bash ถ้าไม่กด tab ก็ต้องพิมพ์เต็มๆ ไปเรื่อยๆ ในกรณี zsh เราแค่พิมพ์ cd /u/lo/go แล้วกด tab ตัว zsh จะ auto complete ให้ทั้งหมด
ข้อต่อมาคือ ถ้าเราพิมพ์คำสั่งบางคำสั่งผิดเช่น git เป็น gut ตัว zsh สามารถตรวจได้ (บางคำสั่ง) ให้เป็นตัวที่ถูกได้ซึ่งเราก็แค่กด y ก็ใช้งานได้ต่อไปแล้ว และข้อสุดท้ายคือ zsh นั้นรองรับ Right-hand prompt หรือการแทรกอะไรไว้ทางขวาของ shell ซึ่งมีประโยชน์มากในการใช้ร่วมกับ Plugin บางตัว ซึ่งเดี๋ยวเราจะว่ากันต่อไป นอกจากนั้นแล้ว zsh ก็มี Dotfile สำหรับแก้ไข configuration พื้นฐานไม่ต่างจาก shell ตัวอื่นๆ อีกด้วย
แค่นี้ก็ดูเหมือนจะเพิ่ม productivity ได้เยอะแล้วใช่มั้ยครับ แต่มันยังไม่จบครับ ผมมองว่า zsh นี่คล้าย vim หรือ project opensource อีกหลายตัวคือ แค่ตัวมันเองก็เจ๋งอยู่แล้ว แต่พอมีระบบ plugin เข้ามาด้วยนี่ยิ่งดีขึ้นไปอีก ทำงานได้เร็วมากขึ้นอีก โดยในฝั่ง vim ก็จะแยกเป็น 2 ค่ายใหญ่ๆ คือ Pathogen กับ Vundle (ซึ่งเราจะไม่พูดถึงในบล็อกนี้) ในฝั่งของ zsh ก็จะแบ่งเป็น 2 ค่ายใหญ่ๆ เหมือนกันครับ คือ Oh My Zsh และ Presto
credit: http://ohmyz.sh/ |
sudo apt-get install -y curl
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | bash
credit: https://github.com/sorin-ionescu/prezto |
ก็ประมาณนี้นะครับ สำหรับ zsh เป็นหนึ่งในเครื่องมือหลายๆ ตัวที่ผมอยากใช้มานาน จนถึงเวลาได้มีโอกาสถึงเข้าใจว่ามันมีประโยชน์จริงๆ อาจจะไม่เห็นผลในระยะสั้นๆ มากเท่าไร แต่ระยะยาวทำให้เราทำงานได้เร็วขึ้น (บ้าง) แถมหล่อด้วย หวังว่าหลังจากนี้แล้วหลายคนคงจะเลิกใช้ bash ไปเลยนะครับ
คำเตือน : การเปลี่ยน shell มีผลกับตัวแปรและ alias ต่างๆ ที่เคยทำไว้ใน .bashrc เช่น java หรือ golang ให้ทำการเพิ่มสิ่งที่เปลี่ยนแปลงเอาไว้ในไฟล์ดังกล่าวมาลงไฟล์ .zshrc ด้วย
Reference
http://mikebuss.com/2014/02/02/a-beautiful-productive-terminal-experience/
http://blog.coolaj86.com/articles/zsh-is-to-bash-as-vim-is-to-vi.html
http://ohmyz.sh/
https://github.com/sorin-ionescu/prezto
Comments