Usunąć tekst między tagami HTML w vimie?

164

wiem

di<

usunie sam tag HTML.

Czy istnieje łatwy sposób na usunięcie tekstu między dwoma tagami?

<span>How can I delete this text?</span>

Dzięki!

CMB
źródło

Odpowiedzi:

321

ditusunie tekst między pasującymi tagami XML. ( itoznacza „wewnętrzny blok znaczników”).

Zobacz :h iti :h tag-blocks.

Brian Carper
źródło
30
I oczywiście, citgdy chcesz napisać zaraz potem.
Dębilski
6
A wtyczka Surround ( vim.org/scripts/script.php?script_id=1697 ) jest świetna, gdy chcesz na przykład zmienić otaczający tag (cst) z <p> na <div>.
Kris Jenkins
4
Istnieje również data (blok Usuń znacznik), która zawiera rzeczywiste znaczniki. cit, który jest podobny do dit, ale wchodzi w tryb wstawiania po. cat, który jest podobny do dat, ale wchodzi w tryb wstawiania po. Również di "i di (odpowiednio do usuwania wewnętrznego podwójnego cudzysłowu i usuwania wewnętrznego nawiasu.
aiham
@KrisJenkins czy możesz pokazać pełny przykład, jak to osiągnąć? Mogę to zrobić tylko za pomocą cudzysłowów / nawiasów.
FelikZ
1
Również vat(lub vit), a następnie powtórz at(lub it), aby stopniowo wybierać otaczające znaczniki. (Lub v2atitp.). Następnie, daby usunąć (itp.).
Joe Freeman,
27
cit
ci"

Dwa z najlepszych poleceń vim zwiększających produktywność.

Oszczędzam dużo czasu i wysiłku tylko z tymi dwoma.

chipairon
źródło
3
citjest objęty tym wątkiem, ale dla potomności ci"usunie aż do następnego "znalezionego. świetnie nadaje się do zmiany nazw klas w tagach html, na przykład <span id="really long annoying-id">- z kursorem na początku "naciśnij ci"i upuść do wstawiania nowych znaków między cudzysłowami.
Alex Moore-Niemi
ciwjest również przydatny, ponieważ usuwa bieżące słowo; Używam go częściej niż citi ci"faktycznie.
John Sparwasser
2
@ AlexMoore-Niemi: ci"faktycznie usunie tekst po lewej stronie do następnego cytatu i po prawej do następnego cytatu, a następnie przejdzie do trybu wstawiania. ct"jest właściwie poleceniem "usuń aż do następnego" znalezionego ". Ale tak, zachowuje się tak samo, jeśli kursor znajduje się pod lewym cudzysłowem.
schlimmchen
9

try dt <, gdy kursor znajduje się na pierwszym znaku do usunięcia. W twoim przykładzie „H”.

JD Frias
źródło
Bardzo przydatne również w innych sytuacjach, dzięki! (myślę, że powinno to być „dt <”)
CMB
1
Chociaż jest to technicznie prawdziwe, wymaga przejścia do pierwszego znaku, który chcesz usunąć, zamiast skakania w dowolne miejsce linii. Ale prawda jest prawdą. :-)
lyonsinbeta
4

( kursor na pierwszym znaku do usunięcia ) v / <[wprowadź] d

To rozwiązanie rozpoczyna się od pierwszego znaku, a następnie przechodzi w tryb wizualny („v”). Następnie wyszukuje następny nawias początkowy („/ <”), a następnie naciśnij klawisz Enter, aby zakończyć wyszukiwanie.

W tym momencie twój wizualny wybór zakryje tekst do usunięcia. naciśnij d („d”), aby go usunąć.

Gdybym musiał to zrobić dla kilku tagów, nagrałbym polecenie i połączyłbym je z innymi wyszukiwaniami, aby było powtarzalne. Sekwencja klawiszy może wyglądać następująco:

[ kursor na początku pliku ] qa /> [enter] lv / <[enter] dnq

następnie wciśnij:

20 @ a

aby to zrobić dla 20 tagów

ćwiek
źródło
Kiedyś często używałem poleceń c/<[enter]w moim „życiu Vimów”, ale teraz trochę tego żałuję. Widzisz, większość wtyczek „trybu Vi” dla innych popularnych edytorów / IDE nie obsługuje tego konkretnego typu poleceń. Wspierają one cit, ci", ct<a jednak. Więc ponownie uczę.
pilat
-1

Jeśli chcesz zrobić odwrotność usuwania tekstu między flagami, sugeruję zainstalowanie Vim-Surround i uruchomienie, dstktóre usuwa tag surround

Nick Sarafa
źródło