Cách tùy chỉnh dấu nhắc lệnh Linux Terminal với Starship

Starship là một bản build prompt (dấu nhắc lệnh) sử dụng ngôn ngữ Rust. Đây là một Terminal prompt rất tối thiểu và nhanh chóng. Lý do chính cho sự phổ biến của Starship nằm ở khả năng tùy biến. Bạn có thể dễ dàng tùy chỉnh nó bằng cách sử dụng file cấu hình TOML. Nếu bạn đang chuyển sang một thiết bị hoặc một shell khác, chỉ cần di chuyển file cấu hình đến vị trí thích hợp và shell của bạn sẽ tự động trở nên đẹp mắt.

Điều kiện tiên quyết

Trước khi sử dụng Starship, bạn cần cài đặt một nerd font trên máy tính của mình. Nerd font là sự pha trộn tuyệt đẹp giữa phông chữ và các icon. Đi tới Nerd Fonts và tải xuống font yêu thích của bạn. Nếu không thể quyết định, bạn cũng có thể xem trước các phông chữ trên programmingfonts.org.

Ví dụ sẽ sử dụng Fira Code Nerd font. Tải xuống phông chữ và trích xuất nội dung bên trong nó. Bạn sẽ nhận được một thư mục có tên “FiraCode” và tất cả các phiên bản .otf và .ttf của phông chữ.

Để cài đặt phông chữ này, hãy mở Terminal và chạy lệnh sau.

# Creating the local font directory in your system
mkdir ~/.local/share/fonts

# Moving the extracted fonts to local font directory
mv FiraCode ~/.local/share/fonts/

Bây giờ phông chữ FiraCode Nerd có sẵn trong hệ thống của bạn. Bạn cũng có thể cài đặt các loại phông chữ khác nhau bằng cách làm theo hướng dẫn trên.

Nếu bạn muốn đọc hướng dẫn chuyên sâu về cài đặt phông chữ trên Linux desktop, hãy xem bài viết: Cài đặt và sử dụng font trong Linux để biết thêm chi tiết..

Cài đặt Starship

Để cài đặt Starship, hãy vào thư mục chính của bạn và chạy lệnh sau.

curl -sS https://starship.rs/install.sh | sh

Lệnh này sẽ tải xuống và cài đặt mã nhị phân starship và thêm nó vào đường dẫn của bạn.

Cài đặt Starship trên shell của bạn

Nếu bạn đang sử dụng bash shell, hãy mở file “~/.bashrc” và dán dòng code này vào cuối.

eval "$(starhip init bash)"

Nếu bạn đang sử dụng Zsh, hãy mở file “~/.zshrc” và dán dòng code trên vào cuối file.

Bây giờ khởi động lại ứng dụng Terminal. Bạn sẽ được chào đón bằng dấu nhắc lệnh starship mặc định.

Cài đặt Starship
Cài đặt Starship

Nếu bạn có một shell khác chứ không phải là hai loại ở trên, hãy truy cập tài liệu về starship và tìm shell ưa thích của bạn ở đó.

Tùy chỉnh Starship

Để tùy chỉnh shell prompt, hãy tạo file “starship.toml” trong thư mục config.

# Creating your .config directory if not existed
mkdir -p ~/.config

# Creating a new starship.toml file
touch ~/.config/starship.toml

Bạn cũng có thể thay đổi vị trí mặc định của file cấu hình starship. Để thay đổi vị trí mặc định của file cấu hình starship của bạn, hãy thêm biến môi trường STARSHIP_CONFIG ở cuối file “~/.bashrc” của bạn.

export STARSHIP_CONFIG=~/example/non/default/path/starship.toml

Khái niệm về mô-đun và biến

Mô-đun là một thành phần trong terminal prompt, cung cấp cho bạn thông tin theo ngữ cảnh về hệ điều hành. Ví dụ, Nodejs là một mô-đun trong starship prompt. Khi thêm mô-đun này vào file cấu hình, thì nó sẽ cung cấp các điểm dữ liệu khác nhau liên quan đến cài đặt hiện tại của Nodejs trong môi trường của bạn.

Mô-đun cung cấp thông tin đó dưới dạng các biến. Biến là các thành phần con nhỏ hơn chứa thông tin về mô-đun. Ví dụ, version là biến của “Nodejs”. Khi gọi $version bên trong mô-đun Nodejs, nó cung cấp phiên bản Nodejs hiện đã được cài đặt trong hệ thống. Các biến có tiền tố là biểu tượng $. Tên của một biến chỉ có thể chứa các chữ cái, số và “_”.

Nhóm văn bản và kiểu

Các nhóm văn bản trong starship có 2 phần. Phần đầu tiên được bao bọc trong biểu tượng [ ]. Phần này được gọi là chuỗi định dạng. Chúng ta có thể thêm văn bản, biến và thậm chí cả nhóm văn bản lồng nhau tại đây.

Phần sau được bao bọc trong ( ) và phần này được gọi là chuỗi kiểu. Bạn có thể tạo kiểu cho nhóm văn bản bằng cách sử dụng chuỗi kiểu này.

Hãy lấy một ví dụ.

  • [make_tech_easier](yellow bold) sẽ in chuỗi “make_tech_easier” với văn bản in đậm, màu vàng.
  • [👍 All Done](green) sẽ in “👍 All Done” với màu xanh lục.
  • [a [b](green) c](red) Đây là một ví dụ về các nhóm văn bản lồng nhau. Nó in a và c màu đỏ và b màu xanh lục.

Một số cài đặt kiểu khác

  • Có thể thiết lập các foreground và background khác nhau cho những nhóm văn bản. [ ](fg:red bg:blue) làm cho màu chữ văn bản là màu đỏ và nền là màu xanh lam.
  • Cũng có thể sử dụng màu ANSI trong file cấu hình. [ ](bold fg:27) đại diện cho văn bản in đậm với màu ANSI 27 làm màu foreground.
  • Nếu bạn muốn thêm màu hex của mình, thì điều này cũng có thể. [ ](underline bg:#bf5700) cho một văn bản được gạch dưới với màu nền cam sáng.
Một số cài đặt kiểu trong Starship
Một số cài đặt kiểu trong Starship

Tùy chỉnh dấu nhắc lệnh trong Starship

Tùy chỉnh dấu nhắc lệnh của Starship có 4 tùy chọn. Bạn có thể thay đổi 4 tùy chọn này để tùy chỉnh kiểu dấu nhắc lệnh.

  • format: Nó xác định dấu nhắc lệnh sẽ trông như thế nào bên trong Terminal. Bạn có thể xác định bất kỳ thiết kế nào dưới dạng dấu nhắc lệnh.
  • scan_timeout: Thời gian chờ để starship quét file.
  • command_timeout: Thời gian chờ lệnh được thực thi bởi starship.
  • add_newline: Nó là một boolean. Nếu được đặt thành true, nó sẽ thêm một dòng trống giữa shell prompt.

File tùy chỉnh dấu nhắc lệnh demo trông như thế này.

# Use custom format
format = """
[┌───────────────────>](bold green)
[│](bold green)$directory$rust$package
[└─>](bold green) """

# Wait 10 milliseconds for starship to check files under the current directory.
scan_timeout = 10

# Disable the blank line at the start of the prompt
add_newline = false

Thêm mô-đun mong muốn

Giờ đây, khi bạn đã biết những kiến ​​thức cơ bản về starship và cách tùy chỉnh nó, bạn có thể thêm mô-đun mong muốn của mình rất dễ dàng. Hãy nhớ rằng bất kỳ mô-đun nào cũng sẽ hoạt động nếu các file và thư mục liên quan đến mô-đun này hiển thị ở đường dẫn đã cho. Đơn giản, mô-đun python sẽ chỉ hiển thị, nếu có bất kỳ file python nào nằm trong thư mục làm việc hiện tại.

Hãy thêm mô-đun python vào cấu hình starship dưới dạng bản demo. Mở file starship.toml. Thêm [python] trong một dòng mới để kích hoạt môi trường python.

Mô-đun Python hiển thị thông tin về cài đặt python trong hệ điều hành của bạn hoặc nếu bất kỳ môi trường ảo nào được kích hoạt. Nếu bạn muốn thay đổi biểu tượng python và hiển thị tên virtualenv, thì file cấu hình sẽ như thế này.

[python]
symbol = "🐍 "
pyenv_version_name = true

Nếu đã cài đặt cả python2 và python3, thì bạn có thể chỉ định file nhị phân python mặc định bằng cách sử dụng file cấu hình starship.

[python]
# Only use the `python3` binary to get the version.
python_binary = "python3"

Giống như ví dụ này, bạn có thể thêm bất kỳ mô-đun nào bạn muốn và tùy chỉnh chúng theo trí tưởng tượng của bạn.

Cách thêm cài đặt preset của Starship

Nếu bạn không muốn tự mình thực hiện tất cả các tùy chỉnh đó, nhưng muốn có một terminal prompt đẹp mắt, bạn có thể sử dụng các giá trị preset. Các cài đặt preset chỉ đơn giản là những file cấu hình starship được chia sẻ bởi những người dùng khác. Bạn có thể nhập các cài đặt preset đó vào file cấu hình của mình và bạn sẽ có một terminal prompt đẹp mắt chỉ trong giây lát.

Thêm cài đặt preset của Starship
Thêm cài đặt preset của Starship

Bạn có thể khám phá các cài đặt preset chính thức trên trang này. Terminal prompt ở trên được upload bởi một người dùng và có sẵn trên trang presets. Bây giờ để làm cho terminal prompt của bạn trông giống như thế này, hãy mở file cấu hình starship và thêm cấu hình này vào file của bạn.

format = """
[←](#9A348E)\
$username\
[→](bg:#DA627D fg:#9A348E)\
$directory\
[→](fg:#DA627D bg:#FCA17D)\
$git_branch\
$git_status\
[→](fg:#FCA17D bg:#86BBD8)\
$c\
$elixir\
$elm\
$golang\
$haskell\
$java\
$julia\
$nodejs\
$nim\
$rust\
[→](fg:#86BBD8 bg:#06969A)\
$docker_context\
[→](fg:#06969A bg:#33658A)\
$time\
[→ ](fg:#33658A)\
"""
 
# Disable the blank line at the start of the prompt
# add_newline = false
 
# You can also replace your username with a neat symbol like  to save some space
[username]
show_always = true
style_user = "bg:#9A348E"
style_root = "bg:#9A348E"
format = '[$user ]($style)'
 
[directory]
style = "bg:#DA627D"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
 
# Here is how you can shorten some long paths by text replacement
# similar to mapped_locations in Oh My Posh:
[directory.substitutions]
"Documents" = "📄 "
"Downloads" = "📥 "
"Music" = "🎜 "
"Pictures" = "📷 "
# Keep in mind that the order matters. For example:
# "Important Documents" = "  "
# will not be replaced, because "Documents" was already substituted before.
# So either put "Important Documents" before "Documents" or use the substituted version:
# "Important  " = "  "
 
[c]
symbol = "© "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[docker_context]
symbol = "🐳 "
style = "bg:#06969A"
format = '[[ $symbol $context ](bg:#06969A)]($style) $path'
 
[elixir]
symbol = "💧 "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[elm]
symbol = "🌳 "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[git_branch]
symbol = "☊"
style = "bg:#FCA17D"
format = '[[ $symbol $branch ](bg:#FCA17D)]($style)'
 
[git_status]
style = "bg:#FCA17D"
format = '[[($all_status$ahead_behind )](bg:#FCA17D)]($style)'
 
[golang]
symbol = "🐹 "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[haskell]
symbol = "λ "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[java]
symbol = "☕ "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[julia]
symbol = "ஃ "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[nodejs]
symbol = "🔷 "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[nim]
symbol = "👑 "
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[rust]
symbol = "🦀"
style = "bg:#86BBD8"
format = '[[ $symbol ($version) ](bg:#86BBD8)]($style)'
 
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "bg:#33658A"
format = '[[ 🤍 $time ](bg:#33658A)]($style)'

Khởi động lại terminal và terminal prompt của bạn sẽ trông giống hệt như dấu nhắc lệnh trong hình ảnh. Bạn có thể tìm kiếm thêm các cài đặt preset và thử xem cái nào phù hợp với bạn nhất.

Thứ Năm, 28/07/2022 11:17
52 👨 397
0 Bình luận
Sắp xếp theo