我很难找到相关的文档。如何从vim函数中的当前缓冲区读取/写入文本?
更具体地说,如果我的缓冲区包含单词foo bar
,那么如何编写一个函数来用bar
覆盖单词cat
,以便最后我的缓冲区包含foo cat
?
答案 0 :(得分:1)
您可以在函数内使用substitute
ex命令。例如
function! ReplaceBar()
:%s/bar/cat/g
endfunction
这定义了一个函数。 %
字符表示对整个缓冲区进行操作。这会搜索bar
,将其替换为cat
,g
标记会替换一行中的每个实例,而不仅仅是第一个。
您可以通过输入: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
的用法,因此我不会自己介绍它。