Xin chào các độc giả của 2coffee.dev, như trong một chia sẻ trong chuyên mục Threads, cách đây không lâu tôi đã có một trải nghiệm mới khá thú vị đó "di cư" khỏi oh-my-zsh. Nếu như còn nhớ, bạn sẽ thấy tôi có một bài viết Câu chuyện về hành trình từ Windows sang Linux/Unix - là do zsh và oh-my-zsh, nó là minh chứng cho việc thích sử dụng dòng lệnh như thế nào.
Gõ lệnh là một công việc làm khá thường xuyên, vì thế mà tôi luôn tìm cách để tối ưu hoặc gõ lệnh thế nào cho vừa nhanh mà vừa dễ. Có công cụ nào hay hay là nhào vào học cách sử dụng. Bài viết Migrating Off Oh-My-Zsh and other recent Yak Shavings như một mồi lửa đã vô tình chạm phải váng dầu lênh láng. Đã đến lúc tìm hiểu xem tại sao tác giả lại rời bỏ công cụ tuyệt vời này?
Lại nhắc về oh-my-zsh, khi xem lại quá trình sử dụng mới nhận ra rằng không thực sự dùng nhiều tính năng của nó đến vậy. Oh-my-zsh ra đời từ rất lâu, thời đó nó như là một sự lựa chọn đáng giá nhưng tại thời điểm này, với tốc độ phát triển của ứng dụng mã nguồn mở, đã có nhiều cái tên mới nhanh hơn, linh hoạt hơn ra đời.
Vì thế cho nên trong bài viết này, tôi sẽ thử làm theo những gì mà tác giả trong bài viết trên đã nói. Để xem việc di cư này có đáng hay không.
Trước tiên hãy gỡ (uninstall) oh-my-zsh. Mở tệp .zshrc
và xoá dòng source $ZSH/oh-my-zsh.sh
. Sau đó xoá thư mục ~/.oh-my-zsh
.
rm -rf ~/.oh-my-zsh
Bắt đầu thôi nào!
starship.rs là một công cụ tiện ích giúp tuỳ chỉnh shell, nó hỗ trợ rất nhiều shell, bao gồm cả zsh. Được viết bằng Rust mang đến tốc độ và độ an toàn, đáng tin cậy.
Cài đặt starship, rất đơn giản. Ở đây tôi dùng Mac, cài qua homebrew.
brew install starship
Nếu bạn dùng hệ điều hành khác, tham khảo cách cài đặt tại Starship Installing
Vì đang dùng zsh
, nên tôi thêm dòng này vào cuối tệp ~/.zshrc
eval "$(starship init zsh)"
Starship hỗ trợ rất nhiều shell nên để tham khảo thêm, bạn đọc xem tại Setup Shell
Sau khi hoàn tất, tải lại cấu hình bằng cách gõ source ~/.zshrc
bạn sẽ thấy giao diện mới.
Về tổng quan, starship cho phép bạn cấu hình nhiều tiện ích mở rộng trong cửa sổ lệnh. Ví dụ dưới đây là cửa sổ dòng lệnh của tôi sau một hồi cấu hình.
Còn đây là tệp cấu hình.
# ~/.config/starship.toml
"$schema" = 'https://starship.rs/config-schema.json'
add_newline = false
# Replace the '❯' symbol in the prompt with '➜'
[character] # The name of the module we are configuring is 'character'
success_symbol = '[➜](bold green)' # The 'success_symbol' segment is being set to '➜' with the color 'bold green'
[hostname]
ssh_only = true
format = '[$ssh_symbol$hostname]($style) '
ssh_symbol = "@"
style = "yellow"
[username]
disabled = false
show_always = true
format = '😨 [$user]($style) '
style_user = "yellow"
[directory]
truncation_length = 4
truncate_to_repo = false
[git_branch]
truncation_length = 20
# remove the 'on' conjunction
# format = '[$symbol$branch]($style) '
[git_state]
disabled = true
[git_status]
disabled = true
[memory_usage]
disabled = true
format = '$symbol [${ram}]($style) '
threshold = -1
symbol = " "
style = "bold dimmed green"
[time]
disabled = false
format = '🕙 [$time]($style) '
time_format = '%T'
[nodejs]
disabled = true
Ngoài ra còn rất nhiều cài đặt về ngôn ngữ và công cụ mà bạn có thể tìm thấy tại Config. Việc còn lại là tìm hiểu xem nó cho phép cài đặt hiển thị những gì rồi thêm vào tệp cấu hình là được.
fzf là một công cụ tìm kiếm mờ (fuzzy finder) đa năng. Nó được viết bằng C mang đến tốc độ tìm kiếm ấn tượng. Nhưng khoan đã, tại sao lại cần đến một công cụ tìm kiếm ở đây?
Thì thật ra mà nói nó giúp bạn tìm được tất cả mọi thứ trong máy tính. Ví dụ như tìm bất kỳ tệp tin, thư mục nào có trong hệ thống. Hoặc một ứng dụng mà tôi rất thường xuyên sử dụng là lục lại history của lệnh đã dùng trong hệ thống.
fzf hỗ trợ rất nhiều nền tảng, ở đây tôi cài thông qua brew
brew install fzf
Mở ~/.zshrc
, thêm dòng này vào cuối
# Set up fzf key bindings and fuzzy completion
source <(fzf --zsh)
Chưa hình dung ra cách dùng ư? Hãy thử gõ fzf
. Ngay lập tức công cụ tiến hành quét toàn bộ tệp tin trong máy tính và sẵn sàng cho tìm kiếm.
Hoặc dùng để tìm kiếm dựa trên đầu ra của lệnh khác, theo dạng pipe.
ls -lh | fzf
Bây giờ tìm kiếm lịch sử lệnh bằng cách bấm Ctrl
+ R
. Gõ một số ký tự vào rồi bấm Enter
.
zoxide là một tiện ích thay thế cho lệnh cd
truyền thống, nó có khả năng "nhớ" những đường dẫn mà bạn đã di chuyển vào, sau đó di chuyển nhanh đến thư mục đó bằng một lệnh đơn giản.
Cài đặt zoxide.
brew install zoxide
Thêm dòng này vào cuối ~/.zshrc
eval "$(zoxide init zsh)"
Cách dùng rất đơn giản, thay vì dùng cd
thì dùng z
.
z src/hoaitx/2coffee-next/page
z ~/src/hoaitx/2coffee-next/api
Điều thú vị là sau đó nếu muốn di chuyển vào thư mục page
, chỉ cần gõ:
z page
Tiết kiệm được nhiều thời gian di chuyển phải không nào!
Sau khi gỡ oh-my-zsh, tôi phát hiện ra rằng một tính năng mình rất hay dùng là bấm phím mũi tên lên/xuống để tìm nhanh lịch sử lệnh. Ví dụ bạn gõ rất nhiều lệnh docker
rồi và chỉ muốn tìm những lệnh bắt đầu bằng docker run
thì gõ docker run
vào và bấm phím mũi tên, nó gợi ý ra tất cả lệnh bắt đầu bằng 2 từ đó.
Trong zsh có plugin tên là zsh-history-substring-search giúp làm được điều này.
Cài đặt.
brew install zsh-history-substring-search
Thêm các dòng này vào cuối tệp ~/.zshrc
# search history substring search
source ~/.zsh/zsh-history-substring-search/zsh-history-substring-search.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
Hai dòng bindkey
là 2 nút mũi tên để dùng lệnh điều hướng tìm kiếm.
zsh-autosuggestions là một plugin gợi ý lệnh dựa trên lịch sử. Tưởng tượng bạn gõ một vài vài ký tự, nó sẽ tìm và gợi ý lệnh tiếp theo dựa trên những gì đã có trước đó. Sau đó chỉ cần tab tab...
Cài đặt.
brew install zsh-autosuggestions
Thêm dòng này vào cuối tệp ~/.zshrc
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
Trên đây là tất cả cài đặt mới của tôi sau khi rời bỏ oh-my-zsh. Đây có thể coi như là khởi đầu mới cho công cuộc tối ưu hoá shell của mình. Nếu tìm được "đồ chơi" mới, tôi sẽ tiếp tục cập nhật trong bài viết này.
Còn bạn, bạn đang sử dụng công cụ gì để làm mới shell của mình. Hãy để lại bình luận xuống phía dưới bài viết cho tôi và mọi người cùng biết nhé. Xin cảm ơn.
Bí mật ngăn xếp của Blog
Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!
Đăng ký nhận thông báo bài viết mới
Bình luận (0)