c,i和s命令组合在VIM中

时间:2017-02-14 09:44:57

标签: vim text syntax editor

我已经使用VIM一段时间了,每次都让我感到惊讶。在"建筑句子"在此tutorial中,我看到了cisyip命令的组合。我已经使用了Vim很长一段时间,我熟悉普通模式下的大多数命令。我也知道以有意义的方式组合命令以产生组合动作。

但是,我在上面展示的示例(cisyip)完全打破了我对正常模式下VIM命令系统的理解。 " C"代表变革,"我"代表插入和" s"代表替代,但联合行动与我预期的不同。我还浏览了VIM帮助文件,但从未看过说明给定用法的示例。

有人可以澄清一下发生了什么吗?

3 个答案:

答案 0 :(得分:7)

在vim帮助中,它描述如下

:help c

"删除{motion}文本[进入寄存器x]并开始插入..."

命令c 的下一部分是指"动作"部分。这些命令用于文本对象选择。您可以在此处获得有关不同类型的文本对象选择的说明:

:help text-objects

e.g。对于 是 - "内部句子",选择[count]句子......

类似于上面的解释,与yip相同

:help y

" Yank {motion} text [into register x] ..."

文本选择部分y ip

ip - "内部段落",选择[count]段落(见段落)......

答案 1 :(得分:2)

在这种情况下,我不代表插入而不代替。 cis =改变内部句子。

一旦理解了基本原理,这就完全符合逻辑。每个命令都像一个句子,它需要一个动词(动作)和一个名词(对象),还有修饰语。

所以第一个按钮就是你的动作C(改变)。现在,在c动作结束之前,以下击键将不是动作(直到提供了对象,或者插入了无效序列)。我(内部)是这里的修饰符,S是对象(句子)。

我觉得这对改变单词特别有用。如果你只按一个单词的cw,你必须将光标放在单词的开头。 使用ciw,无论光标位置如何,都可以更改整个单词(注意,如果单词中有/或其他一些分隔符,则可能需要ciW)

答案 2 :(得分:1)

同一封信可以有不同的含义。例如。 .nav.nav-tabs li a { color:red; } 移至句子/段落,但(/{表示ci( or ci{

change in (...)/{...}案例相同,s仅在正常模式下sdelete & start insert表示cis, das

sentence案例:仅在正常模式下,表示p,但paste表示cip, yap ...

paragraph

将向您展示文本对象的概念。这是vim用户的必须技能。 ; - )