Я хотел бы отобразить 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>
Нужно ли сохранять текущую строку в буфере или я могу использовать переменную? Как я могу выполнить внешнюю команду внутри функции? И, наконец, как лучше всего перейти к номеру строки, которая хранится в переменной?