W moim codziennym życiu zawodowym wiele razy muszę obsługiwać określoną funkcję, np. Podświetlanie lub wyszukiwanie zmiennej, ale nigdy nie udało mi się ograniczyć zakresu edycji / wyszukiwania.
Czy istnieje vim sposób na wybiórcze powiedzenie, znajdowanie wszystkich odniesień do $color
tych zestawów nawiasów klamrowych lub tego zagięcia itp. Jeśli to możliwe, byłoby idealnie, gdyby było to względnie ogólne, aby można je było zastosować do edycji / zamiany tekstu.
Jako przykład:
$color = "#fff";
function PickColor () {
$color = "#bbb";
$newColors = ["#000", "#fbf", $color];
foreach ($newColors as $c) {
if ($c == "#fff") {
break;
}
}
}
$differentColor = $color;
Ten kod jest jednak stosunkowo złym przykładem, jeśli jednak musiałbym zastąpić wszystkie wystąpienia $ color, jak zrobiłby to w kontekście funkcji PickColor. Jako kolejny przykład, używając #
i *
Możesz przejść do następnej instancji tego obiektu tekstowego, w jaki sposób ograniczysz zakres wyszukiwania tylko do tej funkcji (w zasadzie zawijanie wyszukiwania) w przeciwieństwie do całego pliku, który może obejmować tysiące linii i tracić twoje miejsce lub niepoprawnie zastępując coś w innej funkcji, której nie powinieneś mieć?
źródło
Jeśli nie masz ochoty wybierać trasy wtyczki, jest NrrwRgn .
Wybierz wizualnie blok, a następnie uruchom
:NR
polecenie, które otwiera nowy bufor (podzielony) z zaznaczonym tekstem. Możesz modyfikować ten bufor, a kiedy go zapiszesz, zostanie on również zapisany z powrotem w oryginalnym pliku.Moim zdaniem ta wtyczka bardzo dobrze rozwiązuje problem, pozwalając Ci skupić się na operacjach, które chcesz wykonać, bez ponownego zastanawiania się, jak zastosować je do określonego zakresu.
źródło
Wybierz blok, który Cię interesuje, w trybie linii wizualnej (Shift + V), a następnie wpisz
:
polecenie i polecenie, które będzie miało zastosowanie do bloku.Więc jeśli chcesz zastąpić zaznaczenie, możesz uruchomić
:s/string/replacement_string
źródło
VaB:s/\$color/replaced/g
Użyj obiektu tekstowego nawiasów klamrowych „}” i wybierz wewnątrz nawiasów klamrowych za pomocą „i}”
na linii z otwierającym nawiasami klamrowymi funkcji:
najpierw przejdź do końca linii (która będzie na lub wewnątrz nawiasu otwierającego), a następnie przejdź do wizualnego zaznaczenia, a następnie wybierz za pomocą obiektu tekstowego nawiasów klamrowych. „i}” jest w nawiasach klamrowych „a}” jest w nawiasach klamrowych.
W przypadku języków bez nawiasów klamrowych Vim Text Object: The Definitive Guide sugeruje niektóre wtyczki:
ai
obejmuje bieżący poziom wcięcia i wiersz powyżej;ii
obejmuje bieżący poziom wcięcia z wyłączeniem powyższej linii.ar
iir
, w zależności od obecnościend
słowa kluczowego.źródło