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

1tu0hz3e  于 2023-04-06  发布在  其他
关注(0)|答案(7)|浏览(226)

在Vim中,我通常会重复一些命令,比如说,我想注解5行,我会使用

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

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

4sup72z8

4sup72z81#

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

qa.jq@a@@

如果你知道你想重复这个宏多少次,你可以使用4@@或者其他什么。

34gzjxbg

34gzjxbg2#

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

:'<,'>normal! .

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

" 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,直到您注解完您想要的所有内容。

pkbketx9

pkbketx93#

关于您的具体示例,我更喜欢使用可视块模式(使用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直接转到第4行,或者简单地G转到末尾),然后输入I// <esc>一次在所有行插入注解:

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

另外,还有一个非常方便的注解/取消注解插件,它支持多种语言here。这比手动插入/删除注解更容易。

zxlwwiss

zxlwwiss4#

试试这个:
1.做点什么
1.退出正常模式
1.类型,例如22.
最后的命令将重复22次。

htzpubme

htzpubme5#

对于您的特定示例,您也可以使用范围.,.5s#^#//#(完成此操作和接下来的5行)或视觉块(点击v,然后选择您想要的文本),然后是:%s#^#//#

h7appiyu

h7appiyu6#

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

ma
jjjj
mb
:'a,'bs,^,// ,
23c0lvtd

23c0lvtd7#

您可以通过在宏之前附加计数来重复宏。例如,如果您将宏记录到a寄存器,并且您希望执行五次,则可以键入以下内容:

5@a

相关问题