【问题标题】:How can I comment a single line or a block of lines in Vim?如何在 Vim 中注释一行或一行?
【发布时间】:2012-01-13 20:22:25
【问题描述】:

在 CSS 文件中,此行包含 5 个以上的规则。

border: 1px solid black;

我想这样评论这一行:

/*border: 1px solid black;*/

是否有一条捷径可以对所有 5 次出现的评论进行此评论?

我可以指定一个键来评论单行或一行吗?

我不想只搜索和替换这一行,我想设置一个键,以便当我悬停一行并按下该键时,该行将被注释或选择一行或选择一行块,如果我按下那个键,那一行或一行行将被注释。

【问题讨论】:

    标签: css vim comments


    【解决方案1】:

    我建议为此使用宏。宏由 Vim 自动保存并可跨会话使用。

    录制宏类型:q<letter><commands>q。其中<letter> 是 a-z 中的任意字母,表示将保存宏的寄存器。之后,您只需键入要录制的命令,最后再次按q 即可停止录制。

    在您的情况下,您可以执行以下操作。按q,然后按a选择a寄存器,然后进入插入模式,在一行的开头和结尾输入/**/。再次按q 停止录制。

    现在只需将光标移动到任意行并按@a 即可在该行执行宏。

    【讨论】:

      【解决方案2】:

      你必须尝试 VIM 的 NERD Commenter 插件。恕我直言,这个插件最适合这项任务。

      【讨论】:

        【解决方案3】:

        为什么不为此使用正则表达式?

        :1,$s/border: 1px solid black;/\/*border: 1px solid black;\*\//
        

        1,$s 表示,您的替换应该从1 行到最后一行$ 进行。请记住,您必须对 */ 等字符进行转义。

        根据 Stackoverflow 上的this 问题,您可以将以下内容放入您的 .vimrc 中

        vnoremap <C-r> "hy:%s/\(<C-r>h\)/\/\*\1\*\//gc<left><left><left>
        

        您现在可以直观地标记一条线,然后按 ctrl+r,它会为您提供正确的正则表达式。现在,系统会逐行询问您是否要对其进行评论,并且可以通过按 y 来执行此操作。

        【讨论】:

        • 我不想只搜索和替换这一行,我想设置一个键,以便当我悬停一行并按下该键时,该行将被注释或选择一行或选择一行一行,如果我按下那个键,那一行或一行一行就会被注释掉。
        • 使用反向引用来节省输入。此外,您可以在开头使用% 而不是1,$ 范围。
        • 我不想搜索和替换。
        • 为什么“不想搜索和替换”?这种做法有什么问题吗?
        猜你喜欢
        • 2020-06-19
        • 2013-06-24
        • 2015-12-23
        • 2011-11-07
        • 2011-02-03
        • 2014-05-07
        • 2012-05-30
        • 1970-01-01
        • 2023-03-05
        相关资源
        最近更新 更多