11 điểm bởi GN⁺ 2024-08-19 | 3 bình luận | Chia sẻ qua WhatsApp
  • Mỗi lập trình viên đều có hành trình riêng với trình soạn thảo văn bản của mình và đã trải qua quá trình đi đến công cụ đang dùng hiện tại. Những câu chuyện như vậy rất thú vị và thể hiện sự trân trọng lớn đối với các công cụ phát triển cùng công sức đã được đầu tư vào đó
  • Bài viết này được viết để chia sẻ hành trình của bản thân với những người quan tâm đến công cụ phát triển, đồng thời khuyến khích họ thử nghiệm các công cụ mới

Khởi đầu hành trình với trình soạn thảo văn bản

  • Lần đầu dùng Atom và bắt đầu học những kiến thức cơ bản về HTML, CSS, Javascript
  • Sau đó chuyển sang VSCode, nhưng vào thời điểm đó vợ tác giả cần dùng laptop để chỉnh sửa ảnh, còn chiếc MacBook được dùng thay thế lại bị giảm hiệu năng do bản dựng Electron của VSCode
  • Tình cờ phát hiện Vim vào lúc này, rồi bị cuốn hút bởi quy trình làm việc tập trung vào bàn phím và tốc độ của nó nên bắt đầu học Vim
  • Ban đầu tác giả dùng Vim bằng cách chỉnh sửa Vim RC, sau đó biết đến Neovim qua các video của chris@machine
  • Trong nhiều năm sử dụng Neovim, tác giả đạt năng suất cao. Dù đã dành nhiều thời gian tinh chỉnh cấu hình, cuối cùng cũng đạt tới trạng thái gần như không còn cần thay đổi cấu hình nữa

Thay đổi

  • Nhưng theo thời gian, tác giả vẫn phải tiếp tục đơn giản hóa các tệp cấu hình, và vẫn cần bỏ nhiều công sức chỉ để duy trì những chức năng cơ bản
  • Thỉnh thoảng mỗi lần cập nhật plugin, Neovim lại phát sinh sự cố, khiến tác giả phải dừng công việc để dành thời gian xử lý. Tác giả cố đơn giản hóa cấu hình để giải quyết việc này, nhưng nỗ lực duy trì các tính năng cơ bản vẫn luôn cần thiết
  • Đặc biệt khi làm việc với các codebase lớn, Neovim gặp các vấn đề như chậm đi và khựng màn hình, ảnh hưởng đến năng suất
  • Tác giả đã thử chuyển sang các trình giả lập terminal khác như Alacritty, Wezterm, nhưng không tạo ra khác biệt đáng kể
  • Trước đây từng nghe về Zed, nhưng vì nó không dựa trên terminal nên đã ngừng dùng. Tuy nhiên, sau khi nghe nhiều đánh giá tích cực về tốc độ của Zed, tác giả quyết định thử lại
  • Sau 2 tháng dùng hằng ngày, Zed mang lại trải nghiệm rất hài lòng và tác giả dự định sẽ tiếp tục dùng. Không có ý định quay lại Neovim

Trải nghiệm sử dụng Zed

  • Để hiểu vì sao tác giả chọn Zed, bài viết muốn giải thích về trải nghiệm sử dụng nói chung cho đến nay và cách tác giả đã điều chỉnh nó cho phù hợp với mình

Mọi thứ đều "cứ thế mà chạy tốt"

  • Một trong những ưu điểm lớn nhất của Zed là "mọi thứ đều cứ thế mà chạy tốt"
  • Đặc biệt, các tính năng như giao thức máy chủ ngôn ngữ (LSP) vốn tốn rất nhiều thời gian để thiết lập trong Neovim, nhưng trong Zed thì mặc định đã hoạt động tốt
  • Trong Zed, các phím tắt như "xem định nghĩa", "đi đến định nghĩa", "code actions" được cung cấp sẵn theo mặc định, hỗ trợ hầu hết ngôn ngữ nên hầu như không phát sinh vấn đề

Tốc độ

  • Một trong những lý do chính để chọn Zed là tốc độ, và kết quả là tác giả rất hài lòng
  • Ngay cả với các codebase lớn, Zed vẫn chạy nhanh mà không có độ trễ, và cho đến nay tác giả chưa từng gặp vấn đề về hiệu năng
  • Có thể làm cho Neovim nhanh hơn nữa, nhưng dùng Zed vẫn tốt hơn là lãng phí thời gian để tối ưu chỉ nhằm tăng năng suất
Quảng cáo

Chế độ Vim

  • Với tư cách là người dùng Neovim, tác giả từng thất vọng vì plugin Vim của VSCode thiếu ổn định và có nhiều lỗi
  • Chế độ Vim của Zed là tính năng do chính nhà phát triển xây dựng, rất ổn định và hỗ trợ tốt các chức năng quan trọng
  • Cấu trúc key binding rất linh hoạt và cung cấp những tính năng mà người dùng Vim có thể sẽ yêu thích

Tính năng AI

  • Zed cũng cung cấp các tính năng AI, và mặc định đã tích hợp Copilot
  • Có thể sử dụng các mô hình AI như OpenAI, Ollama, Anthropic thông qua API
  • Tính năng trợ lý inline cũng hữu ích: có thể chọn một phần mã rồi gọi trợ lý AI bằng ctrl-enter để viết mã

Zed ≠ Neovim

  • Zed không thể thay thế hoàn toàn Neovim. Điểm mạnh lớn của Neovim là nó tồn tại native trong terminal
  • Với các tác vụ chỉnh sửa tệp đơn giản, Neovim tiện hơn, nhưng với các phiên làm việc dài hoặc dự án thì Zed là lựa chọn hoàn hảo

Tùy chỉnh Zed cho người dùng Neovim

Zed không phải là bản thay thế hoàn toàn cho Neovim, nhưng thông qua nhiều tinh chỉnh nhỏ, có thể cải thiện đáng kể trải nghiệm để tạo ra môi trường quen thuộc với người dùng Neovim/Vim

Chế độ Vim và key binding

  • Việc đầu tiên cần làm là bật chế độ Vim. Zed cung cấp trang tài liệu về chế độ Vim, hướng dẫn các binding Vim mặc định và cách thiết lập bổ sung
  • Một trong những ưu điểm lớn của Zed là có thể thiết lập key binding tùy theo chế độ Vim. Ví dụ, có thể áp dụng các key binding khác nhau cho chế độ "Normal" và chế độ "Visual"
[  
	{  
		"context": "Editor && VimControl && !VimWaiting && !menu",  
		"bindings": {  
			"space b": "editor::ToggleGitBlame",  
			"shift-k": "editor::Hover",  
			"space l f": "editor::Format",  
			"space d": "diagnostics::Deploy",  
			"space f f": "file_finder::Toggle",  
			"space o": "tab_switcher::Toggle",  
			"space e": "workspace::ToggleLeftDock",  
			"space /": "workspace::NewSearch",  
			"n": "search::SelectNextMatch",  
			"shift-n": "search::SelectPrevMatch",  
			"space t": "workspace::NewCenterTerminal",  
			"g b": "editor::ToggleComments",  
			"+ +": "workspace::Save",  
			"space c": "pane::CloseActiveItem"  
		}  
	},  
	{  
		"context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",  
		"bindings": {  
			"shift-j": "editor::MoveLineDown",  
			"shift-k": "editor::MoveLineUp"  
		}  
	},  
]  
Quảng cáo
  • Ngoài ra, cũng có thể thiết lập key binding để chuyển panel trong Zed nhằm tạo quy trình làm việc tương tự Neovim
[  
	{  
		"context": "Dock || Terminal || Editor",  
		"bindings": {  
			"ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],  
			"ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],  
			"ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],  
			"ctrl-j": ["workspace::ActivatePaneInDirection", "Down"]  
		}  
	},  
]  
  • Cũng nên tham khảo keymap Vim mặc định để điều chỉnh các thiết lập cần thiết. Keymap Vim mặc định là tài liệu tham chiếu hữu ích về những gì Zed hỗ trợ và những điểm cần điều chỉnh

UI được tinh giản

  • Zed vốn đã cung cấp UI tối giản, nhưng nếu thích giao diện giống cấu hình Neovim hơn, có thể tắt thanh tab, thanh cuộn, thanh công cụ, v.v.
{  
	"cursor_blink": false,  
	"relative_line_numbers": true,  
	"scrollbar": {  
		"show": "never"  
	},  
	"vertical_scroll_margin": 0,  
	"tab_bar": {  
		"show": false  
	},  
	"toolbar": {  
	    "breadcrumbs": true,  
	    "quick_actions": false  
	},  
}  

Thay thế plugin

  • Trong Zed, có thể dùng trình chuyển tab (Toggle) như một tính năng tương tự Telescope để điều hướng giữa các tệp hoặc buffer
Quảng cáo
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space o": "tab_switcher::Toggle",  
	}  
}  
  • Tìm kiếm toàn dự án là lựa chọn thay thế cho Telescope, cho phép xem kết quả qua chế độ nhiều buffer và điều hướng dễ dàng
  • Chức năng bật/tắt terminal tương tự VSCode, nhưng trong Zed còn có tùy chọn mở terminal thành buffer ngay trong vùng nhìn chỉnh sửa chính
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space t": "workspace::NewCenterTerminal",  
	}  
}  
  • Dù không thể thay thế hoàn toàn Tmux và tính năng chuyển đổi dự án, tính năng chuyển dự án của Zed vẫn thực hiện việc này khá tốt
{  
	"context": "Workspace",  
	"bindings": {  
		"cmd-k": [  
			"projects::OpenRecent",  
			{  
				"create_new_window": false  
			}  
		]  
	}  
}  

Có nên dùng Zed không?

  • Nếu đang phân vân có nên thử Zed hay không, tác giả khuyên nên dùng thử vài ngày
  • Zed là một trình soạn thảo văn bản độc đáo và có năng lực, và rốt cuộc điều quan trọng là công cụ nào giúp tăng năng suất
  • Đó có thể là VS Code, JetBrains, hoặc EMacs
  • Hãy chọn công cụ phù hợp nhất với bản thân, nhưng đừng quá cố chấp đến mức không muốn thử những điều mới

3 bình luận

 
GN⁺ 2024-08-19
Ý kiến trên Hacker News
  • Ban đầu tôi thích Zed, nhưng khi nó tập trung vào các tính năng cộng tác và AI thì các chức năng của một trình soạn thảo cơ bản lại thiếu hụt, nên trở nên kém hữu ích hơn

    • Hiện tại tôi đã quay lại trình soạn thảo và IDE trước đây, và dự định sẽ thử lại sau
  • Lý do tôi dùng Helix là vì tôi đã định chuyển từ VSCodium sang Vim hoặc Neovim, nhưng việc cấu hình plugin quá khó

    • Helix dùng được ngay nên tôi đang sử dụng, key binding trực quan và tôi cũng học được cả key binding kiểu Vim
    • Chủ đề màu mặc định hơi bị sốc
  • Gần đây tôi đã chuyển từ Vim sang Zed và thấy Zed rất xuất sắc ở nhiều mặt

    • Tuy nhiên có quá nhiều lỗi ngay trong các chức năng cơ bản, nên tôi mong họ ưu tiên phần nền tảng hơn là những thứ như tích hợp AI
  • Khi dùng Zed tôi rất thích tốc độ cao và giao diện gọn gàng của nó

    • Nếu tích hợp Git và hỗ trợ từ xa tốt hơn thì tôi có thể chuyển hẳn sang
  • Sáu tháng trước tôi đã chuyển từ VSCode sang Zed, nhưng gần đây lại quay về Neovim

    • Tôi thích cách Zed tiếp cận tích hợp Vim, nhưng vì thiếu chức năng cơ bản và có lỗi nên tôi đã chuyển sang Neovim
    • Tôi sẵn sàng quay lại nếu Zed trưởng thành hơn
  • Tôi hy vọng Zed sẽ được trau chuốt và ổn định hơn

    • Cho đến lúc đó tôi đang dùng Sublime Text 4, vì hiệu năng rất tốt, còn tiện ích mở rộng LSP và Sublime Merge giúp lấp những khoảng trống mà VSCode để lại
  • Tôi tò mò không biết bạn đã thử các bản phân phối Neovim chưa

    • Các bản phân phối như LazyVim, AstroVim và NvChad đã cấu hình sẵn các plugin và tích hợp cần thiết
  • Nếu muốn có Neovim thực thụ trong VSCode, tôi khuyên nên xem vscode-neovim

    • Bạn có thể dùng VIM thực sự cùng với toàn bộ tính năng của VSCode
  • Tôi bắt đầu quan tâm đến Kakoune và Helix nên đã viết một tiện ích mở rộng chỉnh sửa theo chế độ cho VSCode

    • Nó hỗ trợ hầu hết các tính năng của VIM, đồng thời bổ sung các thao tác và chế độ mới dựa trên AST
    • Tôi đang định viết một bài blog về nó
  • Khi khám phá Zed trên macOS, tôi có ấn tượng rằng đây là một trình soạn thảo nhanh và giàu tính năng

    • Tuy nhiên trên các hệ thống *nix, nó không phổ biến bằng vi/vim
    • Khi xét đến nhiều hạ tầng khác nhau và các ràng buộc triển khai, tập trung vào một trình soạn thảo phổ quát vẫn dễ hơn
    • Zed có thể trở thành một lựa chọn thay thế cho vi/vim, nhưng khả năng phần lớn người dùng vi/vim chuyển hẳn sang là không cao
 
taking 2024-08-19

Tôi cũng mới chuyển sang Helix gần đây.
Giống như ý kiến trên Hacker News, vì trước đây tôi không tận dụng hết các plugin trong NeoVim nên đã thử helix và chuyển sang ngay. Dù vậy, chủ đề màu sắc thực sự khá sốc.

 
roxie 2024-08-26

Ý bạn là theme mặc định tím quá nên không thích đúng không? :eyes: