【问题标题】:Exact selected multiline string search in vim在 vim 中精确选择多行字符串搜索
【发布时间】:2018-12-13 13:42:20
【问题描述】:

我有一个缓冲区。在该缓冲区中存在一个跨越多行的字符串:

asdf
qrughatuxlnjtzu
... tens more lines...

我的光标下有一个该字符串的实例。我想在同一缓冲区中搜索此多行字符串的 other 实例,而不必手动将所述多行字符串的重要部分复制/编辑到命令缓冲区中(nb 手动将换行符替换为其正则表达式等效项很重要编辑)。

我尝试过使用How do I search for the selected text?(视觉选择 -> yank -> 命令缓冲区)+Exact string match in vim? (Like 'regex-off' mode in less.)(逐字搜索),但这些方法似乎不适用于多行。

如何在 Vim 中对选定的字符串执行精确的多行搜索?

【问题讨论】:

    标签: vim


    【解决方案1】:

    我会映射 * 来搜索视觉选定区域:

    vnoremap * "vy/\V<C-R>=substitute(escape(@v,'/\'),'\n','\\n','g')<CR><CR>

    【讨论】:

      【解决方案2】:
      nnoremap <your keys> :<c-u>let @/=@"<cr>gvy:let [@/,@"]=[@",@/]<cr>/\V<c-r>=substitute(escape(@/,'/\'),'\n','\\n','g')<cr><cr>
      

      然后直观地选择带有V 的行(或v 用于部分行),然后点击&lt;ESC&gt;&lt;your keys&gt;

      来源是here(参见@Peter Rincker 的回答)。

      【讨论】:

      • 这行得通!一个缺失的细节:在选择并使用&lt;your keys&gt; 进行初始搜索(从而找到第二个实例)后,我不得不使用通常的/? 进行后续搜索以分别找到第三个并返回第一个实例.甚至没有意识到有一个 vim stackexchange。
      • 不知道为什么要使用/? 而不是nN,反正,是的,你得搬回去才能回到第一个实例。
      • 我对搜索命令的通常假设是重复逐步进行搜索。我无法重复执行搜索的命令令我感到惊讶,并且可能值得其他任何可能分享该启发式的人注意。并不意味着抱怨。
      【解决方案3】:

      根据文件中的换行符,您也可以在搜索中包含换行符,

      例如对于 Unix 行尾,您可以搜索

      /asdf\nqrughatuxlnjtzu$
      

      对于 Windows 行尾,您可以改用 \r\n

      上面的$ 字符将搜索到行尾,因此将排除任何行尾,但这是避免在诸如

      之类的行上匹配所必需的
      asdf
      qrughatuxlnjtzuNotToBeMatched
      

      另见http://vim.wikia.com/wiki/Search_across_multiple_lines

      【讨论】:

      • 否;文本被 selectedyanked,并且行尾被 yanked 为 ^M (et al)。我可以接受一个建议使用在本地运行的替换命令来编辑搜索字符串的答案(尽管这是针对所写问题的;我没有提到我发现这样做并不令人满意)。
      • 我不明白你的意思是文本被拉了。执行Escape/searchtextenter 不会拉出选定的文本。除非这是您想要做的,但您的问题并不清楚
      • 我不一定要拉出文本;我想避免把它写出来,因为它的一个实例已经存在并且随时可用,我希望搜索它的 other 实例。因此是问题的“选定”部分。我会在问题文本中澄清。
      【解决方案4】:

      您可以使用\n 作为换行符进行搜索:

      /asdf\nqrughatuxlnjtzu
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-09
        • 2016-12-24
        • 2012-02-20
        • 1970-01-01
        • 2012-07-13
        相关资源
        最近更新 更多