在VIM插入模式下重复字符

175

在Vim的插入模式下,有没有一种重复输入字符的方法?例如,我想要插入80个破折号,在类似Emacs的编辑器中,我会输入:

Ctrl+U   8 0 -

我所知道的唯一在Vim中实现的方式是退出正常模式以获取重复参数,然后再返回插入模式以输入破折号,接着再退出插入模式插入实际的破折号,最后再回到插入模式继续输入。这个序列非常冗长:

Esc 8 0 a - Esc a

不需要频繁切换模式会更好。

13个回答

2
对于这样一个简单的任务,缩写就可以解决问题。将以下内容添加到您的.vimrc文件中即可。
iab <expr> -- repeat('-', 80)

从现在开始,当您在插入模式下输入--后跟一个空格时,--将自动转换为-80次。

通过使用函数repeat,您可以将字符串重复多次。

请注意,在更新.vimrc之前,您可以在命令模式下输入以下内容进行测试::iab <expr> -- repeat('-', 80)


2
除了编写可重复文本多次的功能外,您还可以使用<C-x><C-l>:如果您已经有包含80个破折号的行,则在新行的开头写入几个破折号,然后按下<C-x><C-l>将完成以这些少数破折号开头的行,这可能是包含80个破折号的行。我曾经以这种方式在帮助文件中编写水平线(78个破折号)。

1
我在不退出插入模式的情况下,按照以下步骤完成了此操作:
  1. 启用插入模式。
  2. 键入一个破折号“-”。
  3. Ctrl + O
  4. 小写字母“v”(进入--(插入)VISUAL--模式)
  5. 小写字母“y”(复制)
  6. Ctrl + O
  7. 输入80
  8. 然后,跟随小写字母“p”(粘贴)。

i - Ctrl+o v y Ctrl+o 80 p

这将在一行中水平打印所有破折号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接