如何在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
相关产品推荐
相关产品推荐

