Thanh at Pai

Trang Công Thành

Senior Bug Breeder

Bộ gõ code của mình năm 2024

2024-02-29-#code-suy

Photo by Sigmund on Unsplash
Photo by Sigmund on Unsplash

Làm thợ code, thứ sống cùng chúng ta mỗi ngày không thể thiếu đó chính là code editor. Cuộc chiến lựa chọn code editor của mình cũng trải qua khá là nhiều thăng trầm. Và lựa chọn vài năm gần đây của mình là neovim. Không biết đã là lựa chọn cuối cùng chưa nhưng có lẽ neovim là code editor mình sử dụng lâu nhất suốt hơn 10 năm mình đi code dạo.

Lịch sử dài dòng

Notepad in Windows XP

Notepad - Windows XP

Code đời thợ gõ của mình bắt đầu với NotePad. Vâng, chính là quả phầm mềm nền trắng chữ đen của Windows thần thánh. Không line number, không syntax highlight, không code suggestion. Vậy mà những ngày tháng ấy, mình vẫn lọ mọ làm những trang web cá nhân, sửa những dòng chữ chạy trên các nền tảng blog thời kì đầu. Rồi tạm biệt Notepad, mình bắt đầu biết tới nhiều phần mềm hỗ trợ code xịn hơn. Kiểu như, Notepad++, FrontPage, DreamWeaver, … rồi Atom, Sublime, Brackets, rồi VSCode, Intellij Idea, v.v...

Neovim

Neovim - Catppuccin

Neovim - Catppuccin

Vim/Neovim là một cái gì đó rất dị 🤣 Thật ra mình khá là hài lòng với vscode thời gian trước đó. Mặc dù nó hơi nặng, chạy máy Mac Intel thời đó cũng hơi ì một chút. Nhưng vẫn không thể ì hơn mấy đồ của nhà JetBrains, mà lại còn miễn phí nữa nên ... 🤷 Cho đến một hôm, thanh niên tây ở công ty mình kêu mấy cái đồ gõ code kia chậm quá. Hiệu suất làm việc của nó bị chậm lại nên nó dùng Vim và khen hết nước chấm. Mình thấy cũng vớ vẩn. Trước mình dùng qua rồi thì có gì mà phải khen thế đâu. Rồi mình quay lại dùng thử lại một lần nữa. Mé, mất toi cả mấy ngày mới config được mấy cái mà vscode luôn có sẵn. Dùng được vài hôm thì lại bỏ.

Nhưng đúng là, đến lúc quả vscode của mình không chạy nổi nữa. Mình lại tìm một chân ái mới. Lần này lại thử vim, rồi neovim. Rồi lại setup mệt nghỉ. Rồi cứ dần dần, dùng cho đến tận bây giờ.

Tại sao lại là neovim?

Ngoài những thứ có thể thấy trên mạng ca ngợi về neovim, vài thứ nổi bật mà thích ở neovim (nhưng ít thấy ai chia sẻ) đó là:

  • Window (Buffer) navigation. Di chuyển giữa mọi thứ trong neovim với mình khá là khoa học. Mình không cần phải nhớ 1 tổ hợp phím để đóng mở terminal, 1 tổ hợp phím để focus terminal, 1 tổ hợp phím để focus editor, 1 tổ hợp phím để di chuyển giữa các split windows, v.v… Nói chung, số lượng shortcut mình phải nhớ ít đi rất nhiều.
  • Minimal. Ừ thì giờ mấy cái editor bây giờ cũng cho người dùng tùy chỉnh UI cho ít nhất có thể. Nhưng vẫn không thể nào địch lại được với neovim. Chỉ code, vài stats cần thiết và code 👨‍💻
  • Vim Motion Language. Thật ra thì vim motion nó không đáng sợ lắm khi mình hiểu sơ sơ về nó. Kiểu như: Xóa một từ? daw = delete a word, ciw = change in word, yap = yank a paragraph, v.v… Kiểu kiểu như nghĩ gì gõ nấy thôi 👀 Dần dần khi quen rồi thì khá là khó bỏ. Chỉ khi quay lại những phần mềm gõ code khác mới thấy, mình đang code bằng tốc độ "bàn thờ" như nào.

Neovim - Floaterm - lazygit

Neovim - Floaterm - lazygit
  • Freedom. Được làm điều mình thích, được chỉnh thứ mình muốn. Được là chính mình 🤣 Mình thích cmd-n để đóng mở sidebar đấy có được không? Mình thích mở terminal giữa màn hình đấy thì sao? :v

Neovim của mình có gì?

Cái thời vimscript, mình dùng quá trời là config/plugins. Còn giờ thì cũng không nhiều lắm. Chủ yếu là lsp, cmp và syntax highlight

plugins
+-- lazy.nvim
+-- telescope
+-- treesitter
+-- nvim-tree
+-- catppuccin/macchiato
+-- none-ls
+-- dressing
+-- gitsigns
+-- lsp
| +-- nvim-lspconfig
| +-- mason.nvim
| +-- mason-lspconfig.nvim
+-- cmp
| +-- cmp-nvim-lsp
| +-- cmp-buffer
| +-- cmp-path
| +-- cmp-cmdline
| +-- cmp-vsnip
| +-- vim-vsnip
+-- mini
| +-- statusline
| +-- pairs
| +-- surround
| +-- indentscope
| +-- comment + nvim-ts-context-commentstring
+-- misc
+-- vim-wakatime
+-- vim-floaterm

Ngoài ra còn có những thiết lập mặc định khác cũng khá là đơn giản. Mọi người có thể xem lại repo tổng hợp dotfiles của mình trangcongthanh/.dotfiles 👨‍💻

Lựa chọn xịn hơn?

Thật ra, mình vẫn ngắm nghía, để mắt tới những bộ gõ code mới xịn hơn. Kể như: CodeEdit, Zed. Nhưng cả hai đều vẫn chưa thuyết phục được mình từ bỏ neovim.