[NeoVim] Những Plugins cần thiết

Tiny
Tiny

12:08 10/07/2021đăng trongCông nghệ

source: ChrisAtMachine
Đây là bài thứ 3 mình viết về series hướng dẫn sử dụng và cài đặt neovim như là một ide. Phần một mình hướng dẫn về cách sử dụng neovim cơ bản như là text editor, phần 2 mình hướng dẫn cài đặt plugins, phần 3 sẽ là những tips/trick khi sử dụng neovim.
neovim plugin

deoplete.nvim

deoplete là một completion framework cho neovim, đại khái là khi bạn type một đoạn text, thì deoplete sẽ giúp bạn gợi ý những function, variable, text, property ... liên quan, bạn chỉ cần chọn kết quả và trigger
Intergrate với ultisnips để hiển thị và trigger snippet của bạn trong  cửa sổ  suggestion
deoplete không phải là sự lựa chọn duy nhất, các bạn có thể sử dụng YouCompleteMe, coc cũng có code-complete engine.

Snippets

Muốn đi nhanh thì phải đi một mình, còn muốn code nhanh thì phải xài snippets. Hầu như tất cả các IDE bây giờ đều có snippet, không cớ gì mà neovim lại không có cả.
Điều may mắn là bạn là trong cộng đồng đã có những bộ snippets của hầu hết cái ngôn ngữ, chỉ cần cài đặt và tích hợp vào complete engine thôi.
  • ultisnips là một tracker engine, cung cấp các functions, keys binding, integrate với các plugins khác như deoplete để hiển thị snippets của bạn lên suggestion để có thể trigger được.
  • vim-snippets là một bộ assets bao gồm các snippets có sẵn, bạn chỉ cần tải về xài thui.
Lưu ý là vim-snippets chỉ là một bộ các static assets được dựng sẵn, nếu các bạn không xài thì chẳng sao cả, khi vào trong file code có đuổi mở rộng mà Ultisnips có thể detect được, nó sẽ tự động mở file snippets của đuôi mở rông đó.
Giả sử mình đang code trên file .tsx, mình muốn thêm 1 snippets của file .tsx thì khi vào file đó, mình vào neovim ở chế độ command và gõ :UltiSnippsEdit sẽ hiện ra file snippets dành cho đuôi mở rộng .tsx để mình thêm snippet vào.
cấu trúc của 1 snippets như sau:
snippet [trigger key] "[snippets description]" //your snippets endsnippet
Implement:
//typescriptreact.snippets snippet fre "react function component" type I$1Props = {}; const $1 = (props: I$1Props) => { return this is home page; }; export default $1; endsnippet
$1 là biến, tưởng tượng nó như là multi cursor, khi bạn type thì tất cả những vị trí $1 sẽ được hưởng cùng giá trị.
Các bạn có thể tham khảo thêm ở đây.

nerdcommenter

nerdcommenter cung cấp các functions comment/uncomment code của bạn, adapt với từng loại ngôn ngữ.
Comment:
UnComment:

Syntax checking

ale (Asynchronous Lint Engine) là một plugin để check syntax và lỗi cú pháp. ALE có thể tích hợp với các tools khác như prettier, eslint... để format và fix code của bạn.
ale còn đóng vai trò như một language client support một số tính năng của  Language Server Protocol như:
  • Go To Definition (:ALEGoToDefinition)
  • Completion (Built in completion support, or with Deoplete)
  • Finding references (:ALEFindReferences)
  • Hover information (:ALEHover)
  • Symbol search (:ALESymbolSearch)
Check và đánh dấu tại dòng bị lỗi:
Go to definition:
Prettier:

Vim-multiple-cursors

vim-multiple-cursors là một plugin cung cấp functions, keys binding cho phép bạn chọn nhiều cursor trên một buffer.
Select multiple match với regex:

Kết bài

Mình xin kết thúc phần 2 ở đây. Tất cả các plugin mình giới thiệu trong 2 phần là những plugins mình nghĩ khi code bất kì ngôn ngữ nào các bạn cũng đều cần dùng đến. Bạn có thể tham khảo thêm tại vim-awesome để tìm hiểu thêm nhiều plugin khác.
Đăng kí vào Codefun và follow mình để nhận thông báo cho những tài viết kế tiếp nhé. Phần tới mình sẽ viết về những tips/tricks sử dụng neovim.
Hẹn gặp các bạn ở bài viết kế tiếp <3 !