在Vim中,我如何有效地在多行中插入相同的字符?
有时我想跨多行编辑某个可视文本块。
例如,我会看到如下所示的文本:
name
comment
phone
email
让它像这样流淌
vendor_name
vendor_comment
vendor_phone
vendor_email
目前我现在要做的方式是......
" vendor_"不含引号。  注意我们必须放回的额外空间。 如果在单词前至少有一列空白,我不需要缩进。 如果我不需要用c清除视觉块,我不需要空白。
但是如果我必须清楚,那么是否有办法做到我在上面执行的操作,而不用缩进来创建所需的空格?
此外,为什么一次编辑多行只能通过使用esc over ctrlc退出插入模式?
编辑:
这是一个更复杂的例子
name    = models.CharField( max_length = 135 )
comment = models.TextField( blank = True )
phone   = models.CharField( max_length = 135, blank = True )
email   = models.EmailField( blank = True )
至
name    = models.whatever.CharField( max_length = 135 )
comment = models.whatever.TextField( blank = True )
phone   = models.whatever.CharField( max_length = 135, blank = True )
email   = models.whatever.EmailField( blank = True )
  在这个例子中,我会执行垂直视觉模块.  ,然后在插入模式下重新插入,即键入.whatever.  。  希望现在你可以看到这种方法的缺点。  我仅限于选择垂直位置上相同的文本列。 
n的name 。 I (首都)。 vendor_ 。 
  必须使用大写字母I而不是小写字母i因为小写字母i被解释为文本对象的开始,这对于自己而言非常有用,例如,用于在标签块( it )内选择内部: 

  另一种方法是使用。  ( dot )命令与I相结合。 
vendor_ ) 我发现这种技术通常比用于少量添加的可视块模式更快,并且还具有额外的好处,如果您不需要在范围内的每一行上插入文本,则可以通过按下多余的j来轻松地跳过它们。
请注意,对于大量连续添加,块方法或宏可能会更好。
我会用宏来记录我的动作,然后重复它。
qq开始记录到q缓冲区。 i进入插入模式,输入vector_ ,然后按ESC退出插入模式。 0返回到行首。 j去。 q停止录制。 你现在有一个不错的宏。
  键入3@q来执行你的宏3次来完成其余的行。 
上一篇: In Vim how do I effectively insert the same characters across multiple lines?
下一篇: Vim: faster way to select blocks of text in visual mode
