단일 기능으로 Vimscript 키맵을 Lua에 매핑
소개
vimscript에서 lua까지 모든 키맵을 작성하는 것이 지루합니까? 아래 기능을 사용하여 Neovim에서 동등한 루아 맵에 대한 모든 키맵을 생성하십시오.
vimscript 키맵을 가져 와서 lua에 넣으십시오. lua를 작성하지 마십시오. ;)
루아 함수
아래에 제공된 스니펫은 문자열 테이블(문자열 목록)을 가져오는 lua 함수이며 문자열은 키맵이 됩니다. 그런 다음 함수는 lua 함수를 사용하여 이러한 키맵을 매핑합니다. 모든 키맵을 직접 입력할 필요가 없습니다. 또한 vimscript에서 Neovim의 루아 런타임으로 기존 키맵을 매핑하는 데 필요한 루아와 동등한 함수 호출을 인쇄할 수 있습니다. 모든 옵션을 처리하지는 않지만 키맵에 기본값을 전달했습니다.
function key_mapper(keymaps)
for _, keymap in ipairs(keymaps) do
local mode = keymap:sub(1,1)
local delimiter = " "
local lhs = ''
local rhs_parts = {}
local m = 0
local options = {noremap = true}
for matches in (keymap..delimiter):gmatch("(.-)"..delimiter) do
if m == 1 then
lhs = matches
end
if m >= 2 then
table.insert(rhs_parts, matches)
end
m = m + 1
end
rhs = ''
for _, p in ipairs(rhs_parts) do
rhs = rhs .. " " .. p
end
--print("vim.keymap.set(".."\'"..mode.."\'"..", ".."\'"..lhs.."\'"..", ".."\'"..rhs.."\'"..", "..vim.inspect(options)..")")
vim.keymap.set(mode, lhs, rhs, options)
end
end
인쇄 문의 주석을 한 번 제거하여 키맵을 가져와 구성 파일에 붙여넣을 수 있습니다. 주석 처리하지 않은 상태로 두면 새 neovim 인스턴스를 열 때마다 인쇄될 수 있습니다. 함수는 아래와 같이 호출할 수 있습니다.
key_mapper({
'nnoremap cpp :!c++ % -o %:r && %:r<CR>i',
'nnoremap c, :!gcc % -o %:r && %:r<CR>',
'nnoremap py :!python %<cr>',
'nnoremap go :!go run %<cr>',
'nnoremap sh :!bash %<CR>'
})
Keymapper demonstration GIF
문자열 테이블을 전달합니다. 이 문자열은 vimscript 키맵일 뿐입니다. 이 함수 호출은 키맵을 동등한 루아 맵으로 매핑합니다. 필요에 따라 사용자 지정할 수 있습니다.
추가 참조를 위해 GitHub에서 내dotfiles를 확인할 수 있습니다.
기능 작동 방식
이 함수는 단순히 루아 문자열에서 스크랩한 텍스트입니다. 모드에 대한 문자열의 첫 번째 문자를 추출하고 공백으로 구분된 문자열을 잡고 마지막으로 맵의 lhs 및 rhs 측면을 정렬합니다.
우리는 ipairs 함수의 도움으로 lua에서 테이블을 반복합니다. 이 함수는 테이블의 항목 목록을 반복할 수 있게 해줍니다. gmatch 함수를 사용하여 공백을 구분 기호로 사용하여 문자열을 분할하는 패턴을 찾습니다. 따라서 rhs 및 lhs로 식별되는 별도의 문자열 세트를 가질 수 있습니다. 루아 함수가 문자열로 요구하므로 변수에 문자열로 저장할 수 있습니다.
이러한 변수를 vim.keymap.set 또는 vim.api.nvim_set_keymap 함수에 추가하기만 하면 됩니다. 키의 재귀 매핑을 피하기 위해 기본적으로
{noremap: True}
값을 설정합니다. 이 옵션 매개변수는 다양한 키맵 측면에서 좀 더 역동적이어야 하는 매개변수입니다.이것이 바로 Neovim에서 vimscript 키맵을 lua로 변환하는 방법입니다. 도움이 되었기를 바랍니다. 읽어 주셔서 감사합니다. 해피바이밍 :)
Reference
이 문제에 관하여(단일 기능으로 Vimscript 키맵을 Lua에 매핑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mr_destructive/map-vimscript-keymaps-to-lua-with-a-single-function-21ip텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)