You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:13:14