É possível um objeto de texto inteligente?

Sep 22 2020

É possível criar um objeto de texto inteligente para i), i], i}, i>, i'e i"?

O objeto de texto representaria o primeiro objeto mais interno que ele pode encontrar. Por exemplo, com o cursor no sinal de mais viv, selecionaria a + babaixo:

{ [ (a + b) ] }

Respostas

2 filbranden Sep 22 2020 at 08:16

O targets.vim plug-in implementa algo muito semelhante ao que você descreveu, a principal diferença é que ele tem dois de texto separado objetos para "qualquer bloco" ( ib, etc.), que trabalha para (), []e {}e outra para "qualquer citação "( iq, etc.) que funciona com aspas simples, duplas ou invertidas.

Consulte a seção README sobre objetos de texto múltiplo para obter mais detalhes.

A principal razão para objetos separados para blocos e aspas é que os blocos normalmente se aninham, enquanto as aspas não.

Em qualquer caso, a própria existência desse plug-in que implementa um objeto de texto que corresponderá a um dos vários delimitadores com base no contexto deve demonstrar que é definitivamente possível implementar um objeto de texto inteligente. Se você realmente deseja um que corresponda a blocos e aspas, poderá aproveitar as idéias deste plug-in para implementar seu operador.