我有set autoindent
一条线,按A键,然后<CR>让我到下一行并插入一个缩进.但是,如果按Esc键,光标会跳到行的开头,缩进就会消失.
我必须继续并按标签再次到达正确的位置.
我知道帮助说:
If you do not type anything on the new line except <BS> or CTRL-D and then type
<Esc>, CTRL-O or <CR>, the indent is deleted again.
Run Code Online (Sandbox Code Playgroud)
有没有办法禁用此功能,或者至少是一种解决方法?
直到两天前我才遇到这个问题.
有没有方法来禁用此,但幸运的是,你不需要,而是因为:
使用S或输入插入模式cc.再次S进入插入模式将进入具有适当缩进级别的插入模式,这使得Vim删除了不重要的缩进.
注意:我发现这个技巧对我来说很有用.但由于某种原因,它不适用于Python文件.我猜这是与Python文件类型混淆自己的缩进函数,或者沿着这些行的东西.
编辑:
另一个技巧,你可以用一种方式定义cpoptions,如果你在一个带缩进的行上并移动光标,它将保留缩进.这不会解决你Esc立刻遇到的问题,但这是一个可能也困扰你的相关问题.
好吧,我明白了。
根据 Edan Maor 的回答,S或者cc应该进入具有适当缩进级别的插入模式。
...除非没有:)
这在两种情况下有效。
cindent设置时,它将根据 C 格式规则插入缩进,indentexpr设置。我发现最好的解决办法就是让它成为我的.vimrc
set autoindent
set indentexpr=GetIndent()
function GetIndent()
let lnum = prevnonblank(v:lnum - 1)
let ind = indent(lnum)
return ind
endfunction
Run Code Online (Sandbox Code Playgroud)
现在,当我按S或时cc,它将插入与上一个非空行相同的缩进。
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |