跨列搜索字符串

时间:2014-08-18 11:34:50

标签: vim

我想搜索一个用列写的字符串。有没有办法用vim搜索这个?例如:

B
A
S
I
C

如果我想在列中搜索BASIC这个词,我怎么能在vim中这样做?

1 个答案:

答案 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°),则可以通过默认搜索轻松匹配(现在为水平)文本。