在 nvim lua 中正确转义替换键映射的参数
Correctly escaping arguments of substitute for key mapping in nvim lua
我在 nvim 中创建了一个键映射来交换括号中 C 相等比较的左右两侧。它在 nvim 命令提示符下的运行就像一个魅力。
:nnoremap <F3> ci(:let @r=substitute(@*, '\(.*\) == \(.*\)', ' == ', '')<CR><C-r>r<ESC>
现在我想把它放入我的 lua 配置中
vim.api.nvim_set_keymap("n", "<F3>", "ci(:let @r=substitute(@*, '\(.*\) == \(.*\)', ' == ', '')<CR><C-r>r<ESC>", { noremap = true, silent = true })
并得到一个错误
invalid escape sequence near '"ci(:let @r=substitute(@*, '
我尝试了几件事,但这纯粹是猜测。
那么正确的lua配置代码是什么?
作为旁注:我如何调试错误消息以自行解决?
您不能在 Lua:
中转义括号
$ lua
Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio
> "\("
stdin:1: invalid escape sequence near '"\('
删除反斜杠(或者如果你想在那里使用反斜杠,请将其转义)以修复此语法错误。
没有反斜杠:"ci(:let @r=substitute(@*, '(.*) == (.*)', '2 == 1', '')<CR><C-r>r<ESC>"
不再触发语法错误。
我在 nvim 中创建了一个键映射来交换括号中 C 相等比较的左右两侧。它在 nvim 命令提示符下的运行就像一个魅力。
:nnoremap <F3> ci(:let @r=substitute(@*, '\(.*\) == \(.*\)', ' == ', '')<CR><C-r>r<ESC>
现在我想把它放入我的 lua 配置中
vim.api.nvim_set_keymap("n", "<F3>", "ci(:let @r=substitute(@*, '\(.*\) == \(.*\)', ' == ', '')<CR><C-r>r<ESC>", { noremap = true, silent = true })
并得到一个错误
invalid escape sequence near '"ci(:let @r=substitute(@*, '
我尝试了几件事,但这纯粹是猜测。 那么正确的lua配置代码是什么?
作为旁注:我如何调试错误消息以自行解决?
您不能在 Lua:
中转义括号$ lua
Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio
> "\("
stdin:1: invalid escape sequence near '"\('
删除反斜杠(或者如果你想在那里使用反斜杠,请将其转义)以修复此语法错误。
没有反斜杠:"ci(:let @r=substitute(@*, '(.*) == (.*)', '2 == 1', '')<CR><C-r>r<ESC>"
不再触发语法错误。