正常模式和插入模式之间的转换忽略 gVIM 中的缩进

Transition between normal mode and insert mode ignores indentation in gVIM

好吧,我已经开始了 Vim 的旅程,在学习了基础之后,我正在设置我的 _vimrc 以实现我想要的行为 Vim 将其用作我的首选编辑器。我能够获得非常可靠的配置。但是,有些事情我仍然不知道该怎么做,我想做的是:

考虑一下我写了这样的东西:

然后我按<ESC>进入正常模式。之后我得到的是:

最后,我按I进入插入模式,光标的位置是:

如何强制 Vim 以相对于光标所在块的缩进启动插入模式?换句话说,在更改模式时,而不是第三个屏幕截图中的第一个屏幕截图中的起始位置。

我的几乎所有 _vimrc 文件都是由:

syntax on
au GUIEnter * simalt ~x
colorscheme monokai-pro
set guifont=Consolas:h20
set mouse=a
set tabstop=4
set shiftwidth=4
set smartindent
set number
set autowrite
set autoread
set nowrap
set hls
set is
set expandtab
set cb=unnamed

提前致谢。我希望能正确解释问题,如果不是这样请告诉我。

首先,此处描述的行为不受任何选项的约束。由用户根据他们认为合适的方式处理情况。发生的情况是 Vim 删除了仅由缩进组成的行上的任何自动插入的缩进,大概是为了防止尾随空格。

你不会想要尾随空格吧?

其次,如果你已经在插入模式并且在右栏,为什么你立即回到正常模式并再次进入插入模式?继续输入不是更简单、更直观吗?

总之,这是初学者的常见陷阱,具有三种常见方法。

第一种方法

插入内容并在按 <Esc> 之前立即将其删除,以便保留自动缩进:

第二种方法

让 Vim 执行它的操作并在插入模式期间调整缩进:

参见 :help i_ctrl-t

第三种方法

让 Vim 执行它的操作并按 S 而不是 I 以正确的缩进级别进入插入模式:

:help S

另一种看待它的方式

有效地使用 Vim 几乎就是关于正念和在当前上下文中使用最好的 tool/technique。在某些领域称为“态势感知”的东西。在返回之前打开一条线只是去其他地方可能是也可能不是给定当前上下文的最合适的操作。也许只有当你确实需要插入一些东西时才应该打开那条线,在你去过其他地方之后?也许您必须在其他地方做的事情可以以不同的方式完成,而您实际上不必去那里开始?