测试vim正则表达式最简单的方法是什么?

envsm3lx  于 2022-11-11  发布在  其他
关注(0)|答案(5)|浏览(136)

我正在尝试写一个vim语法文件,我正在处理的一个问题是vim的regex语法不同于大多数其他语言(我认为一个称为“perl兼容regex”,Python,JavaScript等使用大多数相同的regex语法),所以我不能像regexpal一样使用regex测试器。
什么是尝试vim正则表达式的最简单的方法?理想情况下,我想要的是两个拆分,在一个中我将写vim正则表达式,而另一个将有文本,并且匹配的部分应该突出显示。
先谢谢你。
编辑:我在.vimrc中添加了Ingo Karkat答案的修改版本:

nnoremap <F5> mryi":let @/ = @"<CR>`r

此版本还将光标放回按下F5时的位置,代价是丢失标记r

xwmevbvl

xwmevbvl1#

对于语法文件,你经常要处理start="^begin"的东西。通过yi"删除regexp,然后通过:

:let @/ = @"

当然,如果您经常需要它,请将它绑定到一个Map(和:set hlsearch),例如:

:nnoremap <F5> yi":let @/ = @"<CR>
tzdcorbm

tzdcorbm2#

使用vim来测试正则表达式。通过在vim中输入/,你可以搜索东西,搜索使用正则表达式。
有关语法的帮助,请查看vimregex

w6lpcovy

w6lpcovy3#

我们可以在Ex模式或搜索模式下访问Vim的寄存器,方法是按Ctrl+R,然后按要粘贴的寄存器。
在您的情况下,我们可以使用它来复制我们要测试的文本,然后将其粘贴到我们的搜索中。
Yi”/Ctrl+旋转
说明:
yi”-〉在双引号"内拔出
/ -〉打开搜索栏
Ctrl+ R 0-〉粘贴上次拖动的文本

kninwzqo

kninwzqo4#

理想解决方案:


https://github.com/bennypowers/nvim-regexplainer
但到目前为止,它似乎只在javascript正则表达式上工作,而不是在vim上。

不错的网站(但没有Vim的regex引擎)

将魔法转换为非常魔法(以避免反斜杠):

https://github.com/sisrfeng/VimRegexConverter

手动拆分成琴弦片段:

if file_name =~# '\v^(' .. '[\%#~]' .. '|' .. '\.?[/\\]\a+:' .. '|' ..  '^\d+' .. ')$'

if file_name =~#  '^\.\=[\\/]\|^\a\+:\|^[%#~]\|^\d\+$'
r7xajy2e

r7xajy2e5#

您也可以尝试RegExr这是一个学习RegEx并真实的尝试它们的好工具。

相关问题