VIM:仅在特定行号之间搜索?

时间:2010-07-16 10:59:17

标签: search vim

我知道使用Vim的替换命令可以指定一系列行:

:12,24s/search/replace

我希望能够指定正常搜索范围。像

这样的东西
:12,24/search

因为这似乎不起作用(至少在我的Vim配置上),有人知道如何实现这个目标吗?

谢谢。

7 个答案:

答案 0 :(得分:35)

akira的答案很棒。但经过一番挖掘,我找到了另一种选择。它并不优雅,但更容易输入:

 :12,24g/search/

这会给你一个恼人的提示,但它会在包含所搜索字符串的范围内的第一行结束。

答案 1 :(得分:29)

:help search-range

然后

:help /\%>l
基本上是这样的:

/\%>12l\%<24lsearch

答案 2 :(得分:19)

你真的需要行号吗?另一种方法是可视化地选择范围。

  1. 使用v,V或其他
  2. 选择范围
  3. 按ESC取消选择范围
  4. 使用/\%Vwhat_to_search进行搜索,以搜索之前所选范围内的“what_to_search”。
  5. 输入的次数较少,但不是直接输入的内容; - )

    请参阅:help%V

    [编辑]很好,我刚刚了解到搜索范围可以通过选择另一个范围进行搜索后更改,再次通过按ESC并按n重复搜索来取消选择此范围。 Vim真的总是对惊喜有好处。

答案 3 :(得分:16)

继续使用替换命令,但将gc标记附加到原始示例。

:12,24s/search//gc

来自:help search-range

  

[要在范围内搜索]使用   “:用'c'代替”命令   旗。

实施例: :.,300s/Pattern//gc

  

此命令将从中搜索   光标位置直到第300行为   “图案”。在比赛中,您可以输入   'q'停止,或'n'找到下一个   匹配。

答案 4 :(得分:4)

如果标记出a和b,则可以使用

将搜索限制在a和b之间的区域
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Broadcaster
    |--------------------------------------------------------------------------
    |
    | This option controls the default broadcaster that will be used by the
    | framework when an event needs to be broadcast. You may set this to
    | any of the connections defined in the "connections" array below.
    |
    | Supported: "pusher", "redis", "log", "null"
    |
    */

    'default' => env('BROADCAST_DRIVER', 'pusher'),

    /*
    |--------------------------------------------------------------------------
    | Broadcast Connections
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the broadcast connections that will be used
    | to broadcast events to other systems or over websockets. Samples of
    | each available type of connection are provided inside this array.
    |
    */

    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_KEY'),
            'secret' => env('PUSHER_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => 'ap1',
                'encrypted' => true
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],

        'log' => [
            'driver' => 'log',
        ],

        'null' => [
            'driver' => 'null',
        ],

    ],

];

这可以通过cmap进行简化

/\%>'a\%<'bSearchText

答案 5 :(得分:0)

使用Narrow Region plugin我们可以打开一个临时缓冲区,其中包含我们需要搜索或更改的范围

:900,1000NarrowRegion

然后我们可以进行搜索

/thing

或者改变并写回缓冲区

:%s/this/that/g
:wq

答案 6 :(得分:0)

如果要搜索到文件末尾,请使用$:

:3,$s/pattern//gn

这将从3d行搜索到最后