Hộp công cụ đầu cuối siêu hiện đại

May 10 2023
Các công cụ dòng lệnh, trình bao và thiết bị đầu cuối thiết lập tiêu chuẩn vào năm 2023. Tất cả các nhà phát triển đều sử dụng thiết bị đầu cuối; đối với một số người, toàn bộ quy trình làm việc của họ là thiết bị đầu cuối Bài đăng này giới thiệu Hộp công cụ thiết bị đầu cuối siêu hiện đại — thiết bị đầu cuối, trình bao và công cụ dòng lệnh thiết lập tiêu chuẩn vào năm 2023 Kitty với tư cách là Trình giả lập thiết bị đầu cuối Kitty là trình giả lập thiết bị đầu cuối — nó là một giải pháp thay thế cho Thiết bị đầu cuối Gnome , Alacritty hoặc Windows Terminal.

Các công cụ dòng lệnh, shell và terminal thiết lập tiêu chuẩn vào năm 2023.

Được tạo ra với sự khuếch tán ổn định. Lời nhắc: 'màn hình thiết bị đầu cuối máy tính: 0.3, in chương trình shell ra màn hình thiết bị đầu cuối: 0.3, kiểu dáng của chàng trai, rực rỡ, tươi sáng'. Hạt giống: 42.

Tất cả các nhà phát triển đều sử dụng thiết bị đầu cuối; đối với một số người, toàn bộ quy trình làm việc của họ là thiết bị đầu cuối

Bài đăng này giới thiệu Hộp công cụ đầu cuối siêu hiện đại — các công cụ đầu cuối, trình bao và dòng lệnh thiết lập tiêu chuẩn vào năm 2023

Kitty là Trình giả lập thiết bị đầu cuối

Kitty là trình giả lập thiết bị đầu cuối — nó là một giải pháp thay thế cho Thiết bị đầu cuối Gnome, Alacritty hoặc Windows Terminal.

Trình duyệt chủ đề Kitty tích hợp sẵn, có thể truy cập bằng cách chạy `$kitty +kitten themes`.

Trình giả lập thiết bị đầu cuối là chương trình chạy thiết bị đầu cuối của bạn. Các hệ điều hành (HĐH) khác nhau cung cấp các trình giả lập thiết bị đầu cuối khác nhau, dưới dạng một phần của HĐH hoặc dưới dạng các chương trình của bên thứ ba có thể cài đặt.

Kitty là trình giả lập thiết bị đầu cuối của bên thứ ba, được tăng tốc GPU. Kitty nhanh, có khả năng tùy biến cao và mã nguồn mở.

Cấu hình được thực hiện bằng kitty.conftệp văn bản:

# $XDG_CONFIG_HOME/kitty/kitty.conf

font_family      Operator Mono Book
font_size 14.0
scrollback_lines 2000

Mẹo — khi thay đổi cài đặt Kitty trong kitty.conf, bạn cần khởi động lại hoàn toàn chương trình Kitty.

Zsh & Prezto dưới dạng Shell

Zsh là một shell được viết bằng C — nó là một giải pháp thay thế cho Bash hoặc Fish.

Shell là giao diện văn bản của hệ điều hành chạy bên trong thiết bị đầu cuối. Các lệnh Shell thực hiện các tác vụ như tạo tệp và chạy chương trình.

Zsh là một shell nguồn mở, cung cấp nhiều chức năng và khả năng tùy biến hơn Bash.

Zsh được cấu hình bằng một .zshrctệp:

# ~/.zshrc

HISTSIZE=9999
alias brew='arch -x86_64 brew'
export PATH="$HOME/dotfiles/scripts:$PATH"

Các tính năng của Prezto bao gồm đánh dấu cú pháp và hoàn thành tab lệnh. Hoàn thành tab rất hữu ích để khám phá các công cụ dòng lệnh mới một cách tương tác.

Prezto được cấu hình bằng một .zpreztorctệp:

# ~/.zpreztorc

zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'git' \
  'syntax-highlighting' \
  'history-substring-search' \
  'autosuggestions' \
  'prompt'

Neovim với tư cách là Trình soạn thảo văn bản

Neovim là một trình soạn thảo văn bản được viết bằng Lua — nó là một giải pháp thay thế cho Vim, Nano hoặc Emacs.

Neovim là sản phẩm kế thừa phổ biến của Vim. Toàn bộ hệ sinh thái các phần bổ trợ Vim được viết bằng Vimscript hoạt động trong Neovim, bên cạnh hệ sinh thái nhộn nhịp gồm các phần bổ trợ Neovim được viết bằng Lua.

Một Neovim được định cấu hình tốt có các máy chủ ngôn ngữ để tự động hoàn thành (các máy chủ ngôn ngữ giống nhau có sẵn trong VS Code), đánh dấu cú pháp bằng Treesitter và Kính thiên văn để tìm kiếm qua các loại danh sách khác nhau.

Cấu hình của Neovim được thực hiện trong Lua — bắt đầu với một init.luatệp:

-- $XDG_CONFIG_HOME/nvim/init.lua

--  set size of a tab to be 4
--  vim command line `:set tabstop=2`
--  vimscript `set tabstop=2`
vim.opt.set.tabstop = 2

--  run vimscript in lua
vim.cmd([[set tabstop=2]])

--  set variable
--  vimscript `let g:zoom#statustext = 'Z'`
vim.g['zoom#statustext'] = 'Z'

Mẹo — đăng ký Tuần này ở Neovim để nhận bản tin hàng tuần về hệ sinh thái Neovim nhộn nhịp.

Tmux cho nhiều thiết bị đầu cuối

Tmux là một bộ ghép kênh đầu cuối được viết bằng C — nó là một giải pháp thay thế cho Màn hình hoặc chạy các đầu cuối trong nhiều cửa sổ.

Bộ ghép kênh đầu cuối cho phép bạn quản lý nhiều phiên đầu cuối trong một cửa sổ.

Tmux cung cấp cho bạn các phiên liên tục, quản lý cửa sổ và ngăn với các liên kết phím có thể tùy chỉnh.

Tmux sử dụng hệ thống phân cấp các khái niệm để quản lý nhiều thiết bị đầu cuối:

  • Một cửa sổ là một khu vực hình chữ nhật trong một cửa sổ. Mỗi khung hiển thị một phiên cuối riêng biệt.
  • Cửa sổ là vùng chứa toàn màn hình chứa một hoặc nhiều ngăn.
  • Phiên là tập hợp của một hoặc nhiều cửa sổ.

Bạn có thể bắt đầu một phiên Tmux mới với tmux new:

#  create a session named `work`
$ tmux new -s work

Bạn có thể kết nối lại với phiên Tmux đang chạy bằng tmux attach:

#  reattach to last session
$ tmux attach

#  reattach the session named `work`
$ tmux attach -t work

  • Ctrl-b c: Tạo một cửa sổ mới.
  • Ctrl-b n: Chuyển sang cửa sổ tiếp theo.
  • Ctrl-b p: Chuyển sang cửa sổ trước đó.

# ~/.tmux.conf

set -g default-terminal "screen-256color"
setw -g mode-keys vi
set -g status-left "#[fg=green,bold]Session: #S #[fg=white,bold]| #[fg=yellow,bold]Window: #W"
set-option -g prefix C-a

Starship cho một lời nhắc khá

Starship là dấu nhắc shell được viết bằng Rust — nó là một giải pháp thay thế cho Powerlevel10k hoặc Pure.

Lời nhắc là một phần có thể tùy chỉnh của dòng lệnh cung cấp ngữ cảnh như thư mục hiện tại hoặc nhánh Git.

Starship cung cấp cho bạn lời nhắc nhanh chóng, có thể tùy chỉnh. Cấu hình được thực hiện bằng một starship.tomltệp:

# $XDG_CONFIG_HOME/starship.toml

[username]
disabled = true

[hostname]
disabled = true

[git_status]
ahead = "↑"
behind = "↓"

[directory]
truncation_length = 2

Ripgrep để tìm kiếm văn bản

Ripgrep là một trình tìm kiếm tệp văn bản được viết bằng Rust — nó là một giải pháp thay thế cho grep hoặc find.

Tính năng chính của Ripgrep là tốc độ — nó nhanh hơn các công cụ thay thế.

Công dụng cơ bản của Ripgrep là tìm kiếm một mẫu trong một thư mục:

$ rg 'pattern' ~/project

alias g='rg -l --hidden --smart-case --line-buffered'

$ g 'some-pattern' some/directory

fzf để tìm kiếm mờ

fzf là một công cụ tìm mờ được viết bằng Go — nó là một giải pháp thay thế cho tìm kiếm xác định.

fzf cho phép bạn tìm kiếm bằng thuật toán tìm kiếm mờ phù hợp với các mẫu biểu thức chính quy trên thông tin không đầy đủ. Điều này cho phép các kết quả tìm kiếm xuất hiện khi bạn nhập, ngay cả khi có lỗi chính tả.

fzf có thể chạy như một chương trình dòng lệnh:

$ fzf

#  fuzzy search all files in the `work` directory
$ cat ~/work/** <TAB>

fzf có thể được sử dụng với các phụ trợ tìm kiếm khác nhau, chẳng hạn như find, grep hoặc Ripgrep.

Mẹo — sử dụng Ripgrep làm phụ trợ fzf bằng cách đặt FZF_DEFAULT_COMMANDbiến môi trường export FZF_DEFAULT_COMMAND='rg --files --hidden'.

Exa để liệt kê các tập tin

Exa là một chương trình liệt kê tệp được viết bằng Rust — nó là một chương trình thay thế cho ls và tree.

Một chương trình liệt kê tệp hiển thị cho bạn danh sách các tệp và thư mục. Exa cung cấp các tính năng như biểu tượng, tích hợp Git và các tùy chọn sắp xếp linh hoạt.

Exa có một số chế độ xem cơ bản khác nhau:

#  list as a grid
$ exa -G
bp-historical-data  cities  data-science-south-data  predict-newspapers  README.md  titanic

#  list each item on one line
$ exa -1
bp-historical-data
cities
data-science-south-data
predict-newspapers
README.md
titanic

#  list as a table - same as `ls -l`
$ exa -l
drwxr-xr-x   - adam 26 Apr 20:20 bp-historical-data
drwxr-xr-x   - adam 14 Feb 16:42 cities
drwxr-xr-x   - adam 26 Apr 20:25 data-science-south-data
drwxr-xr-x   - adam 28 Apr 14:52 predict-newspapers
.rw-r--r-- 124 adam 29 Apr 15:20 README.md
drwxr-xr-x   - adam 26 Apr 17:31 titanic

$ exa --tree --level=2
├── bp-historical-data
│  ├── __pycache__
│  ├── dashboard.py
│  ├── data
│  ├── notebooks
│  ├── README.md
│  └── requirements.txt
├── README.md
└── titanic
   ├── data
   ├── requirements.txt
   ├── titanic.ipynb
   ├── titanic.md
   └── titanic.py

Bí danh của tôi cho Exa là:

alias ls = 'exa --long --icons --no-permissions --no-user --git --time-style long-iso --time=modified --group-directories-first -a' 
alias tree = 'exa --tree'

Bat để xem tập tin

Bat là một trình xem tệp được viết bằng Rust — nó là một giải pháp thay thế cho cat.

Trình xem tệp là một chương trình hiển thị nội dung của tệp.

Bat cung cấp các chức năng như tô sáng cú pháp, tích hợp Git và phân trang tệp tự động.

Bat được sử dụng bằng cách trỏ chương trình vào một tệp văn bản:

$ bat path/to/file

Buồn thay văn bản

Sad là trình chỉnh sửa luồng được viết bằng Rust — nó là một giải pháp thay thế cho sed hoặc awk.

Trình chỉnh sửa luồng thực hiện các thao tác tìm kiếm và thay thế trên luồng văn bản hoặc tệp văn bản.

Sad (Space Age seD) hiển thị các thay thế được đề xuất trước khi áp dụng chúng, cho phép bạn kiểm tra và chọn những thay thế sẽ thực hiện trước khi thực hiện chúng.

Sad được sử dụng như một chương trình dòng lệnh:

$ sad '<pattern>' '<replacement>'

$ cat README.md
# Data Science South Projects

Example projects for the courses at [Data Science South](https://www.datasciencesouth.com/).

$ exa -1 | sad "courses" "modules"      

$ cat README.md
# Data Science South Projects

Example projects for the modules at [Data Science South](https://www.datasciencesouth.com/).

jq để làm việc với JSON

jq là bộ xử lý JSON được viết bằng C — nó là một giải pháp thay thế cho fx, jp hoặc xử lý JSON bằng ngôn ngữ như Python.

jq cho phép bạn lọc, biến đổi và thao tác dữ liệu JSON, rất hữu ích khi làm việc với các phản hồi API, tệp cấu hình và kho lưu trữ dữ liệu.

Ý tưởng trung tâm trong jq là bộ lọc, được áp dụng cho JSON đầu vào:

$ jq 'filter_expression' input.json

  • .key- trích xuất giá trị của một khóa,
  • .[]- trích xuất tất cả các giá trị từ một mảng,
  • .[2]- trích xuất giá trị thứ ba từ một mảng.

#  extract the `name` key
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.name'
"Alice"

#  extract the second element from the `data` list
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.data[1]'
12

zoxide cho Điều hướng

zoxide là một tiện ích điều hướng đầu cuối được viết bằng Rust — nó là một tiện ích thay thế cho cd, pushd và popd.

zoxide chuyển đến các thư mục từ lịch sử truy cập của bạn. Nó gán điểm cho mỗi thư mục dựa trên tần suất và thời gian gần đây chúng được truy cập.

zoxide được sử dụng như một chương trình dòng lệnh:

#  move to a folder that best matches `code`
$ z code

Tig để xem lịch sử Git

Tig là trình xem lịch sử Git được viết bằng C — đây là một giải pháp thay thế cho việc sử dụng Git CLI hoặc Lazygit.

Tig cung cấp một giao diện được mã hóa màu, có thể điều hướng để duyệt qua lịch sử cam kết Git của bạn. Nó cho phép tìm kiếm các cam kết, xem biểu đồ cam kết và hiển thị các tệp tại một thời điểm khác.

Tig được chạy dưới dạng chương trình dòng lệnh:

$ tig

direnv cho Quản lý biến môi trường

direnv tải và hủy tải các biến môi trường shell — được viết bằng Go, đây là một giải pháp thay thế cho việc sử dụng$ source .env.

direnv tự động tải và hủy tải các biến môi trường khi bạn điều hướng giữa các thư mục dự án khác nhau.

Sử dụng direnv để tránh tải các biến môi trường theo cách thủ công và bảo vệ chống lại các biến môi trường từ một dự án được đặt trong một dự án khác.

direnv sử dụng một .envrctệp để chứa các biến cụ thể cho dự án của bạn, tệp này được chạy dưới dạng tập lệnh trình bao:

# .envrc

export PROJECT_NAME="alpha"

$ direnv allow .

Một thực tế phổ biến là tùy chọn tải một bí mật hoặc riêng tư .envrc:

source_env_if_exists .envrc.secret

Mẹo — Sử dụng direnv exec <path> <command>để chạy lệnh với môi trường được tải cho một thư mục cụ thể mà không cần điều hướng đến thư mục đó.

Lazydocker cho Docker

Lazydocker quản lý bộ chứa Docker và hình ảnh — được viết bằng Go, đây là giải pháp thay thế cho Docker Desktop hoặc Docker CLI.

Lazydocker giúp dễ dàng xem, bắt đầu, dừng và xóa vùng chứa và hình ảnh thông qua giao diện người dùng đầu cuối. Nó cũng có thể cung cấp tổng quan thời gian thực về trạng thái vùng chứa, nhật ký và mức sử dụng tài nguyên.

Lazydocker được sử dụng như một chương trình dòng lệnh:

$ lazydocker

Markserv để xem trước Markdown

Markserv kết xuất các tệp Markdown trong trình duyệt — được viết bằng Node.js, đây là giải pháp thay thế cho Grip hoặc Markdown Preview.

Markserv kết xuất Markdown thành HTML trong thời gian thực, tự động phản ánh các thay đổi khi bạn thực hiện chúng.

Markserv hỗ trợ Markdown có hương vị GitHub, có nghĩa là nó định dạng các khối mã và bảng giống như Github. Markserv là công cụ tuyệt vời để xem trước README.mdtệp mà không cần đẩy lên Github.

Để khởi động máy chủ Markserv trên cổng 8010:

$ markserv -p 8010

Ngrok để chia sẻ máy chủ cục bộ

ngrok tạo đường hầm tới máy chủ cục bộ của bạn — được viết bằng Go, đây là giải pháp thay thế cho Serveo, LocalTunnel hoặc PageKite.

ngrok hiển thị một máy chủ cục bộ phía sau NAT hoặc tường lửa với internet. Điều này hữu ích để chia sẻ máy chủ phát triển với nhóm của bạn.

Bạn có thể bắt đầu một đường hầm đến cổng 8000 bằng cách chạy:

$ ngrok http 8000

Bản tóm tắt

Hộp công cụ đầu cuối siêu hiện đại là:

  • Kitty cho thiết bị đầu cuối được tăng tốc GPU, có khả năng tùy biến cao,
  • Zsh cho shell & Prezto cho cấu hình Zsh,
  • Neovim với tư cách là trình soạn thảo văn bản,
  • Tmux để quản lý nhiều thiết bị đầu cuối,
  • Starship cho một lời nhắc khá nhanh,
  • Ripgrep để tìm kiếm tệp văn bản,
  • fzf để tìm kiếm mờ,
  • Exa để liệt kê các tập tin,
  • Bat để xem các tập tin,
  • Thật buồn khi tìm và thay thế trong tệp văn bản,
  • jq để làm việc với JSON,
  • zoxide để điều hướng,
  • Tig để xem lịch sử Git,
  • direnv để quản lý biến môi trường,
  • Lazydocker cho Docker,
  • Markserv để xem trước Markdown,
  • ngrok để hiển thị các máy chủ cục bộ với internet.

Học đều đặn từng công cụ một để trở thành bậc thầy về thiết bị đầu cuối

Được xuất bản lần đầu tại https://www.datasciencesouth.com .

Tăng cấp mã hóa

Cảm ơn vì đã là một phần của cộng đồng của chúng tôi! Trước khi bạn đi:

  • Vỗ tay cho truyện và theo dõi tác giả
  • Xem thêm nội dung trong ấn phẩm Level Up Coding
  • Khóa học phỏng vấn mã hóa miễn phí ⇒ Xem khóa học
  • Theo dõi chúng tôi: Twitter | LinkedIn | bản tin