在我的函数中,我想在光标位置粘贴一些生成的文本(在插入模式下)。我正在使用put
来执行此操作,但是将其粘贴到新行上。有没有办法让它贴在同一条线上?如果不是什么是正确的命令?
答案 0 :(得分:4)
您无法使用:put
,它将始终使用新行。您有以下选择:
:execute "normal! amy text\<Esc>"
。这需要:execute
才能正确地退出插入模式。:let @@ = 'my text'
然后,使用:normal! p
(或P
,可选择使用前置动作来定位光标)。或者,使用表达式寄存器::execute "normal! \"='my text'\<CR>"
<C-r>{register}
或<C-r>={expr}<CR>
。:setline()
,在getline()
的帮助下将新内容拼接到现有(strpart()
)行。第一个更容易,通常是你想要的。最后一个是使用较低级别的API,因此使用起来更多,但它不会触发任何消息,clobbers注册内容,为撤消创建单独的更改等。
答案 1 :(得分:0)
要插入的文本存储在哪里?
修改强>
因此,根据您的评论,文本存储在变量中。假设变量为g:text
,则在插入模式下,您按ctrl-r
,然后按=
,然后按g:text
。
另见help i_CTRL-R_=
我在这里留下旧答案。也许其他人来到accros并发现它很有用:
假设它位于一个寄存器中(根据你的强迫:put
),你按CTRL-R
然后注册名称(例如a
) - (处于插入模式时。)