老实说,标题很糟糕。请考虑以下5行:
function Example()
let @@ = "-_-"
execute "normal! ]P"
call cursor(line('.'), col('.')-1)
endfunction
调用此函数时,我希望得到-_-
作为输出,光标应该向左移动,这意味着它在第三个字符处,所以如果我按一个键,就像我一样我会得到-_i-
在现实中发生的事情是完全不同的(在某种程度上有趣)
第一次调用时的输出为- _-
,然后是_--
我假设"光标"移动光标下单词的位置。 基本上:为什么会这样?我怎样才能达到预期的效果?
非常重要的编辑: 显然问题不在插件中。当我去的时候:
call Example()
它完美无瑕。事情是它应该由一个键触发。我目前的约束如下:
inoremap ' <C-O>: call Example()<CR>
所以现在我认为映射中的某些内容已经被破坏了......
答案 0 :(得分:1)
----_-_-_-_-
。我再次怀疑有插件在工作。试试vim -N -u NONE
。虽然这是一个粘贴,但是可能会影响这个功能。您可以尝试通过:noautocmd call Example()
进行解决,但我宁愿尝试找出这种令人不安的陌生感的根本原因。]P
(使用自适应缩进的粘贴)在这里没有效果。您也可以使用P
。:normal! h
。 col('.')
again的减法仅适用于单字节ASCII字符。