Vim guide

3 minute read

Ai đang đọc bài này là developer thì chắc hẳn cũng đã biết đến VIM rồi - là một text editor rất mạnh mẽ và có thể chạy trên Terminal. Những bài viết về vim và cách dùng vim đã quá nhiều trên mạng rồi nên mình cũng sẽ không viết kiểu đó nữa. Bài này mình muốn giới thiệu về cách tiếp cận vim của mình cũng như những plugin mình dùng, có thể là thêm ít lí do mình chọn plugin đó chứ không phải cái khác.

Cách để bắt đầu

Như mình đã nói ở trên thì cách bắt đầu đã nhan nhản trên mạng rồi, nhưng cũng muốn khuyên bạn có thể dùng vimtutor để tiếp cận cách điều hướng cũng như làm việc cơ bản với 1 file nhé. Làm quen những phím tắt của nó cũng tốn kha khá thời gian đó, rảnh rảnh vô bấm cho quen, tầm 1 tuần là thử trên project thật được rồi.

Một số config sẵn của vim

Nếu bạn chưa biết thì dùng vim để edit 1 file rồi thôi thì có thể dùng config mặc định của vim được. Nhưng mà thử nghĩ bạn làm cả 1 project thật với một đống file mà dùng mặc định thì chắc là thánh mất. Nên hầu như những người dùng vim để code đều phải config vim để thêm nhiều tính năng mà mặc định không có. Việc này tốn khá nhiều thời gian nên sẽ sinh ra những config ăn sẵn, tất nhiên mình không khuyên bạn dùng config sẵn này, nên cóp nhặt rồi tự config vim của riêng mình thì tốt hơn (chỉ muốn giới thiệu để bạn biết đến sự tồn tại của nó thôi).

Những plugin mình dùng

Danh sách plugin mình dùng khá dài nên sẽ cập nhật dần dần nhé, và mình chỉ giới thiệu những cái mình cho là chính thôi, còn lại bạn có thể xem config của mình để tìm hiểu thêm tại đây: dotfiles. Những plugin mình chọn để dùng thường viết bằng vimscript, vì để tránh bớt sự phụ thuộc vào ngôn ngữ khác (python, js). Lúc cài xong vim mà chạy lên nó báo thiếu một mớ gói là bạn sẽ thấy nên xài plugin không cần những gói phụ thuộc :D

1. fzf

Plugin này cung cấp khả năng tìm kiếm file, text bằng thuât toán fuzzy search. Theo mình test những plugin khác có tính năng tương tự thì thằng này chạy tốt và nhiều tính năng nhất.

Tương tự: CtrlP, LeaderF

2. fern.vim

Plugin này giúp vim có tính năng cây thư mục ở bên cạnh như các editor hiện đại. Sau khi dùng qua khá nhiều plugin thì thằng này cung cấp đủ tính năng mình cần cũng như được viết bằng vimscript. Nerdtree khá phổ biến nhưng mình lại không thích sự nặng nề của nó.

Tương tự: nerdtree, defx

3. deoplete

Plugin này giúp hiển thị gợi ý khi code cho bạn, thử nghĩ khi code không có gợi ý thì sẽ tốn thời gian như thế nào. Thằng này được viết bằng python, mình đang config khi không có python thì dùng thằng khác viết bằng luajit, đó là completion-nvim. À quên nói thì luajit được neovim support native giống như vimscript nhé. Điểm hạn chế của completion-nvim là không fuzzy search keywork khi gợi ý được, mình có thói quen hay viết ngắn gọn khi có thể lấy từ gợi ý (appicont thay vì applicationcontroller). Giờ thì chưa thằng nào chạy được fuzzy search ở gợi ý mà viết bằng vimscript hoặc luajit cả theo mình biết.

Tương tự: coc.nvim

4. ctrlsf.vim

Plugin này dùng để tìm kiếm text trong project, dùng kết hợp với rg sẽ có tốc độ cực kì cao. Bạn có thể dùng ack.vim nhưng mình dùng ctrlsf vì nó chạy asynchronous.

Tương tự: ack.vim

LSP

Vim và nvim stable thì hiện nay chưa hỗ trợ LSP, chúng ta có thể dùng thông qua những plugin như coc.nvim mà mình đã đề cập phía trên. Hoặc nếu muốn dùng native thì có thể sử dụng nvim phiên bản nightly (cái này không khuyến khích newbie, vì config sẽ gặp khó khăn).

Tổng kết

Đó là những điều mình muốn chia sẽ về vim. Mình sẽ cố gắng update thêm những plugin mình xài cũng như viết so sánh chi tiết hơn và lí do mình chọn plugin đó để các bạn tham khảo. Hi vọng bài viết có ích với một người nào đó.

Cảm ơn vì đã đọc tới đây :D

Tags:

Categories:

Updated:

Comments