Nhảy tới nội dung

Một bài viết được gắn thẻ "windows"

Xem tất cả Thẻ

· Một phút để đọc
ManhPT

TL;DR

Bài viết hướng dẫn cách cài đặt Oh-My-Posh vào Powershell.

Là một developer thì chắc hẳn bạn đã sử dụng shell/bash trên linux hay macos. Mà đã sử dụng shell/bash thì chắc cũng sẽ biết đến Oh My Zsh - một công cụ huyền thoại cho những ai yêu dòng lệnh (command line).

Một developer xuất thân MacOS như mình khi chuyển môi trường sang Windows đã luôn cảm thấy CMD hay Powershell rất tù khi phải làm việc chéo cánh với các server Linux. Ngoài ra khi làm việc với git command thì mình cũng bị phụ thuộc vào Git Bash để nhận được gợi ý khi gõ lệnh.

Sau một thời giản dài sống chung với lũ hồi tìm hiểu thì cuối cùng cũng tìm ra được chân ái - Oh My Posh. Oh My Posh giúp powershell trở nên đầy màu sắc đi kèm với những thông tin hữu ích liên quan đến project hiện tại và cả git nữa, quá ngon rồi 😁 mlem mlem...

powershell-ohmyposh-screenshot

Giao diện powershell sau khi được cài đặt OhMyPosh và danh sách themes để bạn chọn

1. Cài đặt Oh-My-Posh

Tài liệu chính chủ của Oh My Posh cũng đã có hướng dẫn rất đầy đủ rồi nhưng mình vẫn tóm tắt lại theo các bước cài đặt bằng Powershell cho tiện. Để cài đặt thì bạn mở Powershell với quyền Admin lên và:

Set-ExecutionPolicy RemoteSigned
Install-Module oh-my-posh -Scope CurrentUser

2. Sử dụng Oh-My-Posh

Để bắt đầu sử dụng Oh My Posh ngay trong powershell thì ta chỉ cần gõ lệnh sau:

Set-PoshPrompt -Theme honukai

Nhưng mỗi lần muốn sử dụng lại phải gõ lệnh thì bất tiện vl 🙄. Để đảm bảo mỗi lần mở Powershell lên mà Oh My Posh cũng sẵn sàng vào việc luôn thì cần sửa powershell profile (giống như cách ta update ~/.bash_profile ở linux/macos vậy):

notepad $PROFILE
# hoặc
notepad C:\Users\$env:USERNAME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Kết quả của lệnh trên là để cập nhật nội dung file Microsoft.PowerShell_profile.ps1, ta chỉ cần thêm nội dung như sau vào:

Set-PoshPrompt -Theme honukai

Xong bước này thì chỉ cần khởi động lại Powershell là bạn đã có thể sử dụng Oh My Posh rồi, nhưng nhìn nó sẽ sai sai như thế này:

oh-my-posh-with-out-nerd-fonts

3. Cài đặt font hỗ trợ Oh-My-Posh

Cái "sai sai" ở đây là lỗi font chữ nên bạn có thể nhìn thấy khá nhiều ký tự ⍰. Tài liệu của Oh My Posh có hướng dẫn rất rõ ràng là các bạn nên sử dụng Nerd Fonts (tham khảo), và họ khuyến khích sử dụng font Meslo LGM NF (tải về tại đây).

Bạn chỉ cần tải Meslo.zip về rồi giải nén ra rồi cài đặt.

cai-dat-meslo-font-oh-my-posh

Chưa xong, cần phải thay font cho Powershell nữa, click chuột phải vào thanh menu của cửa sổ Powershell > Properties > tab Fonts.

choose-font-meslo-oh-my-posh

Chọn font MesloLGM NF như ảnh trên rồi click OK. Thế là xong rồi, khởi động lại Powershell để hưởng thụ thành quả thôi. Max xịn sò 😎.

4. Thay đổi giao diện cho Oh-My-Posh (Optional)

Nếu bạn để ý một chút khi dùng Oh My Zsh thì nó sử dụng theme mặc định là robbyrussel. Đương nhiên là Oh My Zsh cũng cung cấp lựa chọn này cho bạn nếu bạn muốn có được cảm nhận tương đồng nhất có thể như với khi sử dụng bash trên linux/macos.

Như ở bước 2 mình có đặt sẵn câu lệnh Set-PoshPrompt -Theme honukai, có nghĩa là mình chọn sẵn theme honukai - theme này thì text không có màu nền nên khi mình sử dụng Powershell với VScode hay Jetbrains IDEs đều cho cảm giác dễ chịu.

Bạn có thể dùng lệnh Get-PoshThemes để liệt kê và chọn trong danh sách các themes có sẵn.

Get-PoshThemes

· Một phút để đọc
ManhPT

Chuyển từ MacOS hay Ubuntu về sử dụng Windows

Mình gần như đã từng là fan của Apple khi mà sử dụng iPhone, Macbook cho cuộc sống và công việc. Việc cho phép cài đặt phần mềm qua dòng lệnh khá là lý tưởng với một developer như mình.

Ngoài ra, ngày còn khờ dại, đọc được thông tin đâu đó về việc NodeJs được tạo ra trên MacOS đã khiến mình quyết định mua chiếc Macbook đầu tiên - mình là một NodeJS Developer.

Chocolatey và sự ảnh hưởng của thói quen trên MacOS

Sau khoảng 5 năm liên tục sử dụng MacOS thì cuối cùng mình đã quyết định quay trở lại với Windows. Lý do là muốn một sự thay đổi và cũng là để phục vụ niềm yêu thích chơi game (thực ra là sau khi xem phim The Witcher). Và đương nhiên khi trở lại sử dụng windows mình đã gặp phải một số vấn đề. Vấn đề lớn nhất mà mình thấy là việc cài đặt phần mềm và các công cụ phát triển phần mềm.

Search một hồi thì cũng tìm ra Chocolatey, người anh em cùng cha khác ông nội với Homebrew (MacOS) và Snap (Ubuntu). Trải nghiệm sử dụng khá tương đồng, chỉ tiếc là số lượng trong thư viện của nó hơi thua kém so với Homebrew. Bạn có thể cài đặt chocolatey theo hướng dẫn tại đây: https://chocolatey.org/install.

Vấn đề về quản lý nhiều nodejs version trên windows

Với Chocolatey bạn có thể cài đặt hầu hết những phần mềm phổ biến, thậm chí có thể upgrade các phần mềm đã được cài đặt qua Chocolatey chỉ với một câu lệnh. Như mình đã nói ở trên, mình là một NodeJS Developer; và mình nhanh chóng nhận ra vấn đề: quản lý và sử dụng nhiều nodejs version cùng lúc.

Tất nhiên là mình hay bạn đều nghĩ ngay đến nvm. Nghĩ sao là làm vậy thì rất tiếc là nvm mà chúng tay vẫn hay dùng trên MacOS hay các linux distro khác lại không hoạt động trên windows. Search luôn cụm từ "nvm windows" thì cũng tìm ra được một tool phù hợp và thậm chí còn có thể cài đặt được qua Chocolatey: nvm-windows.

choco install -y nvm

Để cài đặt và sử dụng nodejs với nvm thì bạn chỉ cần:

# nvm install <version>
# nvm use <version>
nvm install 12.16.1
nvm use 12.16.1
node --version # should show 12.16.1
nvm install 10.19.0
nvm use 10.19.0
node --version # should show 10.19.0

Hoặc bạn có thể tham khảo thêm tại đây: https://github.com/coreybutler/nvm-windows#usage

Bước này optional

Có vẻ ổn rồi, mình cài đặt luôn nodejs-lts để sử dụng; nodejs-lts để tạo một bản nodejs và npm global cho phép lưu giữ các npm global packages. Bạn sẽ không bị mất chúng sau mỗi lần upgrade hoặc đổi version nodejs.

Trên MacOS, nvm thường tự động nhận diện bản nodejs global và coi nó là bản "nodejs system". Nếu muốn thay đổi giữa nodejs system và các nodejs version khác:

nvm use system
nvm use default
nvm use 12.16.1

NVM trên MacOS cho phép bạn chuyển đổi qua lại giữa "nodejs system" và các version nhất định. Nhưng rất tiếc là nvm-windows lại không có khả năng đó.

Cài đặt Nodejs và Yarn

Cuối cùng thì mình cũng tìm ra được vị cứu tinh, là Yarn. Rất may là có thể cài đặt yarn thông qua Chocolatey:

choco install -y yarn

Bạn cần chạy lệnh này trong PowerShell hoặc CMD với quyền Administrator. Sau khi cài đặt yarn thành công, bạn có thể cài đặt các global package như sau:

# yarn global add <package>
yarn global add lerna
yarn global add firebase-tools

Kết quả

Bây giờ thì các npm global packages bạn hay dùng sẽ được quản lý bởi yarn. Chúng sẽ không biến mất khi bạn thay đổi node version với nvm. Let's write some code!