소개

  • lua에서 mode 인자를 받을 때 string, table 모두를 구별하지 않고 처리하기
  • 이는 vim.keymap.set() 함수에서 사용되고 있는 방법이다.
  • 내부에서 typetable이 아니면 {mode}로 태이블로 바꾸고 For문으로 처리한다.

예제

-- 함수 정의
function my_map(mode, short, command, opts)
  local modes = type(mode) == 'table' and mode or { mode }
  for _, m in ipairs(modes) do
    vim.keymap.set(m, short, command, opts)
  end
end

-- 사용
my_map('n','<leader>r', ':source %<CR>', {noremap=true})
my_map({ 'n','v' },'<leader>r', ':source %<CR>', {noremap=true})