Why emacs
1.Programming editor.
Ngoài việc đọc, sửa mã nguồn, programming editor còn cần một số tính năng giúp lập trình viên dễ dàng khi lập trình (code brower), ví dụ: jump to function, auto complete. Cá nhân bạn đang sử dụng cái nào cho việc công việc lập trình? về cơ bản bất cứ phần mềm nào xử được file text thì đương nhiên đều có thể dùng để viết code, ví dụ notepad chẳng hạn. Lập trình cho window thì dùng Visual studio kinh điển, cho macOS hay iOS thì Xcode sang chảnh, cho Android thì có Eclipse. Với những trường hợp này thì chỉ editor chưa đủ, mà cần đầy đủ môi trường phát triển (trình biên dịch tích hợp, trình gỡ rối …), nên gần như lập trình viên không có lựa chọn nào khác.
Vậy với lập trình viên nhúng (embedded software) thì sao? Biên dịch mã thường bằng dòng lệnh trên console hoặc các gói phần mềm chuyên dụng đi kèm (thường ko tích hợp đủ tính năng viết/đọc code dễ dàng). Do đó có thể dùng bất cứ editor nào tuỳ thích.
Dĩ nhiên lập trình viên nhúng vẫn có thể dùng Visual studio hay Eclipse …, không vấn đề gì cả, và trên thực tế số đông làm vậy. Nói chung không có cái nào tốt hơn cái nào cả, quan trọng năng suất công việc, bạn đang quen dùng cái nào thì với bạn cái đó tốt nhất.
Mình bắt đầu đi làm năm 2009, công việc về nhúng, mới vào được các ông anh chỉ cho SourceInsight thần thánh, nhỏ gọn, chạy cực nhanh, còn graph hoá quá trình liên kết hàm cực kì lợi hại. Thích nó đến mức không có SourceInsight là không muốn đọc code nữa, rất bị phụ thuộc.
Năm 2013, qua Nhật công tác dài hạn ở công ty khách hàng. Không có SourceInsight vì vấn đề bản quyền, rất đau khổ nhưng cũng tìm phương án thay thế bằng Eclipse, tuy hơi nặng nhưng cũng dùng ổn, đủ các tính năng cần thiết, dùng mãi rồi cũng quen.
Từ 2016 đến nay đổi sang Emacs.
2.Why emacs.
Đã nghe kể kỹ sư ở Nhật Bản toàn dùng Emacs hoặc Vim. Cũng đã đôi lần thử dùng nhưng cũng chỉ sửa vài cái nho nhỏ trên console, chứ không hiểu làm sao dùng đồ cổ này mà đọc được đống code. Sang Nhật làm việc thì đúng thế thật, toàn Emacs rồi thì Vim, Sakura (một loại editor) cũng lắm thằng dùng. Cậu người Nhật làm cùng, sử dụng Emacs nên thi thoảng mình nửa đùa nửa thật, tao muốn dùng Emasc nhưng mãi không dùng được. Rồi đến một hôm đẹp trời, nó quảng cho các cục Emacs đã có thiết lập một số thứ cơ bản, rồi sang chỉ trỏ cho mình. Nó nhiệt tình quá, nên cũng thử cố xem sao. Lúc đầu chưa quen thì đúng là như đi tù luôn, nhưng thật kì diệu, sau tầm 1-2 tuần gì đó, cho đến giờ là kết luôn con Emacs.
Hỏi google, ta sẽ có 1001 lý do tại sao nên dùng Emacs, tất nhiên chắc cũng có tầm đó lý do tại sao không cần thiết hoặc không nên dùng chăng. Do đó cãi nhau editor nào ưu việt cho lập trình viên là không cần thiết. Đối với cá nhân mình, dùng Emacs vì một vài lý do:
- Trông nguy hiểm, màn hình đen sì toàn code là code.
- Kết hợp với Gtag, có thể cung cấp các chức năng như code brower.
- Nhẹ, chạy được trên máy cấu hình không cần cao quá, phù hợp với kỹ sư VN (nghèo).
- Bỏ được con Chuột khi viết/đọc code (mình tuổi Mèo nên không ưa Chuột).
- Chạy trên mọi nền tảng từ Windows, Linux đến macOS.
- Tuỳ biến cao, có thể dùng LISP để tự viết thêm tính năng. (mình chưa làm thử, do chưa biết LISP).
- Không chỉ là editor, mà còn là nhiều thử khác (tự google để biết).
3. Thiết lập cơ bản.
Để đủ dùng Emacs đọc, viết code thì có thể thiết lập đơn giản trên Windows.
- Tải Emacs tại đây
- Tải gtags tại đây về, giải nén và sửa PATH environment để thêm đường dẫn tới thư mục bin của gtag.
- Tự google để biết cách thiết lập với gtags, hoặc lấy cái mình đã thiết lập ở đây , đè lên thư mục .emacs.d ( xem [2] để biết chỗ để thư mục .emacs.d).
- Xem [3] để biết cách sử dụng Emacs với gtags để đọc code.
- Đọc tài liệu chính thống ở đây, hoặc chế độ help, hoặc google khi không rõ keybinding chức năng muốn dùng. Ác mộng lúc bắt đầu dùng Emacs là 1 đống phím tắt cần nhớ. Tuy nhiên bạn không cần cố nhớ, hãy bắt đầu bằng vài thao tác cơ bản, cái nào không biết hãy google hoặc dùng chế độ help. Dùng vài hôm, tay sẽ nhớ thay cho não.
4. Why not VIM.
Giới lập trình viên vẫn cãi nhau chí choé Emacs & Vim, nên dùng thằng nào. Một kiểu như Windows & Linux, Android & Iphone. Riêng với mình cũng dự định thử dùng Vim cho nghiêm túc xem sao, nhưng giờ chưa dùng vì chưa có thời gian để thử. Ai đang dùng Vim nhờ chỉ bảo chút 🙂
5.Tham khảo.
- [1] http://labang.sourceforge.net/articles/emacs-tutorial-vi.html
- [2] https://viblo.asia/p/my-friends-emacs-config-al5XRBlkGqPe
- [3] https://astraybi.wordpress.com/2015/08/01/how-to-setup-gnu-global-for-emacs-mac/