如何使用neovim Lua API存储当前缓冲区文件名和光标位置以注册



在vim中,我可以使用getcurpos()expand('%:t'),但这在lua中是如何工作的?理想情况下,解决方案应该只使用neovim api。

没有neovim api:

function Fcolumn_noplenary()
local fname = vim.fn.expand('%:t')
local line_col_pair = vim.api.nvim_win_get_cursor(0) -- row is 1, column is 0 indexed
local fnamecol = fname .. ':' .. tostring(line_col_pair[1]) .. ':' .. tostring(line_col_pair[2])
vim.fn.setreg('+', fnamecol) -- register + has filename:row:column
end

全体会议:

function Fcolumn_plenary()
local Path = require "plenary.path"
local path = Path.path
local fileAbs = vim.api.nvim_buf_get_name(0)
local p = Path:new fileAbs
local fname = p.filename 
local line_col_pair = vim.api.nvim_win_get_cursor(0) -- row is 1, column is 0 indexed
local fnamecol = fname .. ':' .. tostring(line_col_pair[1]) .. ':' .. tostring(line_col_pair[2])
vim.fn.setreg('+', fnamecol) -- register + has filename:row:column
end

从neovim 0.8开始,有vim.fs,它只剩下用vimscript(vim.fn(设置寄存器,没有外部依赖项:

function Fcolumn():
local fileAbs = vim.api.nvim_buf_get_name(0)
local fname = vim.fs.basename(fileAbs)
local line_col_pair = vim.api.nvim_win_get_cursor(0) -- row is 1, column is 0 indexed
local fnamecol = fname .. ':' .. tostring(line_col_pair[1]) .. ':' .. tostring(line_col_pair[2])
vim.fn.setreg('+', fnamecol) -- register + has filename:row:column
end

最新更新