如何在Vim上重复某些动作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Vim上重复某些动作?相关的知识,希望对你有一定的参考价值。

在Vim中,我通常想重复执行一系列命令。说,我想评论5行,我会使用

I//<Esc>j
.j.j.j.j

有没有办法重复最后的“ .j”部分几次?

答案

执行此操作的一种方法是将键序列分配给宏,然后在运行@@ run-last-macro命令后运行一次宏。例如:

qa.jq@a@@

如果知道要重复多少次宏,则可以使用4@@或其他方式。

另一答案

您可以在视觉上选择要在其上重复的行,键入:normal! .以使vim在每行上使用.。因为您从视觉选择开始,所以最终看起来像这样:

:'<,'>normal! .

但是,如果要添加和删除很多//注释,可能会发现以下映射有用:

" add // comment with K
noremap K :s,^(//)=,//,e <BAR> nohls<CR>j
" remove // comment with CTRL+K
noremap <C-K> :s,^//,,e <BAR> nohls<CR>j

您可以使用5K注释5行,可以先使用可视模式选择行,也可以锤击K直到注释完所有内容。

另一答案

关于您的特定示例,我更喜欢使用可视块模式(通过Ctrl-v访问)进行多行插入。例如,如果我有以下几行:

This should be a comment.
So should this.
This is definitely a comment.
Is this a comment? Yes.

我将转到第一行的顶部第一个字符,按Ctrl-v进入可视块模式,导航至最后一行(也许使用3j下移3行,也许使用4g直接转到到第四行,或者简单地单击G结束),然后键入I// <esc>一次在所有行上插入注释:

// This should be a comment.
// So should this.
// This is definitely a comment.
// Is this a comment? Yes.

此外,还有一个非常方便的注释器/取消注释器插件,支持多种语言here。比手动插入/删除注释要容易。

另一答案

对于您的特定示例。您还可以使用范围.,.5s#^#//#(执行此操作以及接下来的5行)或可视块(按v键,然后选择所需的文本),然后使用:%s#^#//#

另一答案

另一种方法是在该范围内设置标记并进行替换:

maj兆字节:'a,'bs,^,//,
另一答案

尝试一下:

  1. 做某事

  2. 退出普通模式

  3. 类型,例如,22.

最后一个命令将重复22次。

以上是关于如何在Vim上重复某些动作?的主要内容,如果未能解决你的问题,请参考以下文章

用片段替换某些东西

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

vi/vim

latex在vim中的代码片段