未输入缓冲区的Vim获取/设置缓冲区名称

未输入缓冲区的Vim获取/设置缓冲区名称,vim,Vim,您可以使用'file'命令更改缓冲区的名称,但必须先输入缓冲区。 我如何使用getbufvar/setbufvar或类似的函数来获取/更改缓冲区的名称,只提供一个缓冲区编号,而不输入它?有什么办法吗?我认为没有一种本地方法可以更改缓冲区名称,但恢复当前缓冲区并不是一项复杂的任务: function! Rename(buffer, name) let current = bufnr("%") execute a:buffer . 'bufdo file ' . fnameescape(a:

您可以使用'file'命令更改缓冲区的名称,但必须先输入缓冲区。
我如何使用getbufvar/setbufvar或类似的函数来获取/更改缓冲区的名称,只提供一个缓冲区编号,而不输入它?有什么办法吗?

我认为没有一种本地方法可以更改缓冲区名称,但恢复当前缓冲区并不是一项复杂的任务:

function! Rename(buffer, name)
  let current = bufnr("%")
  execute a:buffer . 'bufdo file ' . fnameescape(a:name)
  execute 'buffer ' . current
endfunction

我知道getbufinfo()在一个名为'name'的变量中提供了缓冲区名称,所以我尝试了如下方法:setbufvar(buffer_number,'name','new_name_value'),但它只创建了一个b:name变量。是否有一种特定的方法来处理缓冲区名称?据我所知,纯Vimscript不可能。使用python接口可能会工作。您可能应该以某种方式转义
a:name
。@Maëlan注意到了。谢谢