以下函数不回显结果变量。
fu! Test()
let input = input(">")
let result = "error\n"
if 1
echo result
endif
endf
从结果中删除换行符,删除输入或删除if语句将解决此问题。任何想法为什么会这样?
在我的实际函数中,结果变量是通过执行系统命令设置的,我宁愿在回显之前不解析/纠正结果。
答案 0 :(得分:2)
Vimscript可能很奇怪。当我遇到回声没有显示的时候,通常在回声之前或之后调用'重绘'为我修复它。
答案 1 :(得分:1)
尝试使用\n
,as mentioned at “How to replace a character for a newline in Vim?”替换\r
换行符:
fu! Test()
let input = input(">")
let result = "error\r"
if 1
echo result
endif
endf
请注意,在运行上述函数时,我不会在result
被回显之前清除输入,因此如果输入>foo
输入,result
将直接回显,我得到>fooerror
。在回应result
之前回应换行符可以解决这个问题:
fu! Test()
let input = input(">")
let result = "error\r"
if 1
echo "\r"
echo result
endif
endf