将文本粘贴到新缓冲区

时间:2019-09-23 02:01:43

标签: vim neovim

我发现了与相似类似的问题,但并没有真正解决我要学习的内容。我想拉动或删除文本,然后将其附加到新的(或现有的)缓冲区而没有 更改缓冲区。我想基本上将粘贴的文本重定向到单独缓冲区的末尾,而不保留原始缓冲区的目的地,这与您对shell文件重定向可能执行的操作类似。我很难相信vim / nvim不能做到这一点,但是到目前为止还没有找到合适的答案。

:'a, 'bw ~/path/to/file.txt

这将在两个标记'a和'b之间复制文本,并将其写入文件系统中的文件中。很好,但是无法将文件附加到...,并且无法在缓冲区中打开文件。

1 个答案:

答案 0 :(得分:1)

:w >> {file}变体,可让您附加到文件(:help :write_a)。

就像@Matt所说的那样,通常的方法将涉及切换缓冲区。 Vimscript的用法与用户交互使用的(主要是Ex-)命令紧密相关。但是,在最新的Vim版本中,您可以选择调用低级appendbufline()函数。这将绕过任何autocmds,缓冲区设置等。根据您的用例,这是否可取。

如果目标缓冲区已经可见或作为副作用可以保持可见,则临时切换到它很容易(主要涉及:sbuffer)。我的ingo-library plugin有一个函数ingo#buffer#visible#Execute(),它也可以透明地处理隐藏的缓冲区。