#vim
#vim
Вопрос:
У меня есть некоторые определенные части файлов с неформатированным XML-кодом. Мне нужно написать функцию vimscript, которая выделяет текст и вызывает xmllint над ним.
Я знаю, что могу сделать это в командной строке :'<,'>!xmllint --format -
Но мне действительно нужно сделать то же самое в функции vimscript, и я не знаю, как сделать что-то вроде normal!
вызова visual.
Я пробовал это, но это работает некорректно :
function! MyFormat()
... stuff done here
let startl = line("'<")
let endl = line("'>")
let line = getline(startl, endl)
let r = system('echo "' . join(line, "") . '" | xmllint --format -')
call setline('.', r)
endfunction
Комментарии:
1. Вам нужно или вы хотите ? Команда, которую вы дали, кажется, отлично справляется с задачей, так какую проблему вы пытаетесь решить и как вы планируете использовать эту функцию?
2. И вашему вопросу не хватает уровня детализации, необходимого для правильного ответа на него, самое главное, что вы пробовали .
3. Я обновил свой вопрос. Я думаю, может быть, у меня может возникнуть проблема с кавычками в строке injecte в системной функции
Ответ №1:
Каждая строка в скрипте Vim является командой Ex. Поскольку у вас уже есть рабочая команда Ex, вы также можете использовать ее.
function! MyFormat()
" ... stuff done here
'<,'>!xmllint --format -
" ... more stuff done here
endfunction
Но, опять же, данные отсутствуют, поэтому это может сработать … или нет, будет достаточно… или нет и т.д.