Uczę się Vima, ale myślałem, że to proste zadanie, ale nie mogę go uruchomić. Mam przeglądarkę SO, ale rozwiązania nie działają dla mnie.
Próbuję poprawnie wciąć plik (xml). Polecenie, którego używam, to:
gg=G
lub ggVG = (sam sobie to wymyśliłem, prawdopodobnie robi coś innego;))
Mój plik .vimrc to:
syntax on
filetype plugin indent on
set nu
:set ft? indentexpr?
Czy to czytafiletype=xml indentexpr=XmlIndentGet(v:lnum,1)
?!m'ggVG=''
, co po prostu zapisuje linię, na której się znajdujesz i wraca do niej po ponownym nacięciu pliku.Odpowiedzi:
Podoba mi się odpowiedź Berei. Jednak myślę, że poniższe elementy są nieco bardziej elastyczne, ponieważ nie musisz zmieniać
vimrc
pliku. Dodatkowo łatwiej jest sformatować wybrane fragmenty pliku XML (coś, co często robię).Najpierw zaznacz XML, który chcesz sformatować.
Następnie w trybie normalnym wpisz
! xmllint --format -
Twój wiersz poleceń na dole będzie wyglądał następująco:
:'<,'>!xmllint --format -
Następnie naciśnij Enter.
Wyjaśnienie techniczne
Wybrany tekst jest wysyłany do
xmllint
polecenia, następnie--format
„ed”, a wynikixmllint
są umieszczane na wybranym tekście w programie vim. Na-
końcu polecenia służy do odbioru standardowego wejścia - w tym przypadku jest to zaznaczony tekst, do którego przesyła vimxmllint
.źródło
:%!xmllint --format -
,%
oznacza cały zakres tego pliku xml.apt-cache search
, nieapt-get
, podczas wyszukiwania pakietów i zawartości pakietów.libxml2-utils
zawiera brakujące narzędzie.Użyj zewnętrznego programu, aby wciąć
xml
pliki. W tym przypadku wybrałemxmllint
, więc ustaw polecenie naequalprg
opcję:Teraz możesz wykonać
aby umożliwić
xmllint
formatowaniexml
plików.Aby uzyskać to za każdym razem, gdy używasz wigor, użyj,
autocommand
aby go ustawić.autocommand
z komentarza poniżejźródło
au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
. Źródło - ku1ik.com/2011/09/08/…libxml2-utils
pakiet aby dostać xmllintProstym rozwiązaniem, które mi się podoba, które nie wymaga żadnego narzędzia innej firmy, jest wstawienie nowej linii przed każdym otwierającym tagiem „<...>”. Następnie możesz użyć standardowego automatycznego wcięcia w Vimie. W skrócie:
%s/</\r</g
gg=G
do automatycznego wcięciaźródło
%s/></>\r</g
, aby każdy element tekstowy pozostał w tej samej linii.%s/> *</>\r</g
Jest to łatwe do osiągnięcia po prawidłowym skonfigurowaniu ~ / .vimrc.
Ustaw następujące opcje w ~ / .vimrc:
Pozwala to na przeniesienie kursora na górę pliku i wcięcie do końca: gg = G
Możesz także wybrać żądany tekst w trybie wizualnym i nacisnąć =, aby wciąć go.
źródło
.vimrc
zamiast.bashrc
.Krótka odpowiedź: włącz matchit.vim . Możesz dodać
packadd matchit
do swojego.vimrc
lub użyć vim-sensible , co domyślnie włącza go.Długa odpowiedź: próbowałem wielu strategii automatycznego wcięcia XML w Vimie, w tym podejście xmllint omówione na wiki Vima . Problem
xmllint
(i to samo podejście z innymi zewnętrznymi narzędziami CLI, takimi jakxmlformat
itidy
też) polega na tym, że wszystkie one nalegają na wyciskanie pustych nowych linii. Jeśli wszystko, czego chcesz, to wcięcie pliku XML bez usuwania pustych wierszy, komentarzy i / lub innego celowego formatowania,xmllint
nie jest to najlepszy wybór.Okazuje się, że polecenie equals (=) Vima obsługuje już XML, o ile włączony jest skrypt matchit.vim . Jednym z bardzo łatwych sposobów na włączenie tej funkcji jest przyjęcie wrażliwości na vim tpope . Innym jest dodanie
packadd matchit
do twojego.vimrc
. Wtedy formatowanie XML „po prostu zadziała” po wyjęciu z pudełka.źródło
matchit.vim
jest to rzeczywiste rozwiązanie. Możesz go włączyć w swoimvimrc
, dodając następującą linię:packadd matchit
W VIM automatycznie wcinam cały plik (używając twardych zakładek) za pomocą następującego polecenia:
To
^I
pojedynczy znak, który generujesz za pomocą: CTRL+ v, CTRL+iźródło
Miałem ten sam problem. Okazało się, że linia
w moim
.vimrc
spowodował problem. Tylko upewnij się, że go nie masz.źródło
Odpowiedź Jessego Hogana jest dobra, ale ja wolę prostszą odpowiedź:
Kiedy jesteś w vimie i twój plik XML jest otwarty, w normalnym trybie napisz to:
następnie naciśnij Enter. Cały twój plik XML zostanie sformatowany.
pamiętaj, że powinieneś wcześniej zainstalować xmllint .
źródło
dla tych, które są jednym z użyciem
coc.nvim
wtyczki, można zainstalowaćcoc-xml
przez:CocInstall coc-xml
, a następnie mapowanie klucza formatu w pliku konfiguracyjnym:nmap <silent> fm <Plug>(coc-format)
. Od teraz możesz bardzo łatwo formatować nie tylko plik xml, ale także inne plikiźródło