vim“put”粘贴在同一行

时间:2014-04-25 12:44:27

标签: vim

在我的函数中,我想在光标位置粘贴一些生成的文本(在插入模式下)。我正在使用put来执行此操作,但是将其粘贴到新行上。有没有办法让它贴在同一条线上?如果不是什么是正确的命令?

2 个答案:

答案 0 :(得分:4)

您无法使用:put,它将始终使用新行。您有以下选择:

  1. 发出普通模式命令以插入文本::execute "normal! amy text\<Esc>"。这需要:execute才能正确地退出插入模式。
  2. 将您的文字分配到注册::let @@ = 'my text'然后,使用:normal! p(或P,可选择使用前置动作来定位光标)。或者,使用表达式寄存器:execute "normal! \"='my text'\<CR>"
  3. 从插入模式,您还可以使用<C-r>{register}<C-r>={expr}<CR>
  4. 使用:setline(),在getline()的帮助下将新内容拼接到现有(strpart())行。
  5. 第一个更容易,通常是你想要的。最后一个是使用较低级别的API,因此使用起来更多,但它不会触发任何消息,clobbers注册内容,为撤消创建单独的更改等。

答案 1 :(得分:0)

要插入的文本存储在哪里?

修改

因此,根据您的评论,文本存储在变量中。假设变量为g:text,则在插入模式下,您按ctrl-r,然后按=,然后按g:text

另见help i_CTRL-R_=


我在这里留下旧答案。也许其他人来到accros并发现它很有用:

假设它位于一个寄存器中(根据你的强迫:put),你按CTRL-R然后注册名称(例如a) - (处于插入模式时。)