从函数中将文本插入当前缓冲区

时间:2014-06-11 16:44:02

标签: buffer vim

我很难找到相关的文档。如何从vim函数中的当前缓冲区读取/写入文本?

更具体地说,如果我的缓冲区包含单词foo bar,那么如何编写一个函数来用bar覆盖单词cat,以便最后我的缓冲区包含foo cat

3 个答案:

答案 0 :(得分:1)

您可以在函数内使用substitute ex命令。例如

function! ReplaceBar() 
  :%s/bar/cat/g
endfunction

这定义了一个函数。 %字符表示对整个缓冲区进行操作。这会搜索bar,将其替换为catg标记会替换一行中的每个实例,而不仅仅是第一个。

您可以通过输入:call ReplaceBar()并按Enter键来运行此功能。定义执行此类工作的函数通常很方便,然后定义一个调用它的命令:

command! -nargs=0 Bar call ReplaceBar()

可以通过键入:Bar来运行该命令。

答案 1 :(得分:1)

要访问行,您可以使用getline()功能。 setline()更新缓冲区中的那些行。同样,通过append()插入新行。

后者也可以使用:put ={variable or expression}完成,并替换为:substitute。什么更好取决于具体的用例。前者,低级函数的好处是它们不会破坏表达式寄存器,最后使用的搜索模式,搜索历史等内容。

答案 2 :(得分:0)

在neovim中,他们有nvim_put。一些例子:

:call nvim_put(['cat'], 'c', v:false, v:true) ; insert 'cat' right where the cursor is, as if you typed `:normal! icat`
:call nvim_put(['cat'], 'l', v:true, v:true) ; insert 'cat' on the next line

其他人已经很好地介绍了:put的用法,因此我不会自己介绍它。