Posicionar o cursor no final da variável ou membro da matriz

0

Considere a maneira de representar variáveis e membros da matriz no PHP:

$something
$something['member']

Como posso garantir que o cursor esteja no último caractere? Simplesmente usar E não ajudará, pois a variável pode ser seguida por outros caracteres, assim:

echo "I saw (".$something.") happen.";
echo "I saw (".$something['member'].") happen.";

Eu preferiria uma resposta que deixasse o cursor em qualquer lugar no texto relevante ( $something ou $something['member'] ), mas ficaria satisfeito com uma resposta que funcione pelo menos nos caracteres something .

Observe que meu objetivo é usar a resposta dessa pergunta para preceder o seguinte mapeamento:

nnoremap <leader>fv a}<Esc>ldf"F$i{<Esc>dF"

Esse mapeamento destina-se a transformar isso:

echo "I saw (".$something.") happen.";
echo "I saw (".$something['member'].") happen.";

echo "I saw (" . $something . ") happen.";
echo "I saw (" . $something['member'] . ") happen.";

Para isso:

echo "I saw ({$something}) happen.";
echo "I saw ({$something['member']}) happen.";
    
por dotancohen 25.12.2013 / 17:25

1 resposta

0

Eu abordaria isso de forma diferente. Enquanto você realmente quer "uma variável" o que você está vagamente perguntando o que deve estar perto o suficiente é "tudo dentro das aspas, além das próprias citações". Para isso, você pode usar o a" text-object ( :help text-objects ). Coloque o cursor em qualquer lugar no texto relevante, digite va" para selecionar visualmente a área desejada ou pressione "ada" para excluir o texto relevante e colocá-lo no registro 'a', ou faça o que quiser com o texto objeto. Deve ser bastante simples (talvez usando substitute() , talvez usando um método diferente) para massagear o texto para ser o que você quer.

Este também é um caso que eu normalmente usaria uma macro gravada, para dizer a verdade.

Se a" selecionar muito, você pode tentar o patch para adicionar objetos de texto arbitrários, para que você possa usar im. (caractere de correspondência interna) para obter tudo de '.' para o outro '.', ou similar. Obtenha o patch aqui: link (observe que há vários patches, você provavelmente deseja o último) .

    
por 25.12.2013 / 19:01

Tags