A Neovim plugin that automatically translates key mappings for non-English keyboard layouts, enabling seamless input method switching.
Langmapper is a Neovim plugin that automatically translates keyboard mappings to support non-English input methods. It solves the problem where key bindings (like `<leader>e`) become inaccessible when typing in another language layout (e.g., Russian), by registering equivalent mappings in the active layout so shortcuts work seamlessly without manual switching.
Neovim users who regularly type in languages with non-Latin keyboard layouts, such as Russian, Arabic, or Greek, and want their key bindings to remain functional across input method changes.
Developers choose Langmapper because it deeply integrates with Neovim's mapping system, automatically handling translations for both built-in and plugin-defined shortcuts, including those from lazy-loaded plugins, without requiring manual reconfiguration.
A plugin that makes Neovim more friendly to non-English input methods 🤝
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Hacks built-in keymap functions (e.g., vim.keymap.set) to automatically translate mappings, including for lazy-loaded plugins, as enabled by the hack_keymap option.
Processes normal mode commands based on the current input method, ensuring key bindings work correctly without manual layout switching, as described in the TLDR.
Provides functions like translate_keycode(), trans_dict(), and trans_list() for manual translation and integration with other plugins, such as Neo-tree.
Requires precise configuration of vim.opt.langmap with character escaping and layout definitions, which can be error-prone and tedious for new users.
Relies on optional CLI utilities (e.g., im-select, xkb-switch) for real-time input method detection, adding a potential point of failure on unsupported systems.
The automapping() function cannot handle mappings from lazy-loaded plugins without hack_keymap, forcing users to choose between automation and compatibility.