Sử dụng Oh My Posh để cấu hình theme cho PowerSell và chia sẻ nó với Bash trong WSL Ubuntu.
Cài đặt Scoop
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
# Scoop use aria2 for multi-connection downloads
scoop install aria2
scoop config aria2-warning-enabled false
# Add the extras bucket
scoop bucket add extras
Cài đặt Oh My Posh
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
Khởi chạy Terminal dưới quyền admin, cài Nerd Fonts:
oh-my-posh font install
Chọn Meslo từ danh sách.
Cấu hình font mặc định Terminal trong settings.json
(dùng phím tắt CTRL+SHIFT+,):
{
"profiles":
{
"defaults":
{
"font":
{
"face": "MesloLGM NF"
}
}
}
}
Tạo file cấu hình theme:
New-Item -Path '~/.config/oh-my-posh/config.omp.json' -ItemType File -Force
notepad "$HOME/.config/oh-my-posh/config.omp.json"
Nhập vào config.omp.json
một theme từ https://ohmyposh.dev/docs/themes hoặc lấy mẫu từ gist này.
Lưu cấu hình theme vào PowerShell profile, mở và sửa bằng lệnh:
notepad $PROFILE
Nếu hiện cảnh báo path không tồn tại thì tạo PowerShell profile bằng lệnh:
New-Item -Path $PROFILE -Type File -Force
Thêm vào PowerShell profile:
oh-my-posh init pwsh --config ~/.config/oh-my-posh/config.omp.json | Invoke-Expression
Sau mỗi thay đổi, bạn cần tải lại profile:
. $PROFILE
Hiển thị thông tin git của thư mục hiện tại. Oh My Posh có sẵn module này nhưng bị tắt, kích hoạt nó bằng cách thêm vào PowerShell profile:
$env:POSH_GIT_ENABLED = $true
Sử dụng Tab để hoàn tất câu lệnh theo kiểu Bash.
Install-Module -Name PowerShellGet -Force
Exit
Install-Module PSReadLine
scoop install fzf psfzf
Thêm vào PowerShell profile:
Set-PsFzfOption -PSReadlineChordReverseHistory 'Ctrl+r' -EnableAliasFuzzyEdit -EnableAliasFuzzyKillProcess
Sau đó bạn có thể dùng:
- Phím tắt Ctrl+T: Chọn filepath.
- Phím tắt Ctrl+R: Lịch sử dòng lệnh.
- Phím tắt Alt+C: Chọn thư mục.
- Lệnh
fe <filepath>
: Mở và chỉnh sửa file. - Lệnh
fkill
: Kết thúc một tiến trình Windows.
Thêm vào PowerShell profile:
Import-Module PSReadLine
Set-PSReadLineKeyHandler -Key Tab -Function Complete
Một thay thế cho cd
với khả năng truy cập nhanh đường dẫn đã nhập trước đó chỉ bằng từ khóa.
scoop install zoxide
Thêm vào cuối PowerShell profile:
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell | Out-String)
})
Sau đó bạn có thể dùng:
- Lệnh
z <filepath>
: Truy cập thư mục thay chocd
. - Lệnh
z <Từ khóa>
: Truy cập thư mục đã từng truy cập bằngz
. - Lệnh
z -
: Quay lại thư mục vừa truy cập bằngz
. - Lệnh
zi <Từ khóa>
: Lựa chọn thư mục đã từng truy cập bằngz
.
Cài đặt Oh My Posh
sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
sudo chmod +x /usr/local/bin/oh-my-posh
Thêm vào ~/.profile
:
export WINHOME=$(wslpath "$(wslvar USERPROFILE)")
eval "$(oh-my-posh init bash --config $(echo $WINHOME)/.config/oh-my-posh/config.omp.json)"
Sau khi thêm, tải lại profile:
source ~/.profile
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
Thêm vào ~/.profile
:
eval "$(zoxide init bash)"
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
source ~/.bashrc