首页 > 解决方案 > vim插入模式下'Ci'的反向键是什么?

问题描述

在 vim 的插入模式下,'Ct' 和 'Cd' 可以从当前行的开头插入或删除 Tab/4whitespace并且:

'Ci' 可以从当前光标处插入 Tab/4whitespace 。

但是,我们如何从当前光标中删除4 个空格?'Ci' 的逆运算是什么?

标签: vim

解决方案


没有内置命令可以满足您的需求。

“手动”执行类似操作的一种方法是:

<C-c>ciw
  • <C-c>离开插入模式而不触发自动命令,将光标留在最后<Space>
  • ciw<Spaces>剪切Vim 将其视为“单词”的序列,并进入插入模式。

现在我们有了一个工作宏,映射到一些方便的东西是微不足道的:

inoremap <key> <C-c>ciw

我们可以通过防止它用无用的 s 污染寄存器来使它变得更好

inoremap <key> <C-c>"_ciw

请注意,此映射也适用于任何<Tab>s 和/或<Space>s 序列。


现在,正如@Eineki 所指出的,上面的映射不是真正的逆映射,<C-i>因为它删除了光标之前的所有连续空格,而不管列表如何。

如果您只按下<C-i>一次,那么映射将有效地充当 inverse <C-i>,但如果您有超过 a &shiftwidthof <Space>s ,则整个序列将被删除,这不是真正的 inverse<C-i>会做的事情。

真正的逆<C-i>将删除<Space>s 直到前一个列表,这听起来不那么琐碎。


推荐阅读