vim - 如何在vimscript中替换选定的文本
问题描述
我有一些带有未格式化 xml 代码的文件的特定部分。我需要编写一个 vimscript 函数来选择文本并在其上调用 xmllint。
我知道我可以在命令行上做到这一点:'<,'>!xmllint --format -
但我真的需要在 vimscript 函数中做同样的事情,而且我不知道如何制作类似normal!
call for 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
解决方案
Vim 脚本中的每一行都是一个 Ex 命令。由于您已经有一个有效的 Ex 命令,您不妨使用它。
function! MyFormat()
" ... stuff done here
'<,'>!xmllint --format -
" ... more stuff done here
endfunction
但是,再一次,数据丢失了,所以这可能会起作用……或不,足够……或不,等等。
推荐阅读
- typescript - 返回从数组参数中输入的键定义的选择类型的函数
- tensorflow - 如何为图像分类问题选择卷积神经网络中密集层的单元数?
- html - 你好,我的链接失效了。每次我尝试点击它们时,它都会提示一个错误,除了主页(索引)链接
- javascript - 每当新请求到来时,如何更改元素的高度
- spring-boot - 在更新实体的特定属性时,其他属性获取空值
- python - 找到至少共享一个 x 或 y 点的 (x, y) 对
- php - HTML/PHP implode() 上的菜鸟:传入的参数无效~~
- python - Django 迁移不适用于数据库
- go - 如何提高大量任务和快速工作人员的通道性能
- pytorch - 为什么在复制张量时建议使用 Tensor.clone().detach()?