Tuỳ chỉnh Windows Terminal siêu xịn xò

Việc tuỳ chỉnh terminal trên MacOS hay Linux thì rất đơn giản vì vốn dĩ terminal của nó đã mạnh mẽ sẵn, nhưng đối với Windows thì có vẻ hơi vất vả. Nhưng đó chỉ là quá khứ, gần đây Windows Terminal ra đời đã thay đổi hoàn toàn cách nhìn về termial trên Windows.

Bài viết này, chúng ta sẽ cùng tìm hiểu cách tuỳ chỉnh Windows Terminal để biến terminal trên windows trở nên xịn xò không thua kém gì MacOS, Linux.

Let’s get started !

tuỳ chỉnh windows terminal

Terminal, Command Prompt, PowerShell, WSL và Windows Terminal ?

  • Terminal: Là thiết bị đầu cuối, nó sẽ nhận input và trả ra output cho người dùng.
  • Shell: Là chương trình đọc các lệnh người dùng nhập vào, dịch nó ra và truyền đến terminal. Các Shell phổ biến như Zsh, Bash trên Linux, CMD và PowerShell trên Windows.
  • Command Prompt (CMD): Tên đầy đủ của nó là Windows Command Processor. Nó là một chương tình giao diện dòng lệnh ra đời từ thời Windows mới xuất hiện. Nó giúp chúng ta thao tác với chương trình máy tình thông qua các câu lệnh (command).
  • PowerShell (PS): Ra mắt lần đầu năm 2006 (Windows 7), PS thừa hưởng hầu như mọi thứ mà CMD có, đặc biệt là nó phức tạp và mạnh mẽ hơn rất nhiều so với CMD truyền thống. Nó là một ngôn ngữ kịch bản, sử dụng các lệnh gần ngôn ngữ tự nhiên được gọi là cmdlet.
  • Windows Subsystem for Linux (WSL): Windows 10 ra mắt tính năng WSL cho phép chúng ta chạy hệ điều hành Linux ngay trên máy Windows.
  • Windows Terminal (WT): Được Microsoft ra mắt năm 2019, WT sở hữu nhiều tính năng vô cùng ưu việt giúp tăng hiệu suất làm việc của người dùng terminal lên nhiều lần và WT là một dự án mã nguồn mở 😱

Lý do cài đặt và tuỳ chỉnh Windows Terminal

Là một lập trình viên, không ít thì nhiều bạn phải làm việc trên terminal. Có một terminal xịn xò, đầy đủ tính năng sẽ giúp bạn tăng cảm hứng làm việc, tiết kiệm thời gian nhiều hơn.

Trước đây, việc tuỳ chỉnh một terminal trên Windows chỉ dừng lại ở mức chỉnh màu sắc, aliases. Mình đã từng phải chuyển sang dùng Linux vì terminal của nó quá xịn xò. Nhưng do bên Windows có bộ Office và Adobe ngon quá mà Linux không có nên mình phải đành quay lại với Windows 😢

Cách đây vài tháng, thì mình biết đến WSL2 chạy Linux ngay trên Win, ngon lành luôn. Nhưng đáng tiếc là mỗi lần chạy nó cắn RAM máy thấy thương nên thôi 😱

Mình cũng đã tìm các nhà cung cấp thứ 3 như Cmder, Conemu như chưa thấy thoả mãn và cách đây 1 tuần mình tìm ra Windows Terminal. Nó như một cứu cánh trên con đường tìm một terminal chiếc hoàn hảo.

Bắt tay vào tuỳ chỉnh Windows Terminal

Mình hay dùng PowerShell (PS) nên sẽ custom cho PS là chính. Mình nghĩ bạn cũng nên dùng PS vì nó mạnh mẽ hơn rất nhiều so với CMD. Và đây là kết quả:

Kết quả tuỳ chỉnh Windows terminal

Bước 1: Cài đặt và tạo shortcut key cho Windows Terminal

Mặc định, WT được cài đặt sẵn trên hệ điều hành, bạn thử tìm kiếm "Windows Terminal" xem có chưa. Nếu chưa có bạn có thể tải trực tiếp trên Microsoft Store hoặc tải trên Github của WT, còn nhanh hơn thì bạn chạy lệnh này trên PS:

choco install microsoft-windows-terminal
choco upgrade microsoft-windows-terminal

Tạo shorcut mở nhanh WT:

Như trên Linux hay Mac, bạn chỉ cần bấm 1 tổ hợp phím là có thể mở nhanh terminal thay vì phải tìm nó rồi mở. Nhưng do WT là một ứng dụng có sẵn trên Windows nên bạn không thể tạo shortcut key như ứng dụng khác. Bạn có thể làm như sau:

Bước 1: Tạo một biến môi trường có giá trị như sau (nhớ thay YOUR_WINDOWS_USERNAME):

This PC > Properties > Advanced System Settings > Environment Variables > System Variables > Path > Add

C:\Users\<YOUR_WINDOWS_USERNAME>\AppData\Local\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe

Bước 2: Từ Desktop > Chuột phải > Shortcut > nhập wt > nhập tên shortcut > OK.

Bước 3: Chuột phải vào shortcut vừa tạo > nhập shortcut key. Từ giờ bạn có thể dùng nó để mở WT.

Tạo shortcut cho windows terminal

Bước 2: Custom theme

Mở WT sau đó vào Settings, chọn một shell mà bạn muốn custom (mình chọn PS), chỗ Color Scheme chọn theme mà bạn thích, sau đó nhớ bấm save là được.

custom theme windows terminal

Bạn cũng có thể thêm và chỉnh sửa các theme tuỳ ý bằng cách bấm vào Open JSON file, sau đó kéo xuống phần scheme để thêm và sửa theme. Ngoài ra, bạn có thể thay đổi background, font chữ tuỳ ý, bạn tự nghịch thêm nhé 😉

custom theme windows terminal

Bạn có thể chọn những theme có sẵn ở đây

Bước 3: Cài Powerline Theme

Powerline theme là các ký tự ở trước mỗi câu lệnh. Linux sẽ có Oh-my-zsh còn bên PS sẽ có Oh-my-posh 🤣

Oh my posh
  • B1: Cài NERD Font để tránh lỗi font chữ, mình khuyên nên dùng font Cascadia Code NF vì nó hỗ trợ tiếng Việt và cả Ligatures font. Tham khảo thêm ở đây
  • B2: Mở bằng PS với quyền Admin để cài oh-my-posh
Install-Module oh-my-posh -Scope AllUsers
Install-Module posh-git -Scope AllUser
  • B3: Mở file $profile của PS bằng lệnh notepad $profile. Nếu chưa có thì cứ nhấn tạo luôn lúc đó là được. Sau đó thêm các dòng này vào để PS load các module khi khởi động.
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme {Tên theme}
  • B4: Reload lại $profile bằng lệnh . $profile hoặc & $profile. Bạn có thể xem danh sách theme bằng lệnh Get-PoshThemes -listGet-PoshThemes.
  • Tips: Tuỳ chỉnh lại các theme theo ý muốn, bằng các chạy lệnh Get-PoshThemes -list để xem đường dẫn chứa file theme. Sau đó, mở file mà bạn muốn chỉnh sửa và nghịch thôi.

Một vài tips hay

Những thứ hay ho của WT

  • Bạn có thể gọi nhanh lệnh bằng cách mở Command Palette (Ctrl + Shift + P) như trên Visual Code.
  • Bạn có thể sử dụng Ctrl C, Ctrl V, Ctrl X, Ctrl A như trên các text editor khác 😎
  • Bạn có thể mở nhiều tab khác nhau trên cùng một WT và các tab này có thể chạy độc lập với nhau, cũng như chạy các chương trình shell khác nhau. Đơn giản bạn chỉ cần bấm vào dấu ➕ hoặc phím mũi tên và chọn shell thích hợp.
  • Không những thế, WT còn cho phép bạn chia tab (split pane) hiện tại thành nhiều khu làm việc độc lập. Tính năng này gọi là terminal multiplexers rất mạnh mẽ như tmux bên Linux.
Terminal Multiplexers
Terminal Multiplexers

Tạo Aliases

Với Alias (bí danh) thì chúng ta có thể viết tắt các câu lệnh khi gõ trên terminal, ví dụ mình gõ gs = git status. Từ đó, việc gõ các lệnh trở nên nhanh chóng và chúng ta cũng không cần phải nhớ quá nhiều lệnh.

Trên CMD sẽ dùng DOSKEY để tạo alias, bạn đọc thêm ở đây. Ở bài này mình sẽ tạo alias với PS.

  • B1: tạo 1 file alias.ps1.
  • B2: Mở file vừa tạo và điền các alias của bạn. Có 2 cách là dùng Set-Alias và dùng Function. Cái lợi của dùng function là bạn có thể truyền parameter vào câu alias. Một vài alias ví dụ của mình:
# back dir
Function b{ cd .. }
# new file
Function touch{ New-Item -Path . -Name $args[0] }
# view choco list
Function chocolist{ choco list --localonly }
#open $profile with nodepad
Function op{ notepad $PROFILE }

# --------- npm ---------
Function ni{ npm install $args }
Function nig{ npm install -g $args }
Function nid{ npm install --save-dev $args }
Function ns{ npm start }
Function nt{ npm run test }
Function nb{ npm run build }
Function nd{ npm run dev }

# --------- yarn ---------
Function yi{ yarn install }
Function ys{ yarn start }
Function yt{ yarn test }
Function yb{ yarn build }

# --------- Git, Github ---------
Function gs{ git status }
Function gi{ git init }
Function gcf{ git clean -f $args }
Function gsh{ git show $args }
Function gl{ git log }  
Function gd{ git diff $args }
Function ga{ git add $args }
Function gcm{ git commit -m $args }

# --------- Neovim ---------
Function vi{ nvim $args }
  • B3: Load file Alias vào $profile. Mở $profile chèn lệnh sau Import-Module "<Path file alias>". Sau đó reload lại $profile.
  • B4: Kiểm tra các Alias có sẵn của PS Get-Alias xem có bị trùng với Alias bạn mới tạo không. Nếu có hãy thêm các lệnh xoá những alias đó trước khi tạo alias mới. Ví dụ:
Remove-Item Alias:gi -Force
Remove-Item Alias:gp -Force
Remove-Item Alias:gl -Force
Remove-Item Alias:gcm -Force
Remove-Item Alias:gc -Force
Remove-Item Alias:ni -Force

Gợi ý câu lệnh (Auto-suggestion)

Giống như zsh-autosuggestion trên Linux, khi bạn gõ lệnh thì sẽ có một đoạn chữ mờ phía sau nhắc các lệnh bạn thường gõ. Lúc này bạn chỉ cần bấm tab hoặc phím mũi tên thì câu lệnh đó sẽ tự động điền đầy đủ.

Để làm được điều bạn chỉ cần cài đặt Predictive IntelliSense là được nhé.

Install-Module PSReadLine -RequiredVersion 2.1.0

Thêm 2 lệnh sau vào $profile và reload lại.

Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History

Di chuyển thần tốc với z

Tương tự zsh-z bên Linux, bạn có thể di chuyển nhanh giữa các thư mục hay dùng chỉ với 1 phần tên của đường dẫn. Ví dụ bạn đã từng đến thư mục C:\project\abc\name\dyno-nguyen thì bạn chỉ cần gõ z dyno thì nó sẽ đến ngay đó.

Trên PS bạn có thể dùng zLocation, mình thì dùng z vì thấy nó gọn nhẹ hơn. z hoạt động trên cơ chế là ghi nhớ các đường dẫn mà bạn từng sử dụng và đánh chỉ số lên đó.

Install-Module z -AllowClobber

Thêm Import-Module z vào $profile và reload lại.

Tạm kết

Và đó là tất tần tật những gì mình đã làm để tuỳ chỉnh Windows Terminal của mình. Bạn có thể tham khảo các cài đặt của mình tại Github này. Hy vọng sau khi đọc bài viết này, bạn sẽ tuỳ chỉnh được một em terminal siêu xịn xò nhé 😋

Cảm ơn bạn đã đọc bài viết ❤

Bạn có thể đọc thêm:

Give a Comment