Vietnamese.nvim giúp bạn gõ tiếng Việt dễ dàng trong Neovim, hỗ trợ logic xử lý dấu câu tự động, tương thích nhiều IME (ibus, fcitx5…), và tích hợp mượt với nhiều plugin khác.
Gõ dấu Telex(dơn giản), VNI, VIQR đúng vị trí, tự động điều chỉnh dấu cho từ hiện tại trên con trỏ.
Tự động bật/tắt IME hệ thống khi focus/blur Neovim.
Realtime xử lý dấu câu khi gõ
Tương thích với plugin bim để xử lí việc mapping jj hay jk để escape
Có thể chỉnh sửa từ đã gõ một cách dễ dàng hơn chỉ cần di chuyển tới vị trí từ đó rồi gõ các kí tự dấu thay vì phải xoá đi gõ lại như ime tryền thống
Lazy.nvim:
{
"sontungexpt/vietnamese.nvim",
dependencies = {
-- if you want to map jj or any key to escape
"sontungexpt/bim.nvim",
},nvim-web-devicons
event = "InsertEnter",
config = function(
require("vietnamese").setup()
end,
}
Packer.nvim:
use {
"sontungexpt/vietnamese.nvim",
config = function()
require("vietnamese").setup()
end,
}
Bạn có thể tùy chỉnh `telex`, `vni`, hoặc các nút xoá dấu trong file `lua/vietnamese/config.lua`. Ví dụ:
require("vietnamese").setup({
enabled = true,
-- "old" | "modern"
orthography = "modern", -- Default tone strategy
input_method = "telex", -- Default input method
excluded = {
filetypes = {
"nvimtree", -- File types to exclude
"help",
}, -- File types to exclude
buftypes = {
"nowrite",
"quickfix",
"prompt",
}, -- Buffer types to excludek
},
custom_methods =
-- Tự tạo riêng intput methods của mình
-- Tạm thời mọi người đừng tự tạo bởi vì mình chưa test (này edge case nên để sau)
-- Còn néu muôn tạo thì mọi người làm giống trong file config của telex là được
name = {
-- nhớ import ENUM_DIACRITIC from vietnamese.constant trên đầu file config để lấy enum
-- local ENUM_DIACRITIC = require("vietnamese.constant").Diacritic
tone_keys = {
["s"] = ENUM_DIACRITIC.Acute,
["f"] = ENUM_DIACRITIC.Grave,
["r"] = ENUM_DIACRITIC.Hook,
["x"] = ENUM_DIACRITIC.Tilde,
["j"] = ENUM_DIACRITIC.Dot,
},
tone_removal_keys = {
["z"] = true,
},
shape_keys = {
w = {
a = ENUM_DIACRITIC.Breve,
o = ENUM_DIACRITIC.Horn,
u = ENUM_DIACRITIC.Horn,
e = ENUM_DIACRITIC.Circumflex,
},
a = {
a = ENUM_DIACRITIC.Circumflex,
},
e = {
e = ENUM_DIACRITIC.Circumflex,
},
o = {
o = ENUM_DIACRITIC.Circumflex,
},
d = {
d = ENUM_DIACRITIC.HorizontalStroke,
},
},
-- Check if a character is a valid input character to make a Vietnamese character
--
is_diacritic_pressed = function(char)
return char:lower():match("[sfrxjzawdeo]") ~= nil
end,
}
},
})
Command:
Rất hoan nghênh issue & pull request! Bạn có thể:
Được phát hành với giấy phép Apache Licence 2.0 – xem file LICENSE