【问题标题】:Surround Several Words With Quotes At Once In vim在vim中一次用引号包围几个单词
【发布时间】:2018-08-04 22:12:16
【问题描述】:

我很好奇是否有一种方法可以使用 vim 一次用引号括起几个单词。我正在使用 tpope 环绕并重复,但我想知道是否有类似

的命令
3ysw"

所以从

one two three 

"one" "two" "three"

【问题讨论】:

    标签: vim surround


    【解决方案1】:

    您可以直观地选择带有v3e 的范围,然后对其运行替换命令::s/\v(\w+)/"\1"/g(应自动插入范围'<,'>)。

    不过,就我个人而言,我宁愿用ysw" 包围一个词,然后用w.w.(根据需要重复)。


    或者,记录一个执行两个步骤的宏(围绕并移动到下一个单词),然后调用它 n 次:

    qqysw"3wq
    

    这在你的q寄存器中之后,你可以调用2@q对剩余的单词进行环绕。

    【讨论】:

      【解决方案2】:

      当您想引用三个单词时,从光标当前所在的单词开始,您可以这样做:

      bv3ec'<Ctrl+r>"'
      

      b 将光标放在当前单词的开头,v 进入可视模式,3e 在当前 3 单词序列的末尾跳转,c 剪切选择并进入插入模式,在插入左引号' 并按&lt;Ctrl+r&gt;" 以粘贴剪贴板缓冲区的当前内容,然后插入另一个引号'

      如果将光标从第一个单词的第一个字符处开始,则省略前导 b

      【讨论】:

      • 这正是 vim-surround 所做的,而不是单独引用每个单词。
      【解决方案3】:

      另一个替代选项

      s,\w\+,"&",g
      
      s ............. substitute current line (add %s for the whole file)
      \w\+ .......... one word or more
      "&" ........... & represents the whole match on the search part
      g ............. every occurrence on the line
      

      OBS:使用替换时,我们可以使用不同的分隔符以便于键入。 (在搜索“/my/pattern/”之类的内容时也很有用)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多