Buffer 从函数将文本插入当前缓冲区
我很难找到这方面的文档。如何在vim函数中从当前缓冲区读取/写入文本Buffer 从函数将文本插入当前缓冲区,buffer,vim,Buffer,Vim,我很难找到这方面的文档。如何在vim函数中从当前缓冲区读取/写入文本 更具体地说,如果我的缓冲区包含单词foo-bar,如何编写一个函数来用cat覆盖单词bar,以便最终我的缓冲区包含foo-cat?,您可以在函数中使用substituteex命令。比如说 function! ReplaceBar() :%s/bar/cat/g endfunction 这定义了一个函数。%字符表示对整个缓冲区进行操作。这将搜索bar,将其替换为cat,并且g标志将替换一行中的每个实例,而不仅仅是第一个实
更具体地说,如果我的缓冲区包含单词
foo-bar
,如何编写一个函数来用cat
覆盖单词bar
,以便最终我的缓冲区包含foo-cat
?,您可以在函数中使用substitute
ex命令。比如说
function! ReplaceBar()
:%s/bar/cat/g
endfunction
这定义了一个函数。%
字符表示对整个缓冲区进行操作。这将搜索bar
,将其替换为cat
,并且g
标志将替换一行中的每个实例,而不仅仅是第一个实例
您可以通过键入:call ReplaceBar()
并按enter键来运行此函数。通常,定义一个执行此类工作的函数,然后定义一个调用该函数的命令比较方便:
command! -nargs=0 Bar call ReplaceBar()
可以通过键入:Bar来运行该命令。要访问行,可以使用getline()
函数setline()
更新缓冲区中的那些行。同样,通过append()
插入新行
后者也可以用:put={variable or expression}
完成,并用:substitute
替换。什么更好取决于特定的用例。前者的好处是,较低级别的函数不会破坏诸如表达式寄存器、上次使用的搜索模式、搜索历史等内容。在neovim中,它们具有nvim\u 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
的使用,所以我自己就不介绍了。:help eval
和:help函数
。