Tạo một thiết lập Terminal hiện đại

Table of Contents
Tôi đã tinh chỉnh terminal của mình trong nhiều năm. Có những giai đoạn tôi dành nhiều thời gian cấu hình prompt hơn là thực sự viết code (cái bẫy kinh điển). Nhưng sau nhiều lần lặp lại, tôi đã có một thiết lập nhanh, hữu ích và không yêu cầu tôi phải nhớ cú pháp cấu hình phức tạp mỗi khi tôi dùng một máy mới.
Loạt bài Làm chủ Linux & Terminal hiện đại
Nền tảng
Màu 24-bit. Nếu terminal của bạn vẫn trông như terminal những năm 1980, hãy sửa lỗi này trước. Hầu hết các trình giả lập hiện đại đều hỗ trợ nó ngay lập tức, và sự khác biệt sẽ rõ rệt ngay khi bạn mở một diff có màu hoặc một output lint.
Cuộn vô hạn. Không có gì tệ hơn một lệnh phức tạp bị cuộn ra khỏi màn hình ngay khi bạn cần tham chiếu nó. Hãy đặt cuộn của bạn thành không giới hạn hoặc một số rất lớn.
Tự động hoàn thành. Fish shell làm điều này một cách tự nhiên. Với Zsh bạn cần một plugin. Dù bằng cách nào, một khi bạn đã quen với việc tab hoàn thành các nhánh git và đường dẫn tệp, việc quay lại một shell trần trụi sẽ cảm thấy bị hỏng.
Chọn một trình giả lập
iTerm2 trên macOS, Kitty hoặc GNOME Terminal trên Linux. Tăng tốc GPU quan trọng hơn bạn nghĩ: nó giữ cho terminal phản hồi nhanh khi bạn đang chạy thứ gì đó phun log với tốc độ cao.
Thay đổi Shell của bạn
Bash mặc định tốt nhưng bị hạn chế. Zsh với một framework hoặc Fish ngay lập tức cung cấp cho bạn tính năng tự động hoàn thành, chủ đề và quản lý plugin mà không cần phải đấu tranh với các quy ước .bashrc từ năm 1999.
Thiết lập một Prompt
Starship là lựa chọn của tôi. Nó hoạt động trên nhiều shell, hiển thị trạng thái Git, phiên bản Python, phiên bản Node và nó nhanh. Không có độ trễ đáng kể khi hiển thị.
Nơi mọi người gặp khó khăn
Cái hố thỏ dotfile là có thật. Bạn sẽ tìm thấy một chủ đề prompt thú vị, sau đó là một plugin phụ thuộc vào một plugin khác, và đột nhiên bạn đang đọc một tệp .zshrc dài 200 dòng để tìm hiểu tại sao git status lại mất hai giây.
Quy tắc của tôi: nếu một tùy chỉnh terminal mất hơn 10 phút để cấu hình, thì nó phải tiết kiệm cho tôi 10 phút mỗi tuần, nếu không thì nó sẽ bị loại bỏ. Theo tiêu chuẩn đó, hầu hết các chủ đề prompt và một nửa số plugin Zsh phổ biến đều không đạt yêu cầu.
Những gì thực sự còn lại
- Một prompt Starship tối giản hiển thị nhánh Git, phiên bản Python và mã thoát.
zsh-autosuggestions: làm mờ các lệnh đã sử dụng gần đây khi bạn gõ. Tiết kiệm nhiều lần gõ phím hơn bất cứ thứ gì khác tôi đã cài đặt.zsh-syntax-highlighting: văn bản màu đỏ cho các lệnh không hợp lệ trước khi bạn nhấn enter. Liên tục bắt lỗi chính tả.- Một vài alias mà tôi thực sự sử dụng. Không phải là một đống alias 50 dòng từ một bài đăng trên blog mà tôi đã sao chép một lần và không bao giờ chỉnh sửa.
Thiết lập của bạn nên phản ánh cách bạn thực sự làm việc, chứ không phải cách một bài đăng trên blog nói rằng bạn nên làm việc. Bắt đầu với ba điều trên, sử dụng chúng trong một tuần, sau đó quyết định xem còn thiếu gì.
Loạt bài về Terminal
- Các quy tắc bất thành văn của chương trình Terminal: Tại sao
qthoát,Ctrl-Chủy, và các quy ước khác - Tại sao Pipes đôi khi bị kẹt: Giải thích về Buffering: Cách đệm stdio làm hỏng các đường ống
- Thiết lập Terminal hiện đại (bài viết này)
Công cụ phát triển miễn phí: AI CLI & Trình dọn dẹp đầu ra Terminal
Chia sẻ đầu ra terminal, nhật ký trình biên dịch hoặc dấu vết AI CLI trong các vấn đề GitHub hoặc tài liệu? Sử dụng AI CLI & Trình dọn dẹp đầu ra Terminal miễn phí của chúng tôi để loại bỏ các mã thoát ANSI, ký tự nhắc và dấu thời gian ngay lập tức.
Tìm hiểu sâu: Cơ chế cốt lõi
Khi chúng ta nhìn sâu hơn, các cơ chế cơ bản cho thấy một sự tương tác phức tạp của các hệ thống. Trong phát triển hiện đại, việc hiểu các cơ chế này là điều phân biệt một người mới với một chuyên gia.
Hãy xem xét ví dụ thực tế này:
// A comprehensive example demonstrating advanced patterns
class ServiceManager {
constructor() {
this.services = new Map();
this.initialized = false;
}
register(name, service) {
if (this.services.has(name)) {
throw new Error(`Service ${name} already registered`);
}
this.services.set(name, service);
}
async initializeAll() {
this.initialized = true;
for (const [name, service] of this.services) {
if (typeof service.init === 'function') {
await service.init();
}
}
}
get(name) {
if (!this.initialized) {
console.warn('Accessing services before initialization');
}
return this.services.get(name);
}
}
Mô hình này đảm bảo rằng kiến trúc của chúng ta vẫn có thể mở rộng và mạnh mẽ ngay cả khi các yêu cầu kinh doanh thay đổi. Đây là một cách tiếp cận cơ bản mang lại lợi ích trong các ứng dụng quy mô lớn.
Ứng dụng thực tế và mở rộng quy mô
Việc triển khai điều này trong môi trường sản xuất đặt ra một loạt thách thức mới. Chúng ta phải tính đến tính đồng thời, quản lý trạng thái và rò rỉ bộ nhớ.
Ví dụ, khi xử lý các hệ thống thông lượng cao, mọi tối ưu hóa nhỏ đều có giá trị. Chúng ta thường dựa vào các công cụ phân tích hiệu suất để xác định các nút thắt cổ chai không rõ ràng trong quá trình phát triển cục bộ.
Sơ đồ trên minh họa một chiến lược triển khai điển hình, trong đó ứng dụng của chúng ta mở rộng theo chiều ngang.
Kiểm tra sự hiểu biết của bạn
Nhật ký Terminal sạch cho LLM & Tài liệu
Khi chia sẻ đầu ra terminal vào các lời nhắc trò chuyện AI, phiếu lỗi hoặc tài liệu, các chuỗi màu thoát ANSI, dấu thời gian và lời nhắc shell thường làm hỏng định dạng. Sử dụng công cụ dọn dẹp tương tác của chúng tôi bên dưới để loại bỏ các mã ANSI, số dòng và nhiễu shell ngay lập tức:
Bạn cũng có thể thích
- Phát triển dựa trên tác nhân với GitHub Copilot: Một kỷ nguyên mới trong hợp tác phần mềm
- Suy nghĩ lại về rủi ro trong thời đại AI
- Những gì tôi đã học được khi xây dựng quy trình thanh toán với ví và tác nhân AI
- LangChain vs LlamaIndex: Hướng dẫn đường ống RAG sản xuất
Câu hỏi thường gặp
Free In-Browser Developer Tools
Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.
Related Articles

SSH và SCP: Hai công cụ mọi nhà phát triển thực sự nên hiểu rõ
Hướng dẫn không rườm rà về SSH và SCP — bao gồm cổng 22, xác thực dựa trên khóa, tệp cấu hình SSH, truyền tệp an toàn và các mẹo bảo mật máy chủ mà mọi nhà phát triển nên biết.
Read more
Các quy tắc bất thành văn của chương trình Terminal
Tìm hiểu lý do tại sao 'q' thoát khỏi hầu hết mọi thứ, cách Ctrl-C trở thành nút tắt toàn cầu và những bóng ma POSIX khiến dòng lệnh trở nên quen thuộc.
Read more
Tại sao pipe đôi khi bị "kẹt": buffering
Lần đầu tiên terminal của tôi bị treo giữa pipeline, tôi đã mất một giờ để gỡ lỗi sai vấn đề. Đây là những gì thực sự đã xảy ra và cách khắc phục nó trong vài giây.
Read more