Questions tagged «search»

使用/或search()搜索文本。对于查找/替换操作,请使用标签[substitute]代替。


1
调用:search()后是否可以获得匹配的字符串
在vimscript函数中,我需要l:matched在调用后为变量分配匹配的字符串search(),我想知道是否有比我目前正在做的事情更短的方法: let l:pattern = '\v^Foo: \zs.*' let l:line = search(l:pattern) let l:line_text = getline(l:line) let l:matched = matchstr(l:line, l:pattern) 理想情况下,我想要类似 let l:matched = search_text(l:pattern) 没有诉诸getline()。有没有我似乎找不到的vim函数?
15 vimscript  search 


5
快速搜索,仅限于C ++函数
我从事一个相当大的C ++项目。其组织中最令人沮丧的方面之一是非常大的功能置于荒谬的大文件中。 我经常想搜索特定全局变量或函数调用的任何实例,仅限于当前函数。是否有一个合理的简单公式可以实现这一目标? (我确实安装了ctags并使用了标签栏...这可能对此有所帮助)

3
如何对每次出现的单词应用一组击键?
如果我想删除每个单词,那很容易,因为我会做这样的事情: :s%/WORD//g 但是,如果我想对xyz每次出现的“ WORD”都该怎么办?例如,假设我要删除包含“ WORD”的每一行。我可以想到几种方法来执行此操作,但是似乎没有一种方法是理想的。 1) /WORD 然后手动按ddnddnddnddn...直到不再出现。但是,如果有很多行可以执行此操作,则将很耗时。 2) qd/WORD<enter>ddq 然后猜测出现WORD的次数,然后,例如: 500@d 但这将要么A)丢失一堆线,要么B)删除一堆多余的线。 有一个更好的方法吗?
13 search  macro 


2
:nohlsearch和:set nohlsearch之间的功能区别是什么?
我注意到当我使用:nohlsearch它时,它实际上并没有执行与相同的操作:set nohlsearch。 特别是,hlsearch设置实际上并没有关闭(即:set hlsearch完成)。 为了说明我的意思: :set hlsearch :nohlsearch :echo &hlsearch 此打印1(hlsearch仍然设置!) :set hlsearch :set nohlsearch :echo &hlsearch 0之所以打印出来,是因为我们使用了在vim中关闭设置的标准方法来关闭了hlsearch。 所以我有点纳闷,因为:nohlsearchex命令必须存在一些实际原因。 我关心的原因是,我现在需要在vim脚本中测试搜索突出显示是否处于活动状态,并且由于我:nohlsearch在其他脚本中使用的不是“:set nohlsearch”,所以&hlsearch测试始终返回1。因此,我想知道不再通过使用nohlsearchex命令来进行更改。
13 search  highlight 

1
是否有incsearch搜索replace命令?
我真的很喜欢Vim的incsearch功能。当我进行更换时,是否可以使用它或类似的方法? 例如,如果在普通模式下,我输入: :%s/potato/ 我可以potato在文件上突出显示所有s 吗,就像incsearch我写时突出显示它们一样 /potato ? 使用正则表达式时,这已经对我有很大帮助。当我写这篇文章时,一个非常非常好的地方是: :%s/potato/banana/ 它将potato用bananas 替换s,并突出显示它们-也许替换的颜色应该不同。直到我按Enter键,它才“提交”更改)。 如果有帮助,我目前正在使用neovim。

1
如何与VIM交互搜索/ grep?
有什么方法可以配置VIM以便在每个文件中交互式搜索整个项目? 通过交互式,我的意思是更新每个按键。 类似于Emacs counsel-git-grep,请参见:示例演示。
12 search  vimgrep 

1
搜索时忽略变音符号/重音符号
有没有一种方法可以指示Vim在搜索时要忽略变音符号/重音符号?例如,我希望能够搜索 kočička 通过输入 /kocicka 在ignorecase和smartcase选项是非常有用的,但他们似乎并不有什么关系变音符号/口音。
12 search 

1
为什么换行符在搜索寄存器中转换为Null字符,并在命令行转换为回车符?
如果我有以下文字: foo bar 我从视觉上选择它并复制它。 现在,该文本存储在未命名的寄存器中",这是其内容(的输出:reg "): "" foo^Jbar^J 根据此图表,似乎^J是换行符的插入符号。 如果要a通过键入:let @a = @" 以下内容在寄存器中复制未命名的寄存器:这是其内容(的输出:reg a): "a foo^Jbar^J 它没有改变。 如果现在我输入:let @/ = @",将其复制到搜索寄存器中,则其内容为的输出:reg /: "/ foo^@bar^@ 根据上一张图表,它似乎^@是Null字符的插入符号。 为什么换行符会自动在搜索寄存器(而不是a寄存器)内转换为Null字符? 如果我在命令行上(或之后的搜索中/)插入未命名的寄存器,则通过输入:<C-R>",将插入以下内容: :foo^Mbar^M 同样,根据最后一张图表,这^M似乎是回车符的插入符号。 为什么在命令行上将换行符自动转换为回车符? 编辑: 通常,您可以通过键入以下内容来插入文字控制字符: <C-V><C-{character in caret notation}> 例如,您可以<C-R>通过键入插入文字<C-V><C-R>。 您可以为看似任何控制字符执行此操作。 但是,我注意到我无法在缓冲区内或命令行上插入文字LF,因为如果键入:<C-V><C-J>它会插入^@,空字符而不是^J。 是否出于相同的原因将LF在搜索寄存器中转换为NUL? 编辑2: 在中:h key-notation,我们可以阅读以下内容: <Nul> zero CTRL-@ 0 (stored as …

3
动作映射
我试图了解如何在映射内的后续运动中使用运算符。例如: nmap /c c{here we pending for a motion}/<C-r>"<CR> 该地图应执行以下操作: 激活c操作员并收听下一个动作; 例如,我可以在此处键入t,以在下一个逗号之前更改所有内容; 进入插入模式,删除光标和逗号之间的所有内容; 删除的文本会自动搜索为图案 简而言之,删除运动文本后,我将处于插入模式,突出显示了已删除的文本。如果有人帮助我解决这个问题,我将不胜感激。 更新 答案几乎是我想要的。但!当我按时/cw,键入一些东西而不是单词,然后按<Esc>。我希望以后再做同样的事情。但是,在n(转到下一个出现)和.(重复上一个命令)之后,它只是在最后键入的文本之前加上了替换而不是替换它。映射的主要目标是将其与n/N和.重复使用。我错过了什么吗?

3
跳转到我刚刚更改的单词的下一个出现
如果我有以下情况: function foo(bar) { return bar + 1; } 而且我cw习惯将第一个更改bar为baz,如何跳转到下一个匹配项bar,以便可以.进行相同的更改? 我不能使用*,因为那样会在光标下搜索当前单词,而且我愚蠢地没有bar第一次搜索,因此n无法正常工作。 是否有一种简单的方法来搜索单词更改之前的下一个出现的单词? 我不希望做一个搜索和替换,因为无论有其他出现bar在我的文件,我不想改变,或因为有只有两个实例bar,我忘了:%s/bar/baz/之前,我开始和那太更改唯一剩余实例的工作量很大。
12 search 

3
Vim正则表达式中的'\ zs'和'\ @ <='原子有什么区别?
这是我从文档中得到的结果:\zs匹配前面的正则表达式后\@&lt;=“启动突出显示的部分”,而匹配前面的原子后“启动突出显示的部分” 。但是我不完全理解这一点的微妙之处,所以谁能解释他们在深度上有何不同? 这就是让我感到好奇的原因:如果我跑步 /\_s\zsnnoremap 即选择nnoremap由空格或一个开始的行之前(即,从前述线路换行,因此\_之前的s),然后运行gn到进入的视觉模式和直观地选择下一个匹配,由于某种原因,仅在第一列(即第一n中nnoremap)选择-尽管事实上,整个nnoremap字凸显与:hlsearch开启。 但是,如果我改为运行搜索 /\_s\@&lt;=nnoremap 然后尝试gn,nnoremap正确选择了整个。这可能是怎么回事?我(敢说)发现了一些晦涩的错误吗?

7
如何在vim中搜索与当前行匹配的行
我通常使用来搜索单词:/string,但是如果必须搜索整个当前行,该怎么做。 event: 1 beacon: 0x02 //line 1 event: 19 beacon: 0x02 //line 2 event: 1 beacon: 0x03 //line 3 event: 1 beacon: 0x02 //line 4 event: 8 beacon: 0x01 //line 5 event: 19 beacon: 0x02 //line 6 event: 1 beacon: 0x02 //line 7 例如,if cursor目前在line 1如何类似于:/包含整个当前行的文本的搜索中。光标应跳到匹配line 4,然后再跳到line 7

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.