我想搜索一个用列写的字符串。有没有办法用vim搜索这个?例如:
B
A
S
I
C
如果我想在列中搜索BASIC这个词,我怎么能在vim中这样做?
答案 0 :(得分:0)
正则表达式(为Vim的搜索提供动力)只能表示连续的字符匹配。因此,您只能匹配以B
开头并以C
结尾的文字,包括其间的所有文字:
/B.*\n.*A.*\n.*S.*\n.*I.*\n.*C
通过使用.*\n.*
,这断言每个字符都在以下行中。正则表达式的另一个缺点是您不能在同一列声明匹配,因此上面也会匹配未对齐的BASIC
。对于具有特殊\%v
原子的固定列,您只能避免这种情况:
/\%32vB.*\n.*\%32vA.*\n.*\%32vS.*\n.*\%32vI.*\n.*\%32vC
Vim确实有一种方法可以在视觉模式<C-v>
中选择垂直字符块。使用Vimscript(例如getline()
或searchpos()
),您可以搜索单个字符,然后构建这样的选择。
正如Kent评论的那样,如果您转换文本(实际上是逆时针旋转90°),则可以通过默认搜索轻松匹配(现在为水平)文本。