我正在用lua重写我的vim配置,我有一个很有用的函数--它允许我删除/选择/编辑数字,下面是它的代码和键绑定
" custom text-object for numerical values
function! Numbers()
call search('\d\([^0-9\.]\|$\)', 'cW')
normal v
call search('\(^\|[^0-9\.]\d\)', 'becW')
endfunction
xnoremap in :<C-u>call Numbers()<CR>
onoremap in :normal vin<CR>
如果我按cin,行中的光标将转到一个数字,例如
fotn-size: 16px
如果我按cin,我将编辑号码***16***
我试着在lua中重写同样的东西,这就是我得到的(vimscript在lua中)
function Numbers()
vim.cmd [[
call search('\d\([^0-9\.]\|$\)', 'cW')
normal v
call search('\(^\|[^0-9\.]\d\)', 'becW')
]]
end
vim.keymap.set({ 'x' }, 'in', ':<C-u>lua Numbers()<CR>', { noremap = true })
vim.keymap.set({ 'o' }, 'in', ':normal vin <CR>', { noremap = true })
一开始我认为它工作正常,但经过一点工作,我意识到它没有正确工作。
现在,如果我按cin,这行
fotn-size: 16px
我将编辑数字6和字母p,如下所示:1***6p***x
但在这个例子中。
const my_var = 125;
当我按cin时,我不会编辑整个号码***125***,而只会编辑最后一个数字***5***
请帮助我,我怎样才能让这个函数在lua中正确工作?
1条答案
按热度按时间oknwwptz1#
我猜在Lua和Vimscript之间内部切换时会有一些问题。因为你已经在使用
vim.cmd
了,所以你可以把所有的Vimscript放在里面: