如何在vim中以可视线性模式运行每一行的命令

时间:2014-05-29 22:39:11

标签: vim

我有以下CSS,我想在每行的开头用“//”注释掉(使用Sass)。

a:focus {                                                                                                                  
    outline: thin dotted;                                                                                           
}

当我的光标在第一行时,我进入视觉线性模式并选择3行 V j j 。要评论我输入 I / / ESC 。我期望发生的是所有行都有前缀文本“//”,而只修改了第一行。

或者如果我使用visual blockwise模式选择(即 Ctrl-v j j )这些行并按 I < / kbd> / / ESC 我收到前面带有“//”。的所有行的预期结果

我的假设是线性和块状模式只是选择文本的不同方式。如果我想选择所有多行文本,只要我能够选择要修改的文本,选择命令就可以互换。但是上面的行为让我相信我还有一些不同之处。

是否可以使用可视线性模式来完成此任务,或者它只是错误的工作工具?此外,我们将非常感谢有关两种模式之间差异的文档。

3 个答案:

答案 0 :(得分:4)

如果您处于线性可视模式,则可以使用normal来完成您想要的任务。

:'<,'>norm I//

normal在正常模式下的每一行都运行命令I//

答案 1 :(得分:4)

字符,线性和块式视觉模式都允许您跨多行选择文本。

当你不关心或不想处理“线条”时,角色视觉模式主要是有用的。

当处理整行很重要时,将使用直线视觉模式。

逐块可视模式是跨多个相似线重复更改的便捷方式。我喜欢看它像“窗口内的一个窗口”,它允许我对当前缓冲区的一个子集进行操作。

您选择的那个取决于您计划对该选择做什么,但在执行可视模式命令时,它们的行为仅 :因为Ex命令总是按行,所以他们不关心关于超出第一行和选择的最后一行的视觉模式的细节。

答案 2 :(得分:1)

我更喜欢使用可视模式并调用:'<,'>s#^#//#