Há muitas vezes no meu dia-a-dia de trabalho que preciso operar em uma função específica, como destacar ou procurar uma variável, mas nunca consegui limitar o escopo das edições / pesquisa.
Existe uma maneira no vim de dizer seletivamente, encontrar todas as referências $color
dentro desses conjuntos de chaves, ou desta dobra etc. Se possível, seria ideal que isso fosse relativamente genérico, para que pudesse ser aplicado à edição / substituição de texto.
Como um exemplo:
$color = "#fff";
function PickColor () {
$color = "#bbb";
$newColors = ["#000", "#fbf", $color];
foreach ($newColors as $c) {
if ($c == "#fff") {
break;
}
}
}
$differentColor = $color;
Este código é um exemplo relativamente ruim, no entanto, se eu precisasse substituir todas as instâncias de $ color, como alguém faria isso no contexto da função PickColor. Como outro exemplo, usando #
e *
Você pode ir para a próxima instância desse objeto de texto, como você limitaria o escopo da pesquisa a apenas essa função (basicamente envolvendo a pesquisa) em oposição ao arquivo inteiro, que poderia abranger milhares de linhas e perder seu lugar ou substituindo incorretamente algo em outra função que você não deveria ter?
fonte
Se você está confortável em seguir a rota do plug-in, há o NrrwRgn .
Você seleciona visualmente um bloco e executa o
:NR
comando, que abre um novo buffer (em uma divisão) com o texto selecionado. Você pode fazer modificações nesse buffer e, quando o salvar, ele também será salvo no arquivo original.Na minha opinião, este plug-in resolve o problema muito bem, permitindo que você se concentre nas operações que deseja realizar sem repensar em como aplicá-las a um intervalo específico.
fonte
Você seleciona o bloco em que está interessado no modo de linha visual (shift + v) e, em seguida, digita
:
e seu comando que agora será aplicado ao bloco.Portanto, se você deseja substituir na seleção, pode executar
:s/string/replacement_string
fonte
VaB:s/\$color/replaced/g
Use o objeto de texto de chaves '}' e selecione dentro das chaves com 'i}'
na linha com a chave de abertura da função:
primeiro, vá para o final da linha (que estará dentro ou dentro da chave de abertura) e depois entre na seleção visual, depois selecione usando o objeto de texto da chave. 'i}' está dentro de chaves 'a}' está entre chaves.
Para idiomas que não possuem chaves, o Vim Text Object: O Definitive Guide sugere alguns plugins:
ai
inclui o nível de indentação atual e a linha acima;ii
inclui o nível de recuo atual, excluindo a linha acima.ar
eir
, com base na presença daend
palavra - chave.fonte