AM
local function setopt(mode, opt, value)
vim[mode][opt] = value
if mode ~= 'o' then
vim.o[opt] = value
end
end
Size: a a a
AM
local function setopt(mode, opt, value)
vim[mode][opt] = value
if mode ~= 'o' then
vim.o[opt] = value
end
end
AM
EG
o
), локальной для окна (wo
) или локальной для буфера (bo
)AM
SB
pl
EG
gD
на :h vim.lsp.buf.definitionV
vim.lsp.buf.definition()
:pl
gD
на :h vim.lsp.buf.definitionAM
local function setopt(mode, opt, value)
vim[mode][opt] = value
if mode ~= 'o' then
vim.o[opt] = value
end
end
setopt('o', 'number', true)
и ничегоEG
setopt('o', 'number', true)
и ничего'number'
local to windowV
setopt('o', 'number', true)
и ничегоEG
setopt('wo', 'number', true)
AM
'number'
local to windowGK
getpos
— функции, которая возвращает позицию в тексте: номер строки и столбца (см. :he getpos). Если попытаться с её помощью определить диапазон выделения visual selection, то каждый unicode-символ считается в два столбца в ширину.function M:visual_selection_range()Вызов этой функции печатает начальную и конечную колонку для выделенной строки.
local _, csrow, cscol, _ = unpack(vim.fn.getpos("'<"))
local _, cerow, cecol, _ = unpack(vim.fn.getpos("'>"))
if csrow < cerow or (csrow == cerow and cscol <= cecol) then
print(cscol - 1, cecol)
return csrow - 1, cscol - 1, cerow - 1, cecol
else
print(cecol - 1, cscol)
return cerow - 1, cecol - 1, csrow - 1, cscol
end
end
test test
она выдаёт 0 9
, для тест тест
— 0 16
.getpos
?V
getpos
— функции, которая возвращает позицию в тексте: номер строки и столбца (см. :he getpos). Если попытаться с её помощью определить диапазон выделения visual selection, то каждый unicode-символ считается в два столбца в ширину.function M:visual_selection_range()Вызов этой функции печатает начальную и конечную колонку для выделенной строки.
local _, csrow, cscol, _ = unpack(vim.fn.getpos("'<"))
local _, cerow, cecol, _ = unpack(vim.fn.getpos("'>"))
if csrow < cerow or (csrow == cerow and cscol <= cecol) then
print(cscol - 1, cecol)
return csrow - 1, cscol - 1, cerow - 1, cecol
else
print(cecol - 1, cscol)
return cerow - 1, cecol - 1, csrow - 1, cscol
end
end
test test
она выдаёт 0 9
, для тест тест
— 0 16
.getpos
?GK
nvim_buf_get_lines
, пройтись по нему циклом и пересчитать настоящий размер выделения, вычитая оффсет для unicode-символов. Но мне кажется, должно быть решение проще.pl
dd$
AS
dd$
dG
pl