如何在NeoVim/Vim中修改除插入模式外的默认键盘布局?
可行的Vim/NeoVim键盘映射配置方案
核心思路
绕开langmap对非ASCII字符的支持缺陷,直接针对除插入模式外的所有目标模式单独设置映射,确保插件能识别到按键映射逻辑。
具体配置
方式一:Vimscript 配置(适配Vim/NeoVim,可放入init.vim或.vimrc)
" 正常模式映射 nnoremap ğ [ nnoremap ü ] nnoremap Ğ { nnoremap Ü } " 可视模式映射 vnoremap ğ [ vnoremap ü ] vnoremap Ğ { vnoremap Ü } " 命令行模式映射(按需添加) cnoremap ğ [ cnoremap ü ] cnoremap Ğ { cnoremap Ü }
方式二:Lua 配置(NeoVim专属,放入init.lua)
local map = vim.keymap.set -- 正常模式 map('n', 'ğ', '[', { noremap = true }) map('n', 'ü', ']', { noremap = true }) map('n', 'Ğ', '{', { noremap = true }) map('n', 'Ü', '}', { noremap = true }) -- 可视模式 map('v', 'ğ', '[', { noremap = true }) map('v', 'ü', ']', { noremap = true }) map('v', 'Ğ', '{', { noremap = true }) map('v', 'Ü', '}', { noremap = true }) -- 命令行模式(按需添加) map('c', 'ğ', '[', { noremap = true }) map('c', 'ü', ']', { noremap = true }) map('c', 'Ğ', '{', { noremap = true }) map('c', 'Ü', '}', { noremap = true })
关键说明
- 使用
noremap(Lua中对应{ noremap = true })可避免映射递归冲突,保证映射直接生效。 - 针对每个需要的模式单独配置,既满足“仅作用于非插入模式”的需求,又彻底规避
langmap的非ASCII支持问题。 - 无需修改NeoVim默认文件,也不会影响系统全局键盘布局。
内容的提问来源于stack exchange,提问作者lee_evernote
相关产品推荐
相关产品推荐

