vim脚本exec粘贴未格式化的文本

时间:2014-04-27 15:37:21

标签: vim

老实说,标题很糟糕。请考虑以下5行:

function Example()
    let @@ =  "-_-"
    execute  "normal! ]P"
    call cursor(line('.'), col('.')-1) 
endfunction

调用此函数时,我希望得到-_-作为输出,光标应该向左移动,这意味着它在第三个字符处,所以如果我按一个键,就像我一样我会得到-_i-

在现实中发生的事情是完全不同的(在某种程度上有趣) 第一次调用时的输出为- _-,然后是_--

我假设"光标"移动光标下单词的位置。 基本上:为什么会这样?我怎样才能达到预期的效果?

非常重要的编辑: 显然问题不在插件中。当我去的时候:

call Example()

它完美无瑕。事情是它应该由一个键触发。我目前的约束如下:

inoremap ' <C-O>: call Example()<CR> 

所以现在我认为映射中的某些内容已经被破坏了......

1 个答案:

答案 0 :(得分:1)

  • 我无法重现你的奇怪行为。正如预期的那样,我在重复调用时得到----_-_-_-_-。我再次怀疑有插件在工作。试试vim -N -u NONE。虽然这是一个粘贴,但是可能会影响这个功能。您可以尝试通过:noautocmd call Example()进行解决,但我宁愿尝试找出这种令人不安的陌生感的根本原因。
  • &#34; -_-&#34;不是一个完整的行,所以]P(使用自适应缩进的粘贴)在这里没有效果。您也可以使用P
  • 要将光标向左移动,请使用:normal! hcol('.') again的减法仅适用于单字节ASCII字符。