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

如何在Vimscript中停止制表位?代码执行结果不符求助

解决Vim中自动缩进导致\end带制表位的问题

问题根源是Vim的自动缩进/智能缩进机制:当你输入<CR>换行后,Vim会自动继承上一行的缩进级别,给新行添加制表位,所以输入\end时前面会带上多余的缩进。

你可以用以下两种方式解决:

方式一:换行后直接跳转到行首输入

修改你的execute命令,在第二个<CR>后加上0(normal模式下跳转到行首),再进入插入模式输入\end:

execute "normal! i\\begin\\r\\<tab>somethinghere\\r0i\\end"

这样能直接在行首插入\end,完全避开自动缩进的影响,操作简单直接。

方式二:临时关闭自动缩进(保留原有配置)

如果需要保留其他场景的自动缩进规则,可在插入模式下临时关闭缩进设置,完成输入后再恢复:

execute "normal! i\\begin\\r\\<tab>somethinghere\\r<C-O>:set noautoindent nosmartindent<CR>\\end<C-O>:set autoindent smartindent<CR>"

这里<C-O>是插入模式下临时执行单条normal命令的快捷键,先关闭缩进配置,输入\end后再恢复原有缩进规则。

内容的提问来源于stack exchange,提问作者Phrixus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:52:12