Isso não pode ser feito apenas por meio de expressões regulares. Você precisaria de um átomo especial que funcionasse como um grupo de captura , mas capturasse a coluna e, em seguida, um átomo correspondente para a recuperação. O melhor que você pode fazer é combinar cada linha em uma linha subsequente, para o seu exemplo
/ab\ze.*\n.*ba.*\n.*ab/
Com isso, não apenas as linhas que correspondem às linhas do bloco são correspondidas, mas todas as ocorrências que contêm o texto do bloco, embora não apenas com o mesmo alinhamento vertical, e apenas a correspondência da primeira linha são destacadas. O meu plug-in SearchHighlighting também fornece essa funcionalidade (mapeada para {Visual}*
).
Se isso não for suficiente (você pode usar o sinal /c
em :substitute
para verificar e reconhecer manualmente cada correspondência), você precisa criar sua própria infraestrutura de pesquisa (e substituta), ou seja, equivalentes de /
, n
/ N
e :s
e faça a asserção adicional para alinhamento de bloco no Vimscript.