Con tàu Theseus trong thư mục .config: Tối ưu hóa môi trường lập trình cá nhân

24 tháng 4, 2026·6 phút đọc

Bài viết chia sẻ hành trình quản lý thư mục .config để tạo ra một cài đặt máy tính đơn giản và hiệu quả, giúp chuyển đổi môi trường làm việc giữa các máy một cách tức thì. Tác giả cũng bàn về việc tích hợp các công cụ AI như OpenCode vào Neovim, nhằm xây dựng quy trình làm việc linh hoạt và không bị phụ thuộc vào bất kỳ nhà cung cấp nào.

Con tàu Theseus trong thư mục .config: Tối ưu hóa môi trường lập trình cá nhân

Việc quản lý vi mô thư mục .config của tôi đã cho phép tôi tạo ra một tệp cài đặt đơn giản và hiệu quả, giúp tôi có thể thiết lập môi trường làm việc của mình trên một máy mới ngay lập tức và chỉnh sửa môi trường một cách có chủ đích.

Hành trình khai thác giao diện TUI trong quá khứ

Tôi đã đan xen sử dụng tmux và neovim trong nhiều năm qua. Mặc dù tôi vẫn chưa tích hợp chúng hoàn toàn vào quy trình làm việc chuyên nghiệp, nhưng tôi thực sự thích quá trình phát triển chậm rãi này cho các dự án cá nhân (đặc biệt là trong kỷ nguyên AI siêu tốc này). Một trong những kỷ niệm đáng nhớ nhất khi tôi mới bắt đầu tìm hiểu về lập trình là biến giao diện dòng lệnh trở nên ấn tượng thông qua các dự án như Oh My Zsh và cài đặt song song các bản phân phối Linux trên chiếc Lenovo Yoga nhỏ bé của mình, vốn thường xuyên被我 đẩy đến giới hạn cho đội robot của mình. Tôi luôn đảm bảo sao lưu các tệp cấu hình của mình lên GitHub. Điều này giúp tôi làm quen với git sớm và có cái nhìn tổng quan tốt hơn về các hệ thống tệp mà tôi đang làm việc. Quá trình này trước đây luôn bị phân mảnh và tôi thường xuyên loại bỏ công việc cũ để bắt đầu cái mới. Kết quả là tôi có ba kho lưu trữ riêng biệt: một cho tmux, một cho neovim và một cho zsh. Tất cả được quản lý riêng biệt và có thể bị loại bỏ bất cứ khi nào tôi chán nản.

Phản ứng trước "thời kỳ phục hưng" của các công cụ phát triển AI

Mặc dù tôi cảm thấy ít bị đe dọa hơn so với ban đầu, nhưng tôi là người có tính lo âu và luôn cố gắng bắt kịp với tất cả các công cụ mới. Giống như nhiều người khác, điều này cho phép tôi nhận ra các mô hình và sự hội tụ trong định hướng trải nghiệm của các nhà phát triển AI. Mục tiêu của tôi ở đây là thực hiện các bước tiến để tận dụng nó theo cách có khả năng chống lại thời gian của riêng mình. Tôi đã sử dụng VS Code khá liên tục kể từ khi nó thay thế Atom trở thành công cụ tốt nhất để hoàn thành công việc. Tôi đã tải xuống và thử nghiệm Cursor, Zed, Antigravity và vô số các công cụ phái sinh khác với hương vị tích hợp AI riêng biệt.

Cuối cùng, tôi đã thay đổi quan điểm của mình, coi sức mạnh tính toán là một loại hàng hóa phổ thông. Tôi (giống như nhiều người khác) đã đi đến kết luận là muốn một giải pháp không khóa chặt mình vào một nhà cung cấp LLM cụ thể nào. Nhiều hệ thống này cho phép chuyển đổi nhà cung cấp, nhưng tôi muốn một thứ gì đó không thể bị khóa lại vào một ngày nào đó trong tương lai. Điều này đã thúc đẩy tôi quay lại với neovim, và quan trọng hơn là OpenCode. Một lần nữa, tôi loại bỏ tất cả các cấu hình trước đó, khởi động lại môi trường dòng lệnh và cam kết xây dựng một quy trình làm việc bền vững và có chủ đích cho chính mình.

Sử dụng .gitignore như một hàng rào bảo vệ

Thay vì đẩy toàn bộ thư mục nvim hoặc tmux (nằm trong thư mục .config của tôi) lên, tôi đã cố gắng thu hẹp phạm vi và loại bỏ bất cứ thứ gì mà tôi không kiểm soát trực tiếp. Điều này có nghĩa là cắt giảm các thư mục này xuống những gì tôi kiểm soát và xây dựng từ đó. Trái tim của vấn đề này trở thành tệp .gitignore của tôi. Tôi đã áp dụng phương pháp danh sách trắng (whitelisting) để quản lý vi mô mọi tệp thực sự cần được sửa đổi. Mặc dù có thể có một số sự dư thừa, đây là những gì tôi đã đạt được:

# Bỏ qua mọi thứ
*
# Cho phép chính các thư mục
!*/
# Cho phép các tệp cấp gốc
!.gitignore
!new-terminal.sh
# Danh sách trắng các tệp cấu hình
!/zsh/.zshrc
!/tmux/tmux.conf
!/nvim/**
!README.md
# Danh sách đen các thư mục rác
/zsh/.oh-my-zsh/
/zsh/custom/plugins/*
/zsh/.zsh_history
/zsh/.zcompdump*
/nvim/doc/tags
**/tmux/plugins/**/.gitignore
**/zsh/custom/plugins/**/.gitignore
/nvim/.gitignore
/tmux/plugins/*
/zsh/custom/plugins/*
/tmux/plugins/*
*.log
*.swp
.DS_Store

Lý tưởng nhất, điều này ngăn cản tôi thêm các thứ không cần thiết và buộc tôi phải chỉ suy nghĩ về những gì thực sự cần thiết để duy trì thiết lập của mình.

Dành thời gian có chủ đích cho Terminal

Terminal là một môi trường tuyệt vời, không có sự xao nhãng. Các thứ chỉ được hiển thị nếu người dùng chọn hiển thị chúng. Trong khi AI khiến mọi người xa rời khỏi mã họ viết, thì giao diện dòng lệnh có thể đưa họ lại gần hơn. Việc xây dựng cấu hình mới của tôi đã cho tôi tùy chỉnh OpenCode trong khi cảm thấy gần gũi với từng dòng mã được viết ra. Tôi không phải là chuyên gia, và thiết lập hiện tại của tôi thừa nhận là chậm hơn so với IntelliJ và VS Code (những công cụ tôi sử dụng trong công việc hàng ngày). Nhưng có lẽ một ngày nào đó quy trình làm việc này sẽ nhanh hơn và khi đó tôi có thể đưa nó vào môi trường chuyên nghiệp. Khi ngày đó đến, tôi sẽ quá chuẩn bị sẵn sàng với một kịch bản cài đặt và mọi thứ.

Nếu bạn quan tâm, bạn có thể thử nó bằng cách chạy lệnh curl -fsSL https://shift1w.com/assets/new-terminal.sh | bash. Vì đây là một trải nghiệm mang tính cá nhân hóa cao, nó có thể sẽ gặp lỗi. Tôi đã mất nhiều thời gian thử nghiệm theo kiểu cũ để có được kết quả mà tôi hài lòng trên máy của mình. Tuy nhiên, nếu bạn thực sự quan tâm, tôi sẽ hướng bạn đến kho lưu trữ. Tôi có một tệp README nên sẽ giúp ích cho việc cài đặt.

Thông qua sự hỗn loạn của AI và sự chuyển đổi chuyên nghiệp đang diễn ra của bản thân, tôi thực sự thích việc làm mới các cấu hình cho các chương trình tôi yêu thích sử dụng. Nó đã đưa tôi lại gần hơn với mã tôi viết trong khi cho phép tôi làm quen hơn với việc sử dụng AI ở mức độ mà tôi cảm thấy thoải mái khi mở rộng quy mô. Tôi hy vọng sẽ xây dựng một sự nghiệp dài lâu và việc làm quen với các công cụ là một cách tuyệt vời để cải thiện một cách thú vị và bán hiệu quả.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗