在Vim中,我通常希望有时重复一些命令。说,我想评论5行,我会用
I//<Esc>j
.j.j.j.j
有没有办法多次重复最后一个“.j”部分?
答案 0 :(得分:33)
执行此操作的一种方法是将键序列分配给宏,然后运行宏一次,然后运行@@
run-last-macro命令。例如:
qa.jq@a@@
如果您知道要重复宏的次数,可以使用4@@
或其他任何内容。
答案 1 :(得分:14)
您可以直观地选择要重复的行,键入: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
,直到你评论了你想要的一切。
答案 2 :(得分:9)
关于您的具体示例,我更喜欢使用可视块模式进行多行插入(使用Ctrl-v
访问)。例如,如果我有以下几行:
This should be a comment.
So should this.
This is definitely a comment.
Is this a comment? Yes.
我会转到顶行的第一个字符,点击Ctrl-v
进入视觉区块模式,导航到最后一行(可能使用3j
向下移动3行,也许使用{ {1}}直接转到第4行,或者只是4g
结束),然后输入G
一次在所有行上插入注释:
I// <esc>
此外,还有一个非常方便的评论者/非评论者插件,支持多种语言here。它比手动插入/删除注释更容易。
答案 3 :(得分:3)
对于您的特定示例。您还可以使用范围.,.5s#^#//#
(执行此操作和接下来的5行)或视觉块(点击v,然后选择所需的文本),然后使用:%s#^#//#
。
答案 4 :(得分:2)
另一种方法是在该范围内设置标记并运行替换:
ma jjjj mb :'a,'bs,^,// ,
答案 5 :(得分:1)
尝试一下:
做点事情
退出普通模式
类型,例如22.
最后一个命令将重复22次。