Auto Suggestion + Syntax Highlighting in zsh

Ayuth Mangmesap
Ayuth’s Story
2 min readJun 3, 2018

--

https://ahmadawais.com/wp-content/uploads/2017/09/pip.gif

ผมเห็น terminal ของชายคนนี้แล้วรู้สึก อึ้ง ทึ่ง เสียว(ไม่เกี่ยว) ว่าทำไมมันช่างดีงามพระรามแปดอย่างนี้เพราะว่ามี auto suggestionให้เราด้วย (ซึ่งตรงนี้ผมชอบมากกกกกก) ก็ได้หาข้อมูลมาให้พวกเรา ๆ ท่าน ๆ ได้ลองเล่นดูครับ ซึ่งถ้าใครอยากทำได้แบบภาพด้านล่างนี้ก็ตามมาอ่านเลย

https://media.giphy.com/media/7XoCXpp0P5rbUqJmxc/giphy.gif

Prerequisite

สิ่งที่ทุกคนควรมีก่อนเข้าสู่กระทู้นี้ครับ

  1. ติดตั้ง zsh มาแล้ว หากใครยังไม่ได้ติดตั้งให้ อ่าน blog นี้ครับ
  2. ติดตั้ง homebrew มาแล้ว ใครยังไม่ได้ติดตั้งให้ อ่าน blog นี้ครับ หรือ https://brew.sh/

Install the Auto Suggestion plugin

1.) ติดตั้ง package ผ่าน homebrew โดยใช้คำสั่ง

brew install zsh-autosuggestions

2.) เมื่อติดตั้งเสร็จแล้วให้ทำการแก้ไขไฟล์ .zshrc ใน home directory ของ user นั้น ๆ โดยใช้คำสั่ง

vi ~/.zshrc

(ถ้าใครจะ backup การตั้งค่าเดิมไว้ก่อนก้ได้นะครับใช้คำสั่ง)

cp ~/.zshrc ~/.zshrc.bak

จากนั้นเพิ่มบรรทัดนี้ลงไป

source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh

จากนั้นลอง restart session ดูครับหรือปิด terminal, iTerm เปิดใหม่ง่ายที่สุดแล้วลองพิมพ์ซักคำสั่งหนึ่งเช่น และลอง enter แล้วลองพิมพ์คำสั่งเดิมก็จะได้อย่างนี้ !!

zsh with zsh-autosuggestions

เสริมนิดนึงครับผมได้ลง plugin อีกตัวที่ชื่อว่า zsh-syntax-highlighting จึงเห็น highlight เป็นสีเขียว ๆ ส้ม ๆ หน้า python หากใครสนใจก็ลองด้วยวิธีเดียวกับข้างบนครับ

zsh with zsh-syntax-highlighting
brew install zsh-syntax-highlighting

และไปแก้ไฟล์ .zshrc ที่ home directory ให้เป็นอย่างภาพด้านล่าง

source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
load zsh with zsh-syntax-highlighting

สรุป

บล็อกนี้ว่าจะเขียนสั้น ๆ เกี่ยวกับ auto suggestion ใน zsh แต่ดันได้ของแถมอีกตัวหนึ่งคือ zsh-syntax-highlighting มาซะได้

แต่อย่างไรก็ดีมีข้อควรระวังหน่อยนะครับการที่เรา load plugin หลาย ๆ อย่างครับเช่น ตอน start new terminal session มาแล้วถ้า load หลาย ๆ ตัวอาจทำให้การเข้าสู่หน้าจอ input ช้าได้ครับ

ขอให้สนุกกับการใช้ CLI ครับ ;)

References

--

--