我已经使用VIM一段时间了,每次都让我感到惊讶。在"建筑句子"在此tutorial中,我看到了cis
和yip
命令的组合。我已经使用了Vim很长一段时间,我熟悉普通模式下的大多数命令。我也知道以有意义的方式组合命令以产生组合动作。
但是,我在上面展示的示例(cis
和yip
)完全打破了我对正常模式下VIM命令系统的理解。 " C"代表变革,"我"代表插入和" s"代表替代,但联合行动与我预期的不同。我还浏览了VIM帮助文件,但从未看过说明给定用法的示例。
有人可以澄清一下发生了什么吗?
答案 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
仅在正常模式下s
,delete & start insert
表示cis, das
。
sentence
案例:仅在正常模式下,表示p
,但paste
表示cip, yap ...
。
paragraph
将向您展示文本对象的概念。这是vim用户的必须技能。 ; - )