Cách sử dụng và tối ưu hoá zinit
Mình nghĩ đã là anh em developer không ai không thích tối ưu hoá thứ mà mình hay sử dụng hằng ngày, đó chính là terminal. Việc tối ưu và cá nhân hoá không chỉ đem lại trải nghiệm tốt hơn mà còn giúp tối ưu công việc code hằng ngày. Nếu terminal của bạn load mỗi ngày chỉ 5s, một ngày bạn mở terminal lên 20 lần là mỗi ngày bạn đã giảm thiểu được 100s, tức 1 phút rưỡi mỗi ngày. Con số này tưởng chừng không nhiều nhưng nếu nhiều anh em có thể đọc được bài này và sử dụng những nghiên cứu mà mình tìm hiểu được thì có lẽ cũng đã đem lại một lượng productivity khá lớn cho anh em developer trong nước.
Vì vậy mình cũng đã bỏ nhiều thời gian để nghiên cứu thêm về zshell cũng như cách tối ưu hoá các plugin manager. Trước đây mình cũng như mọi người, đều sử dụng những hệ thống tương đối ăn sẵn như starship.rs, oh-my-zsh, antigen hay powerlevel10k. Những hệ thống này tuy cũng đẹp, cũng ngon nhưng sau khi mình sử dụng thời gian mình thấy chúng có một số nhược điểm như tính cá nhân hoá còn thấp, việc cài cắm plugin nhiều khi còn bất tiện cũng như tốc độ load khá chậm. Sau nhiều tháng tìm tòi mình đã tìm ra zinit - một plugin manager cho zsh với tính tối ưu hoá cao, dễ sử dụng cũng như tốc độ load rất nhanh - hầu như đều dưới 1s. Ngoài ra mình cũng tìm ra oh-my-posh, một theme manager dành cho rất nhiều shell ( không chỉ zsh ) với đặc điểm là lượng theme preset khá lớn, đẹp cũng như có khả năng tuỳ biến rất tốt - anh em rất dễ dàng fork hay download một theme preset về để customize lại cho vừa ý mình.
Dành cho các bạn thích tự đọc và tìm hiểu cùng khả năng đọc hiểu tiếng Anh tốt, mình xin gửi link về những tool mình sử dụng ở đây:
File .zshrc config của mình:
Giải thích về từng tool một
ZInit
Sau rất nhiều thời gian đào xới để optimize thời gian load time cho zshell của mình, do mình bắt đầu bị khó chịu bởi thời gian load time của oh-my-zsh quá chậm, ngoài ra có một số plugins như autocompletion có cách cài đặt khá lằng nhằng và mất thời gian chứ không phải plug-and-play một cách dễ dàng. Có một thời gian mình đã đổi sang antigen nhờ cách sử dụng tiện dụng hơn nhưng mình cảm thấy thời gian load của antigen vẫn rất chậm, có lẽ mất tầm từ 2-4s cho mỗi lần load với số lượng tầm hơn 10 plugins mà mình hay dùng. Nên mình mới mày mò và tìm ra zinit- một tool mà ngay từ đầu đã quảng bá về thời gian load time nhanh gọn của mình với turbo mode. Mình tìm hiểu thêm và nhận ra rằng không chỉ có thế mà cơ chế load plugins từ remote của tools này cũng ngon như antigen vậy, và nếu bạn không thích sử dụng oh-my-posh mà muốn sử dụng theme của oh-my-zsh, starship.rs hay powerlevel10k thì zinit cũng vẫn load ngon. Nói chung zinit là một tool quá ngon mà thậm chí mình cũng còn chưa tận dụng hết những tính năng như turbo-mode của zinit. Tuy nhiên mình chọn cách sử dụng đơn giản - chưa dùng turbo mode kĩ càng nhưng cũng đã đáp ứng được nhu cầu của mình. Mình cũng rất chào đón các bạn có thể đóng góp để tối ưu hoá quá trình load của mình.
Oh My Posh
Thường thì mình vẫn sử dụng các theme của oh-my-zsh cũng như starship.rs hoặc powerlevel10k tuy nhiên các theme trên này vẫn chưa làm mình ưng ý lắm vì khó cá nhân hoá ( theo ý kiến riêng của mình ) cũng như hơi bị màu mè và rườm rà. Ngoài ra trong quá trình đi làm mình lại hay phải sử dụng powershell của Windows nên ví dụ nếu mình muốn sử dụng theme của oh-my-zsh cũng chưa được. Vì vậy mình mới tìm ra oh-my-post - một theme manager cho shell cho phép sử dụng trên mọi shell - từ zsh, powershell hay nushell đều có thể đáp ứng. Nói chung đây là một lựa chọn hay nếu bạn không thích starship.rs hoặc powerlevel10k hoặc bị giới hạn bởi yêu cầu của công ty phải sử dụng powershell.
ZOxide
Một tool khá thú vị dùng để thay thế lệnh cd của hệ thống với khả năng autosuggestion ngon hơn khá nhiều so với cd thông thường. Bạn chỉ việc bấm z sau đó gõ vào directory mà bạn muốn tìm kiếm và zoxide sẽ cho bạn địa chỉ phù hợp nhất mà bạn cần đến
Mise
Một tool vô cùng mạnh để quản lý versioning của các ngôn ngữ lập trình ở trên hệ thống. Nếu nvm chỉ cho phép quản lý nhiều version của node hay pyenv chỉ cho phép quản lý python version, mise cho phép bạn quản lý tất cả version của hầu hết các ngôn ngữ lập trình, từ mới đến cũ, như bun, deno hay python.
Fzf
Tool này mình cũng chưa tìm hiểu kĩ nên cũng chưa nói gì nhiều, nhưng tool này theo mình thấy là một tool dùng để fuzzy find file và directory một cách nhanh chóng. Mình cài vì thấy fzf-tab là một tab completion khá ngon dành cho zinit.
All Rights Reserved