如何阻止Neovim中Shift+部分字母输入时自动缩进当前行?
排查线索
- 确认文件类型检测:在Neovim中执行
:set filetype?,确保输出为cmake。若文件类型识别错误,会加载错误的缩进规则,可能引发该问题。 - 检查内置缩进表达式:执行
:verbose set indentexpr?,确认输出为=GetCMakeIndent()且来源为$VIMRUNTIME/indent/cmake.vim。这是原生Neovim针对cmake文件的缩进逻辑,若结果不符需排查环境异常。 - 临时禁用缩进开关测试:插入模式下执行
:set noautoindent nosmartindent cindent!,再尝试输入大写字母。若问题消失,说明是自动缩进类开关与cmake缩进逻辑冲突。 - 逐个排查indentkeys触发项:先执行
:set indentkeys?确认当前配置,再通过:set indentkeys-=关键词逐个移除cmake相关的触发关键词(如=ENDIF(),每次修改后测试,定位是否为特定关键词匹配导致的误触发。 - 测试纯净环境:用
nvim -u NONE -U NONE CMakeLists.txt打开文件(完全禁用自定义配置与插件),若问题仍存在,说明是Neovim原生cmake缩进的bug;若问题消失,需检查个人基础配置中是否有影响缩进的设置。 - 查看缩进事件日志:执行
:verbose set report=1,操作后观察底部提示;或执行:messages查看最近输出,确认是否有自动缩进调整的记录。 - 检查按键映射冲突:执行
:map <S-X>(X替换为触发问题的大写字母),确认无意外的按键映射。原生环境下应显示"No mapping found"。
内容的提问来源于stack exchange,提问作者GZ92
相关产品推荐
相关产品推荐

