vim脚本:输入和if语句后无法回显换行符

时间:2013-01-31 20:11:50

标签: vim

以下函数不回显结果变量。

fu! Test()
  let input = input(">")
  let result = "error\n"
  if 1
    echo result
  endif
endf

从结果中删除换行符,删除输入或删除if语句将解决此问题。任何想法为什么会这样?

在我的实际函数中,结果变量是通过执行系统命令设置的,我宁愿在回显之前不解析/纠正结果。

2 个答案:

答案 0 :(得分:2)

Vimscript可能很奇怪。当我遇到回声没有显示的时候,通常在回声之前或之后调用'重绘'为我修复它。

答案 1 :(得分:1)

尝试使用\nas 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