Редактирование XML-файлов с длинными строками очень медленно в vim. Что я могу сделать, чтобы это исправить? - PullRequest
46 голосов
/ 23 мая 2009

Я редактирую много xml-файлов с помощью vim. Проблема в том, что из-за длинных строк навигация / редактирование в vim чрезвычайно медленная. Есть ли что-то, что я могу сделать (кроме отключения подсветки синтаксиса / плагинов типов файлов и отступов типов файлов), чтобы иметь возможность редактировать эти файлы безо всякой задержки?

Действительно расстраивает то, что тривиальная вещь, такая как подсветка синтаксиса, так плохо обрабатывается vim. Я не помню, чтобы это было проблемой с любым другим редактором. Мне действительно нравится использовать vim, и я надеюсь, что есть способ это исправить.

Ответы [ 13 ]

0 голосов
/ 06 октября 2016

Это вызвано парсингом длинной строки в vim. В конце концов я обнаружил, что, если я удаляю следующее из моего .vimrc, проблема решается:

filetype indent plugin on

Обратите внимание, что это не сработает, если вы введете :filetype indent plugin off при редактировании файла с длинной строкой.

0 голосов
/ 18 июля 2014

Вы можете использовать эту функцию для вашего .vimrc, чтобы переформатировать ваш XML-файл и, надеюсь, сократить длину строки.

function! DoPrettyXML()
  " save the filetype so we can restore it later
  let l:origft = &ft
  set ft=
  " delete the xml header if it exists. This will
  " permit us to surround the document with fake tags
  " without creating invalid xml.
  1s/<?xml .*?>//e
  " insert fake tags around the entire document.
  " This will permit us to pretty-format excerpts of
  " XML that may contain multiple top-level elements.
  0put ='<PrettyXML>'
  $put ='</PrettyXML>'
  silent %!xmllint --format -
  " xmllint will insert an <?xml?> header. it's easy enough to delete
  " if you don't want it.
  " delete the fake tags
  2d
  $d
  " restore the 'normal' indentation, which is one extra level
  " too deep due to the extra tags we wrapped around the document.
  silent %<
  " back to home
  1
  " restore the filetype
  exe "set ft=" . l:origft
endfunction

command! PrettyXML call DoPrettyXML()
0 голосов
/ 08 февраля 2012

Добавить в файл vimrc

nmap <leader>x <Esc>:set filetype=xml<CR>:%s/></>\r</g<CR><ESC>gg=G<Esc>:noh<CR>

при нажатии x автоматически выполняется печать xml-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...