Post

My Workflow #1 - Terminal Configuration

My Workflow #1 - Terminal Configuration

Summary

Linux là một hệ điều hành mã nguồn mở rất phổ biến với các developer.

Khi sử dụng Linux, hầu hết thời gian chúng ta sẽ tương tác với hệ điều hành thông qua terminal. Vì vậy, việc cấu hình terminal sao cho phù hợp với nhu cầu sử dụng là rất quan trọng.

Trong bài viết này, mình sẽ chia sẻ một số cấu hình terminal mà mình đang sử dụng. Ngoài giúp tiện lợi hơn trong quá trình làm việc mà còn để tạo phong cách riêng cho terminal của mình. Để có thể làm nó trông như thế này:

alt text

Tất cả file config của mình đều sẽ được upload lên github. Các bạn có thể tham khảo và clone về để sử dụng nhé!

Github.com/th1enq/dotfiles_v3

Install

Việc cài đặt và config đều khá tương tự nhau trên các distro khác nhau. Ở đây mình đang sử dụng Arch Linux. Nhưng đối với các bạn sử dụng Ubuntu hay các distro khác, các bạn có thể tham khảo cách cài đặt và cấu hình tương tự nhé.

Kitty

Đầu tiên, ta sẽ tiến hành cài đặt một terminal emulator đảm bảo các tiêu chí nhanh, gọn, nhẹ và dễ dàng config. Ở đây, mình sử dụng kitty.

Để cài đặt kitty, đối với Arch Linux, bạn có thể sử dụng pacman:

1
sudo pacman -S kitty

Hoặc nếu bạn sử dụng Ubuntu, bạn có thể sử dụng apt:

1
sudo apt install kitty

Sau khi cài đặt xong, bạn có thể mở terminal lên và gõ lệnh sau để kiểm tra xem đã cài đặt thành công chưa:

1
kitty --version

Nếu bạn thấy phiên bản của kitty được hiển thị, có nghĩa là bạn đã cài đặt thành công.

Zsh

Tiếp theo, ta sẽ cài đặt zsh, một shell rất phổ biến và mạnh mẽ. zsh có nhiều tính năng hữu ích như tự động hoàn thành, hỗ trợ plugin và theme, giúp tăng năng suất làm việc của bạn. Để cài đặt zsh, bạn có thể sử dụng pacman hoặc apt tương tự như trên:

1
sudo pacman -S zsh

Hoặc

1
sudo apt install zsh

Sau khi cài đặt xong, bạn có thể kiểm tra xem đã cài đặt thành công chưa bằng cách gõ lệnh sau:

1
zsh --version

Nếu bạn thấy phiên bản của zsh được hiển thị, có nghĩa là bạn đã cài đặt thành công.

Config

Chúng ta sẽ chỉ cần cài đặt một số thứ trên. Ngoài ra, trong quá trình config ta sẽ cài thêm một số thứ nhỏ nhỏ khác nữa.

Kitty

Đầu tiên, để config kitty, hãy tạo một file cấu hình mới bằng cách sử dụng lệnh sau:

1
touch ~/.config/kitty/kitty.conf

Sau đó, bạn có thể mở file này và thêm các cấu hình mà bạn muốn. Tất tần tật các cấu hình mà bạn có thể setup đều có thể tìm thấy trong Kitty Docs.

Mình sẽ chỉ đưa ra một số gợi ý cấu hình mà mình đang sử dụng trong file kitty.conf của mình. Bạn có thể tham khảo và tùy chỉnh theo ý thích của mình nhé.

1
2
3
4
5
6
7
8
9
10
11
12
13
include current-theme.conf # Sử dụng theme màu
font_family JetBrainsMono NF # Font chữ
font_size 11 # Kích thước font chữ
 
cursor_shape beam # Hình dạng con trỏ
cursor_trail 1 # Bật chế độ trail
cursor_trail_start_threshold 0 # Thời gian bắt đầu trail

...

map ctrl+left prev_tab # Chuyển tab trái
map ctrl+right next_tab # Chuyển tab phải
map ctrl+w close_window # Đóng tab

Zsh

Tiếp theo, để config zsh, hãy tạo một file cấu hình mới bằng cách sử dụng lệnh sau:

1
touch ~/.zshrc

Sau đó, bạn có thể mở file này và thêm các cấu hình mà bạn muốn. Tất tần tật các cấu hình mà bạn có thể setup đều có thể tìm thấy trong Zsh Docs.

Ở đây có 3 plugin quan trọng mà mình nghĩ các bạn nên cài đặt đó là:

  • zsh-autosuggestions: Tự động gợi ý lệnh khi bạn gõ.
  • zsh-syntax-highlighting: Tô màu cú pháp cho lệnh.
  • zsh-history-substring-search: Tìm kiếm lệnh trong lịch sử.

Để cài đặt các plugin này, bạn có thể sử dụng git để clone về thư mục ~/.oh-my-zsh/custom/plugins/ như sau:

1
2
3
git clone https://github.com/zsh-users/zsh-autosuggestions.git
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
git clone https://github.com/zsh-users/zsh-history-substring-search.git

Sau đó mở file ~/.zshrc và thêm các plugin này vào:

1
2
3
source /pathto/zsh-autosuggestions/zsh-autosuggestions.zsh
source /pathto/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /pathto/zsh-history-substring-search/zsh-history-substring-search.zsh

Trong đó, /pathto/ là đường dẫn đến thư mục chứa các plugin mà bạn đã clone về. Bạn có thể sử dụng lệnh pwd để lấy đường dẫn đến thư mục hiện tại.

Ngoài ra mình còn sử dụng thêm fzf để hỗ trợ tìm kiếm file nhanh hơn. Bạn có thể cài đặt fzf bằng cách sử dụng lệnh sau:

1
sudo pacman -S fzf

Hoặc

1
sudo apt install fzf

Có một tính năng rất hay của zsh đó là alias. Bạn có thể tạo các alias cho các lệnh mà bạn thường xuyên sử dụng để tiết kiệm thời gian gõ lệnh. Ví dụ:

1
2
3
4
5
6
alias f=fzf
alias fp='fzf --preview="bat --color=always {}"'
alias ga='git add'
alias gcm='git commit'
alias gp='git push'
alias gi='git init'

Neofetch

Và cuối cùng, để hiển thị các thông tin một cách “wibu” như thế kia, mình có sử dụng neofetch - Một công cụ giúp hiển thị thông tin hệ thống và hoàn toàn có thể tùy chỉnh được. Để config neofetch, hãy làm tương tự như kitty, tạo một file cấu hình mới bằng cách sử dụng lệnh sau:

1
touch ~/.config/neofetch/config.conf

Tất cả các cấu hình mà bạn có thể setup cho neofetch đều có thể tìm thấy trong Neofetch Docs.

Conclusion

Như vậy là các bạn đã config được 90% terminal của mình rồi đấy !!!. Tuy nhiên hãy ưu tiên sự tiện lời hơn là sự “wibu” nhé. XD. Dưới dây là một số hình ảnh về terminal của mình sau khi đã config xong.

alt text Mở 2 hay nhiều tab trên cùng 1 terminal sử dụng Tmux

alt text Tích hợp fzf để tìm kiếm cũng như hiển thị nội dung file

alt text Tích hợp yazi để quản lý file, folder trên terminal

Còn một số trò như xem youtube trên terminal hay chơi game trên terminal nữa. Mình sẽ viết một bài khác để chia sẻ về những thứ này nhé.

Ngoài ra, có một cộng đồng rất lớn gồm những người thích config terminal. Họ thường chia sẻ những cấu hình của họ trên các trang mạng xã hội như Reddit, Twitter, Github,… Bạn có thể tham khảo và học hỏi từ họ để tạo ra một terminal đẹp và tiện lợi cho riêng mình tại đây Reddit - Unixporn.

Github.com/th1enq/dotfiles_v3

Và đây là toàn bộ cấu hình của mình. Các bạn có thể tham khảo và clone về để sử dụng nhé!

Tạm biệt và chúc các bạn Ricing vui vẻ xD.

This post is licensed under CC BY 4.0 by the author.