Vim 对块重复一个命令

Vim 对块重复一个命令,vim,Vim,我已经与vim合作了4周,我想知道如何做到这一点: 我想在ruby中添加一个注释。我可以为所有线路做一个“.”。但是如果我有很多话要说呢 有什么命令我可以在一个街区上执行吗 不:这并不意味着只为所有行放置一个。您可以这样做: :%s/^\(.*)/#\1 对于块,您可以使用交互式选项执行此操作: :%s/^\(.*)/#\1/c Vim将在每次匹配时提示更换答案y或n 我想有一种方法可以用行号,或者几组行来做,但我现在还不知道 编辑:因此对于注释建议的块: vip (in normal mo

我已经与vim合作了4周,我想知道如何做到这一点:

我想在ruby中添加一个注释。我可以为所有线路做一个“.”。但是如果我有很多话要说呢

有什么命令我可以在一个街区上执行吗


不:这并不意味着只为所有行放置一个。

您可以这样做:

:%s/^\(.*)/#\1
对于块,您可以使用交互式选项执行此操作:

:%s/^\(.*)/#\1/c
Vim将在每次匹配时提示更换答案y或n

我想有一种方法可以用行号,或者几组行来做,但我现在还不知道

编辑:因此对于注释建议的块:

vip (in normal mode to select the block)
:'<,'>s/^\(.*\)/#\1/


您可以使用可视块模式。在行的开头按ctrl+v,然后将光标向下移动到您想要注释的行数,按shift+i,然后按escape,它将在所有这些行的前面放置一个。我个人使用tComment。有很多插件可用于评论处理


您需要按块选择


用CTRL-V开始选择,按4j,然后输入大写字母I。

答案已经被接受,但您可能会发现这很有用。/要评论一个块和?取消注释。在视觉模式下工作,或以正常运动方式工作,如3,/注释3行,假设逗号为mapleader

map <leader>/ :s/^\(\s*\)/# \1/<CR>:nohl<CR>"
map <leader>? :s/^\(\s*\)# /\1/<CR>:nohl<CR>"

或者只需%s/^/。。。在某些行号之间,只需通过一个范围,就像您已经通过一样。%是一个范围,相当于从第一行到最后一行的1$。40,78s/^//在第40到78行执行。@sidyll啊,太好了!现在,我们应该找到一个意思:我猜是当前选定的行。编辑以提供更好的答案。感谢@sidyll+1提供了一个使用Vim内置功能的简单解决方案。视觉块模式非常强大。我必须按ESC键两次,视觉块插入才能工作。@Thorpe Obazee:它与您接受的解决方案有何不同?对不起。但你的答案是不完整的。“我打字的时候你漏了。@Thorpe Obazee:不,它不是不完整的。它指示你从哪里开始。同样在vim中,请使用help blockwise-examples.Benoit。是的,只从哪里开始。谢谢我会投赞成票,但我需要接受最好的答案。
map <leader>/ :s/^\(\s*\)/# \1/<CR>:nohl<CR>"
map <leader>? :s/^\(\s*\)# /\1/<CR>:nohl<CR>"