%
Operator Vima przeskakuje do pasujących nawiasów, końcówek komentarzy i kilku innych rzeczy. Nie pasuje jednak do tagów XML (ani żadnych innych tagów, zgodnie z moją najlepszą wiedzą).
Jaki jest najlepszy sposób, aby przeskoczyć do pasującego znacznika XML za pomocą Vima?
Uwaga: To, co naprawdę chcę zrobić, to zduplikować sekcję w pliku XML bez ręcznego wyszukiwania pasującego tagu.
Odpowiedzi:
Istnieje wtyczka vim o nazwie matchit.vim. Możesz go znaleźć tutaj: http://www.vim.org/scripts/script.php?script_id=39 . Został stworzony prawie dokładnie w celu, który opisujesz.
Zainstaluj to, umieść kursor na treści tagu (nie <>, w przeciwnym razie będzie pasował do tych) i naciśnij%, aby przejść do innego tagu. Zobacz stronę skryptu, aby dowiedzieć się, do czego jeszcze pasuje.
źródło
runtime macros/matchit.vim
powinien ją włączyć i pozwolić%
na dopasowanie znaczników XML.packadd! matchit
do,.vimrc
aby ją włączyć. Czytaj więcej:help matchit
Możesz to zrobić bez dodatkowych wtyczek:
Kolejną przydatną operacją jest: vit- wybierze zawartość tagu (wewnętrzną).
Aktualizacja (dzięki @elrado) Przykład: vitoumożliwia wybranie wewnętrznej zawartości tagu i ustawienie kursora na początku zaznaczonego tekstu.
Źródła: /superuser/182355/how-can-i-select-an-html-tags-content-in-vim
Dokumentacja Vima (dzięki @Geek za zwrócenie uwagi):
dostaniesz:
źródło
cit
zmienia i nterior znacznika - tylko zawartość.cat
zmienia się LL tag - zawartość i do LSO sam znacznik, zarówno podczas otwierania i zamykania.OP stwierdził, że naprawdę chciał skopiować sekcję XML bez konieczności znajdowania pasującego znacznika. Można to łatwo zrobić w normalnym trybie za pomocą
yat<motion>p
, który szarpie tekst do środka i dołącza pasujące tagi, a następnie wkleja go.yit<motion>p
jest prawie taki sam, ale nie zawiera zewnętrznych znaczników.„Y” w łańcuchu jest oczywiście poleceniem „yank” w trybie normalnym. (
:help y
)a
lubi
może być używany do wybierania obiektów po operatorze, takim jaky
lub wewnątrz selekcji wizualnej. Symbol poa
lubi
określa, co należy wybrać. Zastosowanyt
tutaj typ obiektu wskazuje na znacznik SGML. (:help object-select
).Oczywiście
<motion>
oznacza to po prostu przeniesienie się w wybrane miejsce ip
umieszczenie wyszarpanego tekstu w tym miejscu.źródło
i
oznacza „wewnątrz” (lub „wewnętrzny”).a
oznacza „a”?a
oznacza „wszystko”.a
oznacza około . To ma dla mnie więcej sensu.Po prostu moja sztuczka polegająca na używaniu "yank", "object-select" (zaznaczenie tagów) i "skocz do ostatnio wyszarpanego tekstu".
aby przejść w prawo przed zamykającym tagiem
i
aby przejść w prawo po otwarciu tagu
Uwaga: spowoduje to zmianę zawartości domyślnego rejestru
źródło