26. tháng 4 2025
Sau khi đã cài đặt xong Neovim, điều đầu tiên tôi muốn đảm bảo làUltiSnips có thể hoạt động bình thường. Các plugin khác có thể tinh chỉnh từ từ sau, nhưng nếu không sử dụng được snippet thì tôi gần như mất khả năng viết code.
Kết quả cuối cùng sẽ trông như thế này: !Neovim chơi bắn cá cấu hình UltiSnips
Nguyên tắc cơ bản:
Nếu bạn muốn di chuyển cấu hình Vim hiện tại của mình sang NeoVim, chỉ cần sao chép ~/.vimrc của bạn đến ~/.config/nvim/init.vim.
Khi mở Neovim, tôi nhận thấy rằng các snippet cơ bản của UltiSnips vẫn có thể sử dụng được, nhưng chức năng gợi ý tự động đã không còn hoạt động. Chức năng này ban đầu được cung cấp bởi plugin Completor.
Plugin 'maralla/completor.vim'
Đầu tiên tôi cần xác định vấn đề nằm ở đâu. Theo tài liệu của UltiSnips:
Thực đơn gợi ý này được cung cấp bởi các plugin khác, không phải là chức năng của UltiSnips.
Thanh hoàn thành mã nguồn đến từ YouCompleteMe, UltiSnips cũng tích hợp với deoplete và nhiều hơn nữa. Các plugin chính thức được khuyến nghị bao gồm YouCompleteMe và deoplete. Tôi quyết định thử nghiệm deoplete, chủ yếu vì tò mò. Mặc dù YouCompleteMe dường như đáng tin cậy hơn một chút...
Nếu không bỏ qua dòng:
Plugin 'maralla/completor.vim'
Mỗi lần kích hoạt, sẽ xuất hiện lỗi:
Lỗi phát hiện trong quá trình xử lý hàm 20[1]..completor#do[13]..completor#action#do[22]..completor#compat#job_start_oneshot: Bỏ qua dòng đó thì không còn gặp vấn đề này nữa. Tôi đoán rằng nguyên nhân là do Completor không tương thích với Neovim.
pip3 install msgpack
Tôi nghĩ dòng lệnh dưới đây mới thực sự là phần quan trọng, mở Neovim và chạy:
:UpdateRemotePlugins
Như vậy, UltiSnips cuối cùng cũng đã hoạt động đúng cách. Đây là phần duy nhất mà tôi làm khác với hướng dẫn cài đặt chính thức, vì tôi đang sử dụng Vundle, trong khi tài liệu lại dùng vim-plug, và vim-plug hỗ trợ chạy lệnh UpdateRemotePlugins sau khi cài đặt.
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
Chỉ việc cài đặt các plugin từ xa vào "rplugin/{host}" thôi chưa đủ để chúng tự động tải khi cần thiết. Bạn phải thực thi |:UpdateRemotePlugins| mỗi lần một plugin từ xa được cài đặt, cập nhật hoặc xóa. Tóm lại, sau khi cài đặt xong plugin, đều cần phải thực hiện UpdateRemotePlugins trong Neovim để tạo ra một file manifest cho plugin. Lợi ích là, có file manifest này sẽ giúp tăng tốc độ khởi động của Neovim.
Nhìn chung, vim-plug dường như phù hợp hơn khi sử dụng cùng Neovim. Khi nào rảnh sẽ chỉnh sửa lại cấu hình sau.
Khi thực hiện PluginInstall trong Neovim với fish shell sẽ xảy ra lỗi, cần chuyển về zsh để thực hiện lệnh này.