如何使用 Neovim Lua API 获取当前缓冲区文件路径?

Smi*_*tel 20 lua neovim

我正在使用 Neovim 0.5,想要编写一个自定义函数来与telescope.nvim.

在执行该函数之前,我需要获取当前缓冲区中加载的文件的路径。在阅读 Neovim Lua API 文档后,我一直无法找到如何执行此操作。

到目前为止,我发现vim.api.nvim_get_current_buf()返回当前缓冲区编号,但是如何获取当前缓冲区的完整文件路径?

Ist*_*115 32

您可以使用 访问当前缓冲区中文件的完整路径vim.api.nvim_buf_get_name(0),其中0buffer id 表示“当前缓冲区”

https://neovim.io/doc/user/api.html#nvim_buf_get_name()


小智 25

您正在寻找的功能是:

vim.fn.expand('%')
Run Code Online (Sandbox Code Playgroud)

%扩展为当前文件名。

请参阅:help expand()参考资料 获取更多通配符,例如%.

  • 这是错误的。它可能会给出相对路径。 (2认同)
  • 对于绝对路径,请使用 `vim.fn.expand("%:p")` 代替。 (2认同)

Jon*_*hoi 10

vim.fn.expand('%:p') 
Run Code Online (Sandbox Code Playgroud)

无论当前路径 (CWD) 如何,都会提供完整路径。如果没有%:p修饰符,它可能只给出相对路径。参见:help filename-modifiers(或%:p