Отформатируйте XML и вернитесь к той же строке в Vim - PullRequest
0 голосов
/ 28 октября 2011

Я хотел бы отобразить F5 , чтобы отформатировать текущий буфер с помощью xmllint --format и вернуться к той же строке. Это легко сделать только форматирование.

autocmd FileType xml map <F5> :w<CR>:silent %!xmllint --format -<CR>

Я немного поигрался с возвращением на одну и ту же строчку некоторое время, и из приведенного ниже фрагмента должно быть очевидно, что я не знаю, что делаю (вообще не работает).

fun! XmlFormat()
  let @`\" = line(".")
  w<CR>
  silent %!xmllint --format -<CR>
  normal! g`\"
endfun
autocmd FileType xml map <F5> :call XmlFormat()<CR>

Нужно ли сохранять текущую строку в буфере или я могу использовать переменную? Как я могу выполнить внешнюю команду внутри функции? И, наконец, как лучше всего перейти к номеру строки, которая хранится в переменной?

1 Ответ

4 голосов
/ 28 октября 2011

Вы можете использовать отображение как:

nnoremap <f5> mmgg=G`m

Используется движение mark и команда фильтра = .Вы можете использовать xmllint, установив параметр equalprg .Я написал статью об этом отображении здесь , если вы хотите более подробное описание.

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